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.
What events does the wallet publish?
The Business Wallet publishes domain events covering wallet creation, identifier creation, credential issuance and revocation, credential receipt, presentation verification, public profile updates, and the audit trail. Each event carries a stable type ending in .v1 and a public JSON Schema link. No event ever carries a credential document or the subject claims inside it; most carry business identifiers only, and the ones that carry personal data — contact details on wallet.created.v1 and publicprofile.updated.v1, user activity on audit.recorded.v1 — say so in their own section below.
| 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} |
com.credenco.businesswallet.audit.recorded.v1 | An audit record is written to the Business Wallet history log: a credential offer received, accepted or deleted, or a presentation request received or accepted. Carries audit metadata only — the record's free-form evidence blob is never included. Audits of integration-channel administration itself (category INTEGRATION) are not emitted, so the delivery pipeline cannot feed itself. One delivery per audited action, so on a holder-side wallet this is the busiest event in the catalog. | 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
com.credenco.businesswallet.audit.recorded.v1
Trigger. Fired whenever an audit record is written to the Business Wallet history log - the same trail the wallet UI shows under a wallet's history. Subscribe a channel to it to stream that trail into a SIEM or compliance system.
The wallet writes an audit record for exactly these actions, so this is the full set of category / action pairs the event can carry today:
category | action | Written when |
|---|---|---|
CREDENTIAL | OFFER_RECEIVED | A credential offer is received from an issuer. |
CREDENTIAL | OFFER_ACCEPTED | An offered credential is accepted and stored. |
CREDENTIAL | DELETED | A stored credential is deleted. |
PRESENTATION | OFFER_RECEIVED | A presentation request is received from a verifier. |
PRESENTATION | OFFER_ACCEPTED | A presentation request is accepted and the presentation is sent. |
That is one delivery per audited action, which on a holder-side wallet makes this the busiest event in the catalog. Both category and action are open sets - new values may be introduced within v1, so do not reject unknown ones.
Note that this is the holder-side audit trail. Issuer-side activity such as issuing or revoking a credential does not write a history record, and therefore does not produce this event; use com.credenco.businesswallet.credential.issued.v1 and com.credenco.businesswallet.credential.revoked.v1 for those.
Two classes of audit record are deliberately not emitted:
- Records in the
INTEGRATIONcategory, which audit the integration pipeline's own actions (channel and delivery administration - theCHANNEL_*andDELIVERY_*actions). Emitting them would let the pipeline feed itself: on a channel subscribed to*with a dead endpoint, dismissing a failed delivery would enqueue a fresh delivery that fails in turn, and the failure queue could never be drained. Those records stay visible in the wallet's own history log. - Records that are not attributable to a wallet, because
walletExternalKeyis the partition and routing key, so there is no channel to route them to.
evidence is not in the contract. The underlying history record's free-form evidence blob - which holds credential subject claims and full OID4VP authorization requests - is deliberately not part of this event and never leaves the wallet over a channel. It stays retrievable through the authenticated history API. Should a consumer ever need it, that would be a new .v2 type with an explicit per-channel opt-in, never a silent addition to v1.
What the event does carry is a behavioural record of a named user. userName plus action plus eventDate says who did what and when. Other events in this catalog already carry personal data - wallet.created.v1 carries createdBy, email and phoneNumber - but this is the first one that describes user activity, and it fires continuously rather than at setup time.
An existing channel can start receiving it without anyone opting in. A channel whose filter is * (or a matching wildcard) matches every type in the catalog, so it will pick this event up as soon as the wallet is upgraded - see Versioning. Before rolling this out, review your existing channels and pin explicit event types on any channel that should not receive the audit trail.
Channel export is not gated on the audit-trail read permission. Reading history through the wallet API requires WALLET_AUDIT_TRAIL_READ. Configuring a channel requires WALLET_INTEGRATION_CHANNEL_CRUD. Those are different permissions, so someone who can manage channels can route the audit trail to an endpoint they control without being able to read it in the UI. Treat channel-management rights on a wallet as equivalent to audit-trail read access.
Subject. wallets/{walletExternalKey}
Data fields.
| Field | Type | Description |
|---|---|---|
walletExternalKey | string (UUID) | External identifier of the wallet the audited action belongs to. |
userName | string | null | The wallet user recorded on the audit entry. Null when the record could not be attributed to a user. |
category | string | The audited area - see the table above for the values in use. INTEGRATION never appears here. Open set. |
action | string | The audited action - see the table above. The CHANNEL_* and DELIVERY_* actions exist in the wallet but only ever on INTEGRATION records, so they never reach this event. Open set. |
party | string | null | The counterparty the action concerned - the issuer URL for a credential offer, the verifier for a presentation request. |
credentialUuids | array of string | The credentials the audited action touched. Empty when the action is not credential-scoped. These are the id claims of the credential documents, not the credentialExternalKey / credentialUuid values the other events in this catalog use, so do not expect them to join against those. |
eventDate | string (ISO-8601 date-time) | When the action was recorded. Carries no UTC offset - it is the wallet server's local time. Use the envelope's time attribute when you need an unambiguous instant. |
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.audit.recorded.v1
ce-source: /credenco/wallets
ce-id: 9b2c1d0e-5a4f-4c3b-8d7e-6f5a4b3c2d1e
ce-time: 2026-07-10T09:42:17.812Z
ce-subject: wallets/3f2504e0-4f89-41d3-9a0c-0305e82c3301
ce-dataschema: https://wallet.acc.credenco.com/api/public/schemas/integration/audit-recorded/v1.json
ce-datacontenttype: application/json
ce-walletexternalkey: 3f2504e0-4f89-41d3-9a0c-0305e82c3301
ce-correlationid: 5b1e2dca-6c3a-4b9b-9f0d-7c12da3a1b88
X-Credenco-Signature: t=1752140537,v1=2b3c4d5e…
{
"walletExternalKey": "3f2504e0-4f89-41d3-9a0c-0305e82c3301",
"userName": "j.jansen",
"category": "CREDENTIAL",
"action": "OFFER_ACCEPTED",
"party": "https://issuer.acme-healthcare.example",
"credentialUuids": ["urn:uuid:11111111-1111-1111-1111-111111111111"],
"eventDate": "2026-07-10T09:42:17.812"
}
JSON Schema. https://wallet.acc.credenco.com/api/public/schemas/integration/audit-recorded/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. A channel whose event filters name specific types is never auto-subscribed to a new one. A channel configured over the API with a wildcard pattern is:
*matches every type in the catalog, and a segment wildcard such ascom.credenco.businesswallet.credential.*matches any futurecredentialevent. If you need a predictable set of deliveries, pin the types you want instead of relying on a wildcard.
Pin the schema you tested against in your receiver code by storing the dataschema attribute alongside any persisted event.