Skip to main content

Overview

Beltic publishes three .well-known endpoints that any verifier — your own service, a counterparty, an offline tool — can fetch without authentication. These are the building blocks of W3C-compliant verifiable credentials: the JWKS exposes the signing keys, the DID document describes the issuer identity, and the status list reports revocations.

/.well-known/jwks.json

Returns the issuer’s JSON Web Key Set: the public keys credentials are signed with. Verifiers fetch this to validate signatures.
  • The kid matches the kid claim in every JWT-VC’s header.
  • V1 publishes a single signing key; multi-key rotation lands in a later phase.
  • Cache-Control is 1 hour. Verifiers should respect it.

/.well-known/did.json

Returns the W3C DID document for did:web:beltic.com. The DID document describes the issuer identity and references the JWKS endpoint.
Use this when integrating with verifiers that resolve issuers via DID rather than direct JWKS fetch — most W3C-conformant verifier libraries do.

/.well-known/status-lists/v1

Returns the Status List 2021 bitstring for the org whose credentials are being verified. The bit at status_list_index is 1 for revoked credentials, 0 for active.
  • encodedList is a base64url-encoded, gzipped byte-aligned bitstring. Decode, gunzip, then check bit status_list_index MSB-first within each byte.
  • Cache-Control is 60 seconds — short enough that revocations propagate quickly, long enough that high-throughput verifiers don’t hammer the endpoint.
  • The org query parameter targets a specific organisation’s bitstring. Each org has its own.

Decoding the Bitstring

When to Use Which

Caching Recommendations

  • JWKS: cache for 1 hour. Re-fetch only on kid mismatch.
  • DID document: cache for 1 hour. Treat it as the same lifetime as JWKS.
  • Status list: cache for 60 seconds. If your application can tolerate longer staleness, increase locally — but understand that revocations won’t propagate faster than your cache TTL.