Walk back a purge. A purged project is recoverable for 30 days: its
row and its contents are kept, hidden from every list and read, and
permanently deleted only once the window expires.
**What comes back:** the project and exactly the resources the purge
removed. A resource you had deleted yourself before the purge stays
deleted.
**What does NOT come back, on purpose:** every credential the purge
revoked stays revoked, and every grant it cleared stays cleared. API
keys and service accounts pinned to the project are not re-issued,
vault credentials and webhook endpoints scoped to it are not
undeleted, and member grants and pending-invite scopes are not
restored. Bringing a credential or a grant back would re-grant
access somebody deliberately ended, so the restore reports them
under `still_revoked` instead. Re-create the credentials and
re-grant the members the project still needs.
The project returns ARCHIVED, the state it was purged from, so
nothing dispatches or bills inside it until you unarchive it.
Refused with `409 project_not_purged` when the project was never
purged, `409 project_restore_window_expired` once the 30 days have
passed, and `409 project_name_taken` when another project has taken
this one's name since the purge (a purge frees the name immediately
- rename the project holding it, then restore).
Response
The project is restored, archived, and holds its resources again.
idstringOptionalformat: "^proj_[0-9a-hjkmnp-tv-z]{26}$"
purged_atdatetimeOptional
When the purge this call walked back happened.
archived_atdatetime or nullOptional
When the project was archived. Always set on a restore: a project
comes back suspended, never live.
still_revokedobjectOptional
What the restore deliberately left revoked: the credentials the purge
killed. Every field is a real count, including zero.
not_restored_notestringOptional
A plain-language statement of what a restore does not bring back.
Constant text, meant to be shown to a person; branch on
still_revoked rather than parsing it.