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 credentialStatus | StatusList2021 |
|---|---|
id | Identifier for the status information |
type | Must be "StatusList2021Entry" |
statusPurpose | Must be revocation or suspension |
statusListIndex | Integer expressed as a string. The zero-based index value identifies the bit position of the status |
statusListCredential | URL 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 credentialStatus | CRL | Dynamic SL |
|---|---|---|
id | Identifier for the status information. | Identifier for the status information. |
type | MUST be "CRLBloomFilter2023Entry" | MUST be "DynamicSLBloomFilter2023Entry" |
purpose | MUST be revocation or suspension | MUST be revocation or suspension |
index | Defines 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 |
credential | URL referencing the CRLBloomFilter2023Credential | URL 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 credentialStatus | Description |
|---|---|
id | Identifier for the status information |
type | Must be "CRLPlain2023Entry" |
purpose | MUST be revocation or suspension |
credential | URL 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 credentialStatus | BitstringStatusListEntry |
|---|---|
id | Identifier for the status information |
type | Must be "BitstringStatusListEntry" |
statusPurpose | Must be refresh, revocation, suspension or message |
statusListIndex | Integer expressed as a string. The zero-based index value identifies the bit position of the status |
statusListCredential | URL referencing the BitstringStatusListCredential |
statusSize | Optional integer indicating the size of the status entry in bits. If not present, the default size is 1. |
statusMessage | Optional 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].status | String representing the hexadecimal value of the status prefixed with 0x. |
statusMessage[x].message | String used by software developers to assist with debugging which SHOULD NOT be displayed to end users. |
statusReference | Optional 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/"
}
]
}