Skip to main content
European CommissionEBSI European Blockchain

Verifiable Credential Extensions

Last updated on

The revocable VC must include a credentialStatus property containing the defaults from the chosen revocation format. Next to the credential's own schema, a second schema should be added to the credentialSchema property. The extra schema allows the validation of the properties used in the credentialStatus.

  ...
"credentialStatus": {
...status_entry_specific_content
}
"credentialSchema": [
{
"id": "https://api-pilot.ebsi.eu/trusted-schemas-registry/v3/schemas/[ORIGINAL_VC_SCHEMA]",
"type": "FullJsonSchemaValidator2021"
},
{
"id": "https://api-pilot.ebsi.eu/trusted-schemas-registry/v3/schemas/[STATUS_ENTRY_SCHEMA]",
"type": "FullJsonSchemaValidator2021"
}
]

StatusList2021Entry

Property of credentialStatusStatusList2021
idIdentifier for the status information
typeMust be "StatusList2021Entry"
statusPurposeMust be revocation or suspension
statusListIndexInteger expressed as a string. The zero-based index value identifies the bit position of the status
statusListCredentialURL referencing the StatusList2021Credential
StatusList2021Entry - Example
{
"@context": ["https://www.w3.org/2018/credentials/v1"],
"id": "urn:uuid:003a1dd8-a5d2-42ef-8182-e921c0a9e5av",
"type": ["VerifiableCredential", "VerifiableAttestation"],
"issuer": "did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ",
"credentialSubject": {
"id": "did:ebsi:00001235"
},
"credentialStatus": {
"id": "did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ/credentials/statuses/5#129430"
"type": "StatusList2021Entry",
"statusPurpose": "revocation",
"statusListIndex": "129430",
"statusListCredential": "https://api-pilot.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ/proxies/6cc5fcc621d8098977d378ec7bf63f9ad0b204d56bb604f75bc9290e7033ac84/credentials/status/5"
}
}

CRLBloomFilter2023Entry and DynamicSLBloomFilter2023Entry

Property of credentialStatusCRLDynamic SL
idIdentifier for the status information.Identifier for the status information.
typeMUST be "CRLBloomFilter2023Entry"MUST be "DynamicSLBloomFilter2023Entry"
purposeMUST be revocation or suspensionMUST be revocation or suspension
indexDefines the VC revocation id.

base64 encoded SHA256 hash of the UTF- 8 encoded vc.id
Defines the VC revocation id.

base64 encoded SHA256 hash of the UTF-8 encoded vc.id
credentialURL referencing the CRLBloomFilter2023CredentialURL referencing the DynamicSLBloomFilter2023Credential
CRLBloomFilter2023Entry - Example
{
"@context": ["https://www.w3.org/2018/credentials/v1"],
"id": "urn:uuid:003a1dd8-a5d2-42ef-8182-e921c0a9e5av",
"type": ["VerifiableCredential", "VerifiableAttestation"],
"issuer": "did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ",
"credentialSubject": {
"id": "did:ebsi:00001235"
},
"credentialStatus": {
"id": "did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ/credentials/statuses/6"
"type": "CRLBloomFilter2023Entry",
"purpose": "revocation",
"index": "YjM0YjAxYzEyZTQ3NjNiMmUzMzNmYjY5OTRmN2RmMTQxMWIzNDQzNWMyMjY0NzNiNTYyYjBjN2Y1NGVhODUwNCAgLQo=",
"credential": "https://api-pilot.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ/proxies/6cc5fcc621d8098977d378ec7bf63f9ad0b204d56bb604f75bc9290e7033ac84/credentials/status/6"
}
}
DynamicSLBloomFilter2023Entry - Example
{
"@context": ["https://www.w3.org/2018/credentials/v1"],
"id": "urn:uuid:003a1dd8-a5d2-42ef-8182-e921c0a9e5av",
"type": ["VerifiableCredential", "VerifiableAttestation"],
"issuer": "did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ",
"credentialSubject": {
"id": "did:ebsi:00001235"
},
"credentialStatus": {
"id": "did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ/credentials/statuses/7"
"type": "DynamicSLBloomFilter2023Entry",
"purpose": "revocation",
"index": "YjM0YjAxYzEyZTQ3NjNiMmUzMzNmYjY5OTRmN2RmMTQxMWIzNDQzNWMyMjY0NzNiNTYyYjBjN2Y1NGVhODUwNCAgLQo=",
"credential": "https://api-pilot.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ/proxies/6cc5fcc621d8098977d378ec7bf63f9ad0b204d56bb604f75bc9290e7033ac84/credentials/status/7"
}
}

