Data deletion confirmation — attestations sub-resource
Every consent gains an append-only attestations sub-resource. Once a consent reaches a terminal status — Revoked, Expired, or Consumed — the TPP reviews the data it holds under that consent and POSTs an Attestation Event confirming what it did with it. Rejected consents are out of scope: no data was ever shared under them.
The sub-resource is added to all three consent types, each scoped to its own API family:
POST /account-access-consents/{ConsentId}/attestations (scope accounts), POST /payment-consents/{ConsentId}/attestations (scope payments), and POST /insurance-consents/{ConsentId}/attestations (scope insurance).
A payment consent is not empty for this purpose — it carries debtor and creditor details, amounts, references, and any account data the TPP retrieved to set the payment up, so it falls under the same obligation as a data sharing consent.
The event body carries an envelope — AttestationType (today only DataRetentionDeletion), AttestationStatusAppliedDateTime, DataAccessCeasedDateTime, and ConsentRevocationDateTime where the customer revoked at the TPP — plus a DataActions array with one entry per category of data held. Each entry declares whether that category was Deleted, Retained, Anonymised, or ArchivedRestricted; anything kept also requires a retention reason, a retained-until date, and an access restriction.
The event must reach the API Hub within 45 days of the consent becoming terminal. The API Hub returns 201 with a receipt — AttestationId, AttestationReceivedDateTime, and RegulatoryDeadlineMetIndicator, which reports whether that deadline was met. A late event is still recorded, not rejected. A failed technical or rule validation returns 400 with code Attestation.ValidationError.
The sub-resource is append-only and stateless. Each POST records a new immutable event, the API Hub applies no de-duplication, and there is no correction endpoint — a restatement is simply another event. AttestationType is the extension point: a future obligation to attest to something else against a consent becomes a new type rather than a new API.
The full specification — field tables, enum values, validation rules, and worked examples — is on the Data Deletion Confirmation page linked below.
