Event Catalog
The Business Wallet emits a small, deliberately focused set of domain events to integration channels. Every event:
- Is wrapped in a CloudEvents 1.0 envelope.
- Has a
typeending in.v<major>— backwards-compatible additions reuse the same major version, breaking changes mint a new one. - Has a public JSON Schema at
${WALLET_BASE_URL}/api/public/schemas/integration/<slug>/v1.json(no authentication required) which is also pinned in the envelope'sdataschemaattribute.
Catalog at a glance
| Event type | Trigger | subject pattern |
|---|---|---|
com.credenco.businesswallet.wallet.created.v1 | A Business Wallet is created. | wallets/{walletExternalKey} |
com.credenco.businesswallet.identifier.created.v1 | A wallet identifier (DID, X509, or JWK) is created. | wallets/{walletExternalKey}/identifiers/{identifierExternalKey} |
com.credenco.businesswallet.credential.issued.v1 | An issuer-side credential is issued and stored by the Business Wallet. | wallets/{walletExternalKey}/credentials/{credentialUuid} |
com.credenco.businesswallet.credential.revoked.v1 | An issued credential is revoked. | wallets/{walletExternalKey}/credentials/{credentialUuid} |
com.credenco.businesswallet.credential.received.v1 | A holder-side credential is received and stored by the Business Wallet. | wallets/{walletExternalKey}/credentials/{credentialExternalKey} |
com.credenco.businesswallet.presentation.verified.v1 | A verify session reaches the verified state. | wallets/{walletExternalKey}/verify-sessions/{sessionKey} |
com.credenco.businesswallet.publicprofile.updated.v1 | A Business Wallet's public profile is updated. | wallets/{walletExternalKey} |
All event types follow the naming convention com.credenco.businesswallet.<aggregate>.<verb>.v<major>. The trailing .v<major> segment is the major version. Backward-compatible additions (new optional fields) ship as the same .v1 type; breaking changes ship as a new type (.v2) so existing consumers keep working.
JSON Schemas are served at ${WALLET_BASE_URL}/api/public/schemas/integration/<slug>/v1.json (no authentication required) and are pinned per-event via the dataschema envelope attribute.
com.credenco.businesswallet.wallet.created.v1
Trigger. Fired exactly once when a Business Wallet is created — either via the UI, the public API, or onboarding. The event is published atomically with the wallet itself, so consumers will never observe a wallet that the wallet itself does not yet know about.
Subject. wallets/{walletExternalKey}
Data fields.
| Field | Type | Description |
|---|---|---|
walletExternalKey | string (UUID) | Stable external identifier of the wallet. Match this against your own records. |
displayName | string | Human-readable name shown in the wallet UI. |
email | string | null | Primary contact email, if provided during creation. |
website | string | null | Primary website URL, if provided. |
phoneNumber | string | null | Primary phone number, if provided. |
address | object | null | Postal address with street, postalCode, city, country. Any inner field may be null. |
createdAt | string (RFC 3339) | UTC timestamp of wallet creation. |
createdBy | string | Subject (sub) of the principal that created the wallet — a human user ID or an OAuth2 client ID. |
Sample envelope (binary CloudEvents over HTTP).
POST /webhooks/credenco HTTP/1.1
Host: receiver.example.com
Content-Type: application/json
ce-specversion: 1.0
ce-type: com.credenco.businesswallet.wallet.created.v1
ce-source: /credenco/wallets
ce-id: 9c7d6b1f-1d17-4c2c-8a5d-2e0f6b1a4f10
ce-time: 2026-05-01T09:42:17.812Z
ce-subject: wallets/3f2504e0-4f89-41d3-9a0c-0305e82c3301
ce-dataschema: https://wallet.acc.credenco.com/api/public/schemas/integration/wallet-created/v1.json
ce-datacontenttype: application/json
ce-walletexternalkey: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
ce-correlationid: 5b1e2dca-6c3a-4b9b-9f0d-7c12da3a1b88
X-Credenco-Signature: t=1746094937,v1=2c1f8e30…
{
"walletExternalKey": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"displayName": "Acme Healthcare B.V.",
"email": "ops@acme-healthcare.example",
"website": "https://acme-healthcare.example",
"phoneNumber": "+31 20 555 0100",
"address": {
"street": "Tolnasingel 3",
"postalCode": "2411 PV",
"city": "Bodegraven",
"country": "NL"
},
"createdAt": "2026-05-01T09:42:17.812Z",
"createdBy": "auth0|admin@acme-healthcare.example"
}
JSON Schema. https://wallet.acc.credenco.com/api/public/schemas/integration/wallet-created/v1.json
com.credenco.businesswallet.identifier.created.v1
Trigger. Fired exactly once when a wallet identifier (DID, X509 certificate, or JWK) is created. Like wallet.created.v1, the event is published atomically with the underlying change so it is never lost.
Subject. wallets/{walletExternalKey}/identifiers/{identifierExternalKey}
Data fields.
| Field | Type | Description |
|---|---|---|
walletExternalKey | string (UUID) | External identifier of the owning wallet. |
identifierExternalKey | string (UUID) | Stable external identifier of the identifier itself. |
identifierType | enum | One of DID, X509, JWK. |
identifier | string | The actual identifier value — a DID URI, an X509 subject, or a JWK thumbprint. |
displayName | string | Human-readable label set by the operator. |
didType | string | null | Populated only when identifierType = DID (e.g. did:web, did:key, did:ebsi). null for X509 and JWK. |
didEnvironment | string | null | Populated only when identifierType = DID and the DID method has environments (e.g. pilot, production for did:ebsi). null otherwise. |
createdAt | string (RFC 3339) | UTC timestamp of identifier creation. |
createdBy | string | Subject of the principal that created the identifier. |
Sample envelope (binary CloudEvents over HTTP).
POST /webhooks/credenco HTTP/1.1
Host: receiver.example.com
Content-Type: application/json
ce-specversion: 1.0
ce-type: com.credenco.businesswallet.identifier.created.v1
ce-source: /credenco/wallets
ce-id: 7e2b1a86-9c1e-4d2e-b6a4-1f8db4a90f22
ce-time: 2026-05-01T09:43:02.401Z
ce-subject: wallets/3f2504e0-4f89-41d3-9a0c-0305e82c3301/identifiers/c4a4e34b-1d6d-4b9a-9e6f-3a7d6f8b1e02
ce-dataschema: https://wallet.acc.credenco.com/api/public/schemas/integration/identifier-created/v1.json
ce-datacontenttype: application/json
ce-walletexternalkey: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
ce-correlationid: 5b1e2dca-6c3a-4b9b-9f0d-7c12da3a1b88
X-Credenco-Signature: t=1746094982,v1=8d4a91c2…
{
"walletExternalKey": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"identifierExternalKey": "c4a4e34b-1d6d-4b9a-9e6f-3a7d6f8b1e02",
"identifierType": "DID",
"identifier": "did:web:acme-healthcare.example",
"displayName": "Primary issuer DID",
"didType": "did:web",
"didEnvironment": null,
"createdAt": "2026-05-01T09:43:02.401Z",
"createdBy": "auth0|admin@acme-healthcare.example"
}
JSON Schema. https://wallet.acc.credenco.com/api/public/schemas/integration/identifier-created/v1.json
com.credenco.businesswallet.credential.issued.v1
Trigger. Fired when an issuer-side credential is issued and stored by the Business Wallet. The event is published atomically with the issuance so consumers never observe an issued credential the wallet does not yet know about. The payload carries external and business identifiers only, never the credential document or any subject claims.
Subject. wallets/{walletExternalKey}/credentials/{credentialUuid}
Data fields.
| Field | Type | Description |
|---|---|---|
walletExternalKey | string (UUID) | External identifier of the owning wallet. |
credentialUuid | string | Stable business identifier of the issued credential. |
credentialFormat | string | Credential format, one of JWT, SD_JWT, LDP, STATUSLIST, MDOC. |
credentialConfigurationId | string | null | Issuer credential-configuration identifier the credential was issued from, if known. |
issuanceDate | string (ISO-8601 date-time) | Timestamp the credential was issued. |
revocationUuid | string | null | Revocation list entry key, present when the credential is revocable. |
Sample envelope (binary CloudEvents over HTTP).
POST /webhooks/credenco HTTP/1.1
Host: receiver.example.com
Content-Type: application/json
ce-specversion: 1.0
ce-type: com.credenco.businesswallet.credential.issued.v1
ce-source: /credenco/wallets
ce-id: 0b8c1d2e-3f4a-4b5c-9d6e-7a8b9c0d1e2f
ce-time: 2026-05-04T09:42:17.812Z
ce-subject: wallets/3f2504e0-4f89-41d3-9a0c-0305e82c3301/credentials/11111111-1111-1111-1111-111111111111
ce-dataschema: https://wallet.acc.credenco.com/api/public/schemas/integration/credential-issued/v1.json
ce-datacontenttype: application/json
ce-walletexternalkey: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
ce-correlationid: 5b1e2dca-6c3a-4b9b-9f0d-7c12da3a1b88
X-Credenco-Signature: t=1746351737,v1=9a1b2c3d…
{
"walletExternalKey": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"credentialUuid": "11111111-1111-1111-1111-111111111111",
"credentialFormat": "SD_JWT",
"credentialConfigurationId": "DiplomaCredential",
"issuanceDate": "2026-05-04T09:42:17.812",
"revocationUuid": "22222222-2222-2222-2222-222222222222"
}
JSON Schema. https://wallet.acc.credenco.com/api/public/schemas/integration/credential-issued/v1.json
com.credenco.businesswallet.credential.revoked.v1
Trigger. Fired when an issued credential is revoked. The payload carries external and business identifiers only, never the credential document.
Subject. wallets/{walletExternalKey}/credentials/{credentialUuid}
Data fields.
| Field | Type | Description |
|---|---|---|
walletExternalKey | string (UUID) | External identifier of the owning wallet. |
credentialUuid | string | Stable business identifier of the revoked credential. |
credentialFormat | string | Credential format, one of JWT, SD_JWT, LDP, STATUSLIST, MDOC. |
status | string | Credential status after revocation, one of VALID, INVALID, EXPIRED. A revoked credential is INVALID. |
issuanceDate | string (ISO-8601 date-time) | Timestamp the credential was originally issued. |
revocationUuid | string | null | Revocation list entry key. |
Sample envelope (binary CloudEvents over HTTP).
POST /webhooks/credenco HTTP/1.1
Host: receiver.example.com
Content-Type: application/json
ce-specversion: 1.0
ce-type: com.credenco.businesswallet.credential.revoked.v1
ce-source: /credenco/wallets
ce-id: 1c9d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f
ce-time: 2026-05-06T11:08:44.219Z
ce-subject: wallets/3f2504e0-4f89-41d3-9a0c-0305e82c3301/credentials/11111111-1111-1111-1111-111111111111
ce-dataschema: https://wallet.acc.credenco.com/api/public/schemas/integration/credential-revoked/v1.json
ce-datacontenttype: application/json
ce-walletexternalkey: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
ce-correlationid: 5b1e2dca-6c3a-4b9b-9f0d-7c12da3a1b88
X-Credenco-Signature: t=1746529724,v1=4d5e6f7a…
{
"walletExternalKey": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"credentialUuid": "11111111-1111-1111-1111-111111111111",
"credentialFormat": "SD_JWT",
"status": "INVALID",
"issuanceDate": "2026-05-04T09:42:17.812",
"revocationUuid": "22222222-2222-2222-2222-222222222222"
}
JSON Schema. https://wallet.acc.credenco.com/api/public/schemas/integration/credential-revoked/v1.json
com.credenco.businesswallet.credential.received.v1
Trigger. Fired when a holder-side credential is received and stored by the Business Wallet. The payload carries external identifiers and non-sensitive metadata only, never the credential document or any subject claims.
Subject. wallets/{walletExternalKey}/credentials/{credentialExternalKey}
Data fields.
| Field | Type | Description |
|---|---|---|
walletExternalKey | string (UUID) | External identifier of the owning wallet. |
credentialExternalKey | string (UUID) | Stable external identifier of the received credential. |
credentialType | string | Credential type of the received credential. |
credentialFormat | string | Credential format, one of JWT, SD_JWT, LDP, STATUSLIST, MDOC. |
issuerDid | string | null | DID of the credential issuer, when available. |
issuanceDate | string (ISO-8601 date-time) | null | Issuer-asserted issuance timestamp, when present in the credential. |
createdAt | string (ISO-8601 date-time) | Timestamp the credential was stored in the wallet. |
Sample envelope (binary CloudEvents over HTTP).
POST /webhooks/credenco HTTP/1.1
Host: receiver.example.com
Content-Type: application/json
ce-specversion: 1.0
ce-type: com.credenco.businesswallet.credential.received.v1
ce-source: /credenco/wallets
ce-id: 2d0e3f4a-5b6c-4d7e-9f8a-0b1c2d3e4f5a
ce-time: 2026-05-04T09:43:01.004Z
ce-subject: wallets/3f2504e0-4f89-41d3-9a0c-0305e82c3301/credentials/33333333-3333-3333-3333-333333333333
ce-dataschema: https://wallet.acc.credenco.com/api/public/schemas/integration/credential-received/v1.json
ce-datacontenttype: application/json
ce-walletexternalkey: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
ce-correlationid: 5b1e2dca-6c3a-4b9b-9f0d-7c12da3a1b88
X-Credenco-Signature: t=1746351781,v1=7a8b9c0d…
{
"walletExternalKey": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"credentialExternalKey": "33333333-3333-3333-3333-333333333333",
"credentialType": "DiplomaCredential",
"credentialFormat": "SD_JWT",
"issuerDid": "did:web:acme-healthcare.example",
"issuanceDate": "2026-05-04T09:42:17.812",
"createdAt": "2026-05-04T09:43:01.004"
}
JSON Schema. https://wallet.acc.credenco.com/api/public/schemas/integration/credential-received/v1.json
com.credenco.businesswallet.presentation.verified.v1
Trigger. Fired when a verify session reaches the verified state. A verify session reaches the verified state at most once, so this event is delivered once per session. The payload carries the verify-session business key, the verdict, and the presented credential types only, never the VP tokens or the presented credential bodies.
Subject. wallets/{walletExternalKey}/verify-sessions/{sessionKey}
Data fields.
| Field | Type | Description |
|---|---|---|
walletExternalKey | string (UUID) | External identifier of the verifying wallet. |
sessionKey | string | Verify-session business key (the external correlation id). |
verified | boolean | Verification verdict. |
presentedCredentialTypes | array of string | Credential types presented in the session. May be empty. |
verifiedAt | string (ISO-8601 date-time) | Timestamp the session reached the verified state. |
Sample envelope (binary CloudEvents over HTTP).
POST /webhooks/credenco HTTP/1.1
Host: receiver.example.com
Content-Type: application/json
ce-specversion: 1.0
ce-type: com.credenco.businesswallet.presentation.verified.v1
ce-source: /credenco/wallets
ce-id: 3e1f4a5b-6c7d-4e8f-9a0b-1c2d3e4f5a6b
ce-time: 2026-05-04T09:44:12.330Z
ce-subject: wallets/3f2504e0-4f89-41d3-9a0c-0305e82c3301/verify-sessions/44444444-4444-4444-4444-444444444444
ce-dataschema: https://wallet.acc.credenco.com/api/public/schemas/integration/presentation-verified/v1.json
ce-datacontenttype: application/json
ce-walletexternalkey: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
ce-correlationid: 5b1e2dca-6c3a-4b9b-9f0d-7c12da3a1b88
X-Credenco-Signature: t=1746351852,v1=0d1e2f3a…
{
"walletExternalKey": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"sessionKey": "44444444-4444-4444-4444-444444444444",
"verified": true,
"presentedCredentialTypes": ["DiplomaCredential", "IdentityCredential"],
"verifiedAt": "2026-05-04T09:44:12.330"
}
JSON Schema. https://wallet.acc.credenco.com/api/public/schemas/integration/presentation-verified/v1.json
com.credenco.businesswallet.publicprofile.updated.v1
Trigger. Fired whenever a Business Wallet's public profile is updated, through either the full replace (PUT) or the partial update (PATCH) endpoint. Every successful update emits one event carrying a full snapshot of the current public profile plus the last-modified audit fields.
Subject. wallets/{walletExternalKey}
Data fields.
| Field | Type | Description |
|---|---|---|
walletExternalKey | string (UUID) | External identifier of the wallet. |
displayName | string | Public display name. |
logo | string | Logo, as a URL or a data: URI. |
email | string | Public contact email. |
website | string | Public website URL. |
phoneNumber | string | Public contact phone number. |
address | object | Nested street, postalCode, city, country. |
geoLocation | object | Nested latitude, longitude (strings). |
lastModifiedAt | string (ISO-8601 date-time) | Timestamp of this update. |
lastModifiedBy | string | Principal that performed the update. |
Sample envelope (binary CloudEvents over HTTP).
POST /webhooks/credenco HTTP/1.1
Host: receiver.example.com
Content-Type: application/json
ce-specversion: 1.0
ce-type: com.credenco.businesswallet.publicprofile.updated.v1
ce-source: /credenco/wallets
ce-id: 7c9e6679-7425-40de-944b-e07fc1f90ae7
ce-time: 2026-05-04T09:45:03.120Z
ce-subject: wallets/3f2504e0-4f89-41d3-9a0c-0305e82c3301
ce-dataschema: https://wallet.acc.credenco.com/api/public/schemas/integration/public-profile-updated/v1.json
ce-datacontenttype: application/json
ce-walletexternalkey: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
ce-correlationid: 5b1e2dca-6c3a-4b9b-9f0d-7c12da3a1b88
X-Credenco-Signature: t=1746351903,v1=1a2b3c4d…
{
"walletExternalKey": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"displayName": "Acme Healthcare B.V.",
"logo": "https://cdn.credenco.example/logos/acme.png",
"email": "ops@acme-healthcare.example",
"website": "https://acme-healthcare.example",
"phoneNumber": "+31 20 555 0100",
"address": {
"street": "Keizersgracht 123",
"postalCode": "1015 CJ",
"city": "Amsterdam",
"country": "NL"
},
"geoLocation": {
"latitude": "52.3676",
"longitude": "4.9041"
},
"lastModifiedAt": "2026-05-04T09:45:03.120",
"lastModifiedBy": "martijn"
}
JSON Schema. https://wallet.acc.credenco.com/api/public/schemas/integration/public-profile-updated/v1.json
Versioning
The trailing .v1 segment in every event type is the major version. We follow these rules:
- Adding a new optional field to the
datapayload is backward compatible and ships as the samev1type. Build your receivers so that unknown fields are ignored. - Removing a field, renaming a field, or changing a field's type is breaking and ships as a new major version (
v2). The oldv1type is kept emitting in parallel for at least one major release cycle so you have time to migrate. - New event types are added freely; existing receivers are never auto-subscribed to them.
Pin the schema you tested against in your receiver code by storing the dataschema attribute alongside any persisted event.