ID Gateway Verifiable Credentials API (0.1.0)

Download OpenAPI specification:Download

OpenAPI specification for issuing and verifying verifiable credentials (VCs).

The VC API issues AgeOver18 credentials after registry verification and consent. Issued credentials can be verified by ID without re-checking registries.

Credential Lifecycle (MVP)

Issued credentials are permanent and immutable in the current implementation:

  • No expiration: Credentials remain valid indefinitely
  • No revocation: Once issued, credentials cannot be revoked

Future enhancements (see PRD-004 Section 7):

  • Credential expiry and renewal
  • Revocation registry for invalidating credentials
  • Real cryptographic signatures (JWT/BBS+)

Security

  • All endpoints require valid bearer token (JWT)
  • Consent required: vc_issuance
  • TLS-only transport in production

Issue an AgeOver18 verifiable credential

Issues an AgeOver18 credential after verifying the user's date of birth via the citizen registry. In regulated mode, PII is stripped from claims.

Audit: Emits vc_issued event on success.

Authorizations:
bearerAuth
Request Body schema: application/json
required
type
required
string
Value: "AgeOver18"

Credential type to issue

national_id
required
string [ 6 .. 20 ] characters ^[A-Z0-9]{6,20}$

National identifier to verify

Responses

Request samples

Content type
application/json
{
  • "type": "AgeOver18",
  • "national_id": "123456789"
}

Response samples

Content type
application/json
Example
{
  • "credential_id": "vc_550e8400-e29b-41d4-a716-446655440000",
  • "type": "AgeOver18",
  • "subject": "user_def456",
  • "issuer": "credo",
  • "issued_at": "2025-12-03T10:00:00Z",
  • "claims": {
    }
}

Verify a previously issued credential

Verifies an issued credential by ID and returns its stored content.

Audit: Emits vc_verified event on success.

Authorizations:
bearerAuth
Request Body schema: application/json
required
credential_id
required
string = 39 characters ^vc_[0-9a-fA-F-]{36}$

Credential identifier

Responses

Request samples

Content type
application/json
{
  • "credential_id": "vc_550e8400-e29b-41d4-a716-446655440000"
}

Response samples

Content type
application/json
{
  • "valid": true,
  • "credential_id": "vc_550e8400-e29b-41d4-a716-446655440000",
  • "type": "AgeOver18",
  • "subject": "user_def456",
  • "issued_at": "2025-12-03T10:00:00Z",
  • "claims": {
    }
}