Skip to content

app.deletion_certificates

TableRow level security on

The record of an org whose data was deleted (Section 14.7): day 90 of a cancellation or the end of a deletion request's recovery window. Kept after the org is gone, so it names the org by id, name and slug with no foreign key. It tracks the purge (storage objects, then every row through the tenant purge), the certificate PDF and its email to the former Owner. Written only by the lifecycle job and the org-lifecycle worker; the former Owner reads their own.

Primary key: id

Columns of app.deletion_certificates
ColumnTypeNullableDescription
iduuidNoCertificate id, printed on the PDF.
deleted_org_iduuidNoId the org had. No foreign key: the org row is deleted.
org_nametextNoName of the org when it was deleted.
org_slugtextNoWeb address of the org when it was deleted.
basistextNocancellation (day 90 of a cancellation) or deletion_request (end of the 7-day recovery window).
requested_attimestamp with time zoneNoWhen the Owner canceled or asked for deletion.
due_attimestamp with time zoneNoWhen the data became due for deletion.
owner_person_iduuidYesFormer Owner the certificate goes to; null once their own account is deleted.References app.people.id
owner_nametextYesName of the former Owner when the certificate was written.
owner_emailtextYesAddress the certificate is emailed to, kept with the certificate as delivery evidence.
localetextNoLanguage of the certificate and its email: the Owner's language in the org, en-US or es-US.
time_zonetextNoThe org's time zone when it was due (its locale.time_zone setting, UTC unset): the calendar the certificate and its email date the deletion on.
held_attimestamp with time zoneYesWhen a legal hold was found on the org; the purge waits while it is set.
blocked_reasontextYesWhy the purge refused, for example rows of another org that reference this one; the platform resolves it.
storage_cleared_attimestamp with time zoneYesWhen the worker found no storage object of the org left after deleting them through the Storage API.
storage_objects_deletedintegerNoStorage objects the worker deleted.
purged_attimestamp with time zoneYesWhen every row of the org was deleted.
tables_purgedintegerYesTables rows were deleted from.
rows_purgedbigintYesRows deleted.
document_objecttextYesObject name of the certificate PDF in the private deletion-certificates bucket.
document_sha256textYesSHA-256 of the certificate PDF.
issued_attimestamp with time zoneYesWhen the certificate PDF was stored.
delivered_attimestamp with time zoneYesWhen the certificate was emailed to the former Owner.
delivery_message_idtextYesMessage id the mail provider returned.
attemptssmallintNoWorker attempts so far.
locked_bytextYesWorker that holds the certificate while it works on it.
locked_attimestamp with time zoneYesWhen the worker claimed it.
last_errortextYesError of the latest failed attempt.
created_attimestamp with time zoneNoWhen the row was inserted. Set by the database.
created_byuuidYesPerson who inserted the row, or null for a platform process. Set by the database.References app.people.id
updated_attimestamp with time zoneNoWhen the row last changed. Set by the database.
updated_byuuidYesPerson who last changed the row, or null for a platform process. Set by the database.References app.people.id
deleted_attimestamp with time zoneYesSoft delete time. A row with deleted_at set is ignored by every access helper.