This document provides detailed information about the workload identity system's API endpoints, request/response formats, and authentication requirements.
# Supported Authentication Methods
authentication:
methods:
- name: "mTLS"
description: "Mutual TLS authentication"
required: true
- name: "JWT"
description: "JSON Web Token authentication"
required: false# Example Authentication Headers
Authorization: Bearer <jwt_token>
X-SPIFFE-ID: spiffe://example.org/workload/123POST /api/v1/identities
Content-Type: application/json
Authorization: Bearer <jwt_token>
{
"workload_id": "workload-123",
"type": "kubernetes",
"metadata": {
"namespace": "default",
"service_account": "default"
}
}Response:
{
"identity_id": "id-123",
"spiffe_id": "spiffe://example.org/workload/123",
"status": "active",
"created_at": "2024-01-01T00:00:00Z",
"expires_at": "2024-01-02T00:00:00Z"
}GET /api/v1/identities/{identity_id}
Authorization: Bearer <jwt_token>Response:
{
"identity_id": "id-123",
"spiffe_id": "spiffe://example.org/workload/123",
"status": "active",
"created_at": "2024-01-01T00:00:00Z",
"expires_at": "2024-01-02T00:00:00Z",
"metadata": {
"namespace": "default",
"service_account": "default"
}
}DELETE /api/v1/identities/{identity_id}
Authorization: Bearer <jwt_token>Response:
{
"identity_id": "id-123",
"status": "revoked",
"revoked_at": "2024-01-01T12:00:00Z",
"reason": "manual_revocation"
}POST /api/v1/certificates
Content-Type: application/json
Authorization: Bearer <jwt_token>
{
"identity_id": "id-123",
"key_type": "RSA",
"key_size": 2048,
"validity_period": "24h"
}Response:
{
"certificate_id": "cert-123",
"identity_id": "id-123",
"certificate": "-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----",
"valid_from": "2024-01-01T00:00:00Z",
"valid_to": "2024-01-02T00:00:00Z"
}GET /api/v1/certificates/{certificate_id}
Authorization: Bearer <jwt_token>Response:
{
"certificate_id": "cert-123",
"identity_id": "id-123",
"status": "valid",
"valid_from": "2024-01-01T00:00:00Z",
"valid_to": "2024-01-02T00:00:00Z",
"subject": "CN=workload-123",
"issuer": "CN=SPIRE CA"
}DELETE /api/v1/certificates/{certificate_id}
Authorization: Bearer <jwt_token>
{
"reason": "compromise"
}Response:
{
"certificate_id": "cert-123",
"status": "revoked",
"revoked_at": "2024-01-01T12:00:00Z",
"reason": "compromise"
}POST /api/v1/policies
Content-Type: application/json
Authorization: Bearer <jwt_token>
{
"name": "workload-policy",
"description": "Policy for workload access",
"rules": [
{
"effect": "allow",
"resources": ["api:read"],
"conditions": {
"namespace": "default",
"service_account": "default"
}
}
]
}Response:
{
"policy_id": "policy-123",
"name": "workload-policy",
"version": 1,
"created_at": "2024-01-01T00:00:00Z",
"status": "active"
}POST /api/v1/policies/evaluate
Content-Type: application/json
Authorization: Bearer <jwt_token>
{
"identity_id": "id-123",
"resource": "api:read",
"action": "get"
}Response:
{
"allowed": true,
"policy_id": "policy-123",
"reason": "matched_rule",
"evaluated_at": "2024-01-01T00:00:00Z"
}PUT /api/v1/policies/{policy_id}
Content-Type: application/json
Authorization: Bearer <jwt_token>
{
"name": "workload-policy",
"description": "Updated policy for workload access",
"rules": [
{
"effect": "allow",
"resources": ["api:read", "api:write"],
"conditions": {
"namespace": "default",
"service_account": "default"
}
}
]
}Response:
{
"policy_id": "policy-123",
"name": "workload-policy",
"version": 2,
"updated_at": "2024-01-01T12:00:00Z",
"status": "active"
}{
"error": {
"code": "invalid_request",
"message": "Invalid request parameters",
"details": {
"field": "workload_id",
"reason": "required"
}
}
}error_codes:
- code: "invalid_request"
status: 400
description: "Invalid request parameters"
- code: "unauthorized"
status: 401
description: "Authentication required"
- code: "forbidden"
status: 403
description: "Permission denied"
- code: "not_found"
status: 404
description: "Resource not found"
- code: "conflict"
status: 409
description: "Resource conflict"
- code: "internal_error"
status: 500
description: "Internal server error"rate_limits:
default:
requests_per_second: 100
burst: 200
authentication:
requests_per_second: 10
burst: 20This API reference provides comprehensive documentation for the workload identity system. For additional information, refer to: