Draft

This is v2.2-draft — a working draft of the v2.2 standards, published for review and not yet ratified. It MUST NOT be used as the basis for a production implementation. For the current standards, switch to v2.1 using the version selector. See the v2.1 → v2.2-draft changelog for every change in this version.

TPP Standards · v2.2-draft · Consent · Data Deletion Confirmation

Data Deletion Confirmation 5 min read

When a consent ends, the TPP must review the data it holds under that consent and confirm what it did with it. That confirmation is recorded as an Attestation Event, posted to an append-only attestations sub-resource on the consent itself. For the request and response schemas, see the API Reference.

01 What is required

The obligation

Once a consent reaches a terminal status, the TPP MUST review every category of data it holds under that consent and record an Attestation Event stating, per category, whether the data was deleted or lawfully retained.

The terminal statuses in scope are Revoked, Expired, and Consumed. Rejected consents are explicitly out of scope — no data was ever shared under them, so there is nothing to attest to.

Important

A payment consent is not empty for this purpose. It carries debtor and creditor account details, amounts, references, and charge and exchange-rate information, plus any account data the TPP retrieved in order to set the payment up. When a payment consent reaches a terminal status, that data falls under the same obligation as a Data Sharing consent.

Data the TPP holds outside the consent — data the customer supplied directly, or data obtained under a separate lawful basis — is not covered by this attestation.

02 Where it is recorded

The attestations sub-resource

Every consent type gains an attestations sub-resource. Each is scoped to its own API family, so a TPP only needs the scopes it already holds.

Consent typePathScope
Bank Data Sharing/account-access-consents/{ConsentId}/attestationsaccounts
Bank Service Initiation/payment-consents/{ConsentId}/attestationspayments
Insurance/insurance-consents/{ConsentId}/attestationsinsurance

POST appends a new Attestation Event. GET returns the events the TPP has posted against that consent, most recent first, each paired with its receipt.

Note

Attestations are recorded and validated wholly within the API Hub. There is no corresponding Ozone Connect endpoint and no change to the consent record an LFI holds.

03 When it is due

The 45-day deadline

The Attestation Event MUST reach the API Hub within 45 days of the consent reaching its terminal status. The API Hub stamps every event with RegulatoryDeadlineMetIndicator, stating whether it arrived inside that window.

The deadline runs from the status change, not from the moment the TPP noticed it. A TPP subscribed to the consent status webhook is notified when a consent becomes terminal; a TPP that is not subscribed MUST poll the consent to detect the transition. Either way, knowing is the TPP's responsibility.

Warning

A late event is still recorded. The API Hub does not reject it — RegulatoryDeadlineMetIndicator simply reports false. A late attestation is more useful than a missing one, and the indicator preserves the compliance signal.

04 How the register behaves

Append-only and stateless

The sub-resource is append-only. Each POST records a new, immutable event; the API Hub applies no de-duplication and stores every successfully recorded event.

There is deliberately no state model and no correction endpoint. A TPP that needs to restate an attestation simply posts another event. Which event is surfaced in reporting is a reporting-layer matter, not consent state.

AttestationType is the extension point. A future obligation to attest to something else against a consent becomes a new type — not a new API.