Cancel a pending account deletion on its owner's behalf (admin).
const url = 'https://api.opdns.io/v1/admin/accounts/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/deletion';const options = { method: 'DELETE', headers: { cookie: 'opdns_session=<opdns_session>', 'Content-Type': 'application/json' }, body: '{"reason":"example","ticket":"example"}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request DELETE \ --url https://api.opdns.io/v1/admin/accounts/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/deletion \ --header 'Content-Type: application/json' \ --cookie opdns_session=<opdns_session> \ --data '{ "reason": "example", "ticket": "example" }'Scope admin. What POST /v1/auth/me/undelete does, for an owner who asks
by email: the profiles tombstoned by the request are restored and
republished; sessions, API tokens and nodes stay revoked. The address
receives account_deletion_canceled. Audited as account.deletion_canceled
(account’s organisation) and admin.deletion_canceled (operator’s
organisation, meta.ticket, meta.reason when given). The body’s reason
is optional here. 409 no_deletion_pending, or deletion_started once
erasure has begun.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”The account id.
Request Bodyrequired
Section titled “Request Bodyrequired”object
Why the operator acts (printable text); required to start a deletion, optional to cancel one. Operator-visible only.
The data-rights request log entry or support ticket (printable text). Quoted to the owner as the email’s reference.
Examplegenerated
{ "reason": "example", "ticket": "example"}Responses
Section titled “Responses”Cancelled.
object
Example
{ "status": "active"}Malformed request.
object
Stable machine code.
object
Seconds, repeating the Retry-After header (rate limits, offline nodes).
Example
{ "type": "https://opdns.io/problems/bad_request", "title": "Bad Request", "status": 400, "code": "bad_request", "detail": "invalid JSON body", "request_id": "5f2c9a0e7b1d4c38"}Not authenticated.
object
Stable machine code.
object
Seconds, repeating the Retry-After header (rate limits, offline nodes).
Example
{ "type": "https://opdns.io/problems/unauthenticated", "title": "Unauthorized", "status": 401, "code": "unauthenticated", "detail": "authentication required", "request_id": "5f2c9a0e7b1d4c38"}Authenticated but not allowed: insufficient_scope, session_required, csrf_rejected, mfa_enrolment_required (restricted session), mfa_required (an operator action, or an admin-scoped token, from a session signed in with the password alone; not in dev), reauth_required (sign in again within five minutes), account_pending_deletion (the account is in its deletion cooling-off).
object
Stable machine code.
object
Seconds, repeating the Retry-After header (rate limits, offline nodes).
Example
{ "type": "https://opdns.io/problems/insufficient_scope", "title": "Forbidden", "status": 403, "code": "insufficient_scope", "detail": "the token lacks the profiles:write scope", "request_id": "5f2c9a0e7b1d4c38"}Not found (also for resources of another organisation).
object
Stable machine code.
object
Seconds, repeating the Retry-After header (rate limits, offline nodes).
Example
{ "type": "https://opdns.io/problems/not_found", "title": "Not Found", "status": 404, "code": "not_found", "detail": "resource not found", "request_id": "5f2c9a0e7b1d4c38"}no_deletion_pending or deletion_started.
object
Stable machine code.
object
Seconds, repeating the Retry-After header (rate limits, offline nodes).
Example
{ "type": "https://opdns.io/problems/no_deletion_pending", "title": "Conflict", "status": 409, "code": "no_deletion_pending", "detail": "the account is not scheduled for deletion", "request_id": "5f2c9a0e7b1d4c38"}Field validation failed (validation_failed, unknown_list).
object
Stable machine code.
object
Seconds, repeating the Retry-After header (rate limits, offline nodes).
Example
{ "type": "https://opdns.io/problems/validation_failed", "title": "Unprocessable Content", "status": 422, "code": "validation_failed", "detail": "the request has invalid fields", "errors": [ { "field": "settings.block_mode", "message": "one of nxdomain, refused, null, block-page" } ], "request_id": "5f2c9a0e7b1d4c38"}