CRLPlain2023Entry

Property of credentialStatusDescription
idIdentifier for the status information
typeMust be "CRLPlain2023Entry"
purposeMUST be revocation or suspension
credentialURL referencing the CRLPlain2023Credential
CredentialStatus - CRLPlain2023Entry Example
{
"@context": ["https://www.w3.org/2018/credentials/v1"],
"id": "urn:uuid:003a1dd8-a5d2-42ef-8182-e921c0a9e5av",
"type": ["VerifiableCredential", "VerifiableAttestation"],
"issuer": "did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ",
"credentialSubject": {
"id": "did:ebsi:00001235"
},
"credentialStatus": {
"id": "did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ/credentials/statuses/7"
"type": "CRLPlain2023Entry",
"purpose": "revocation",
"credential": "https://api-pilot.ebsi.eu/trusted-issuers-registry/v5/issuers/did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ/proxies/6cc5fcc621d8098977d378ec7bf63f9ad0b204d56bb604f75bc9290e7033ac84/credentials/status/8"
}
}

BitstringStatusListEntry

Property of credentialStatusBitstringStatusListEntry
idIdentifier for the status information
typeMust be "BitstringStatusListEntry"
statusPurposeMust be refresh, revocation, suspension or message
statusListIndexInteger expressed as a string. The zero-based index value identifies the bit position of the status
statusListCredentialURL referencing the BitstringStatusListCredential
statusSizeOptional integer indicating the size of the status entry in bits. If not present, the default size is 1.
statusMessageOptional array which length MUST equal the number of possible status messages indicated by statusSize (e.g., statusMessage array MUST have 2 elements if statusSize has 1 bit, 4 elements if statusSize has 2 bits, 8 elements if statusSize has 3 bits, etc.). statusMessage MAY be present if statusSize is 1, and MUST be present if statusSize is greater than 1.
statusMessage[x].statusString representing the hexadecimal value of the status prefixed with 0x.
statusMessage[x].messageString used by software developers to assist with debugging which SHOULD NOT be displayed to end users.
statusReferenceOptional URL or array of URLs which dereference to material related to the status.
BitstringStatusListEntry - Example
{
"@context": ["https://www.w3.org/2018/credentials/v1"],
"id": "urn:uuid:003a1dd8-a5d2-42ef-8182-e921c0a9e5av",
"type": ["VerifiableCredential", "VerifiableAttestation"],
"issuer": "did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ",
"credentialSubject": {
"id": "did:ebsi:00001235"
},
"credentialStatus": [
{
"id": "ebsi:trusted-issuers-registry:/issuers/did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ/proxies/0x1e15b7e8d430ae8c298a151c9d00fd7b2311d74648c22a336f637551b2545638/credentials/status/123#94567",
"type": "BitstringStatusListEntry",
"statusPurpose": "revocation",
"statusListIndex": "94567",
"statusListCredential": "ebsi:trusted-issuers-registry:/issuers/did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ/proxies/0x1e15b7e8d430ae8c298a151c9d00fd7b2311d74648c22a336f637551b2545638/credentials/status/123"
},
{
"id": "ebsi:trusted-issuers-registry:/issuers/did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ/proxies/0x1e15b7e8d430ae8c298a151c9d00fd7b2311d74648c22a336f637551b2545638/credentials/status/456#492847",
"type": "BitstringStatusListEntry",
"statusPurpose": "message",
"statusListIndex": "492847",
"statusSize": 2,
"statusListCredential": "ebsi:trusted-issuers-registry:/issuers/did:ebsi:zyrMG8T9xYbNoSwyQa4SGMJ/proxies/0x1e15b7e8d430ae8c298a151c9d00fd7b2311d74648c22a336f637551b2545638/credentials/status/456",
"statusMessage": [
{ "status": "0x0", "message": "pending_review" },
{ "status": "0x1", "message": "accepted" },
{ "status": "0x2", "message": "rejected" },
{ "message": "other", "status": "0x3" }
],
"statusReference": "https://example.org/status-dictionary/"
}
]
}