Thoryn

VCT templates · VCT templates

PID Credential VCT

VCT template for a member-state PID credential. Claim schema for the four eIDAS-mandated identity attributes plus optional address.

Tested against:credentialIssuer: 1.0.0vctRegistry: 1.0.0

vct-templates recipe — shared category architecture: how this pattern composes with Hub, Broker, and the rest of the catalog

Issuer archetype

A member-state national identity authority operating under eIDAS 2.0. The issuer mints PID credentials at population scale; revocation propagates through the EU Trust List.

VCT URL

https://thoryn.org/vct/PIDCredential-v1

Claim schema (JSON Schema)

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "title": "PIDCredential",
  "type": "object",
  "required": ["given_name", "family_name", "date_of_birth", "nationality"],
  "properties": {
    "given_name":     { "type": "string", "minLength": 1, "maxLength": 100 },
    "family_name":    { "type": "string", "minLength": 1, "maxLength": 100 },
    "date_of_birth":  { "type": "string", "format": "date" },
    "nationality":    { "type": "string", "pattern": "^[A-Z]{2}$" },
    "place_of_birth": { "type": "string" },
    "address":        { "type": "object", "properties": {
      "street":      { "type": "string" },
      "postal_code": { "type": "string" },
      "locality":    { "type": "string" },
      "country":     { "type": "string", "pattern": "^[A-Z]{2}$" }
    }},
    "age_over_18": { "type": "boolean" },
    "age_over_21": { "type": "boolean" }
  }
}

Display metadata

{
  "name": "Personal Identity",
  "description": "Government-issued identity credential.",
  "logo": "https://issuer.example/pid-logo.svg",
  "background_color": "#1a2a6e",
  "text_color": "#ffffff",
  "claims": [
    { "path": "given_name",    "label": "Given name" },
    { "path": "family_name",   "label": "Family name" },
    { "path": "date_of_birth", "label": "Date of birth" },
    { "path": "nationality",   "label": "Nationality" }
  ]
}

Sample minted credential

{
  "iss": "did:eidas:nl",
  "sub": "did:key:zQ3sh...",
  "vct": "https://thoryn.org/vct/PIDCredential-v1",
  "iat": 1735000000,
  "exp": 1798072000,
  "given_name": "Jan",
  "family_name": "Jansen",
  "date_of_birth": "1985-03-12",
  "nationality": "NL",
  "age_over_18": true,
  "age_over_21": true,
  "_sd": ["...", "...", "..."]
}

Lifecycle

  • Expiry: 2 years (typical member-state PID rotation)
  • Revocation: status-list driven; revoked on identity-document loss
  • Deferred flow: not needed (issuance is synchronous after national-ID verification)

See also