Skip to content

Lift a suspension case

POST
/api/v1/admin/suspension-cases/{id}/lift
curl --request POST \
--url https://api.deploybase.eu/api/v1/api/v1/admin/suspension-cases/example/lift \
--header 'Authorization: <Authorization>'

Closes the case and releases its frozen people, then lifts every row: a team this case suspended is restored unless another open case still wants it suspended (kept_by_other_case), a held team is released. Teams that were already suspended before the case stay suspended. teams reports each row the call acted on; a row is marked lifted only once its restore completed, so unsuspend_failed and unsuspend_incomplete rows stay suspended with last_error and complete is false. Lifting a closed case again retries exactly those rows; otherwise it changes nothing.

id
required
string

Suspension case ID (UUID)

OK

Media type application/json
object
data
meta
object
request_id
string
timestamp
string
trace_id
string
data
object
case
object
cascades
boolean
class
string
Allowed values: phishing malware spam_network illegal_content copyright payment other
closed_at
string
closed_by
string
escalated_at
string
escalated_by
string
escalated_from

Escalation evidence: set when an open single-team case was escalated in place to a cascade class. Class/Cascades are the new values; EscalatedFrom is the class it had, Reason stays the original statement and EscalationReason is the escalating admin’s.

string
Allowed values: phishing malware spam_network illegal_content copyright payment other
escalation_reason
string
id
string
opened_at
string
opened_by
string
opened_by_email

OpenedByEmail is resolved at read time for the admin view; never stored.

string
origin_team_id
string
origin_team_name
string
reason
string
subjects
Array<object>
object
case_id
string
confirmed_transferee

ConfirmedTransferee: the person became owner of the origin by a recent transfer (T1) and the admin confirmed them responsible anyway; their teams were classified like any subject’s.

boolean
confirmed_transferee_by
string
email

Email is resolved at read time from the person’s memberships for the admin view; the case stores only the hash.

string
frozen_at
string
id
string
released_at
string
released_by
string
zitadel_user_id
string
teams
Array<object>
object
case_id
string
decided_at
string
hold_reason
string
id
string
last_error
string
owner_count
integer
plan_at_decision
string
resolved_at
string
resolved_by
string
role
string
state
string
suspended_by_case
boolean
team_id
string
team_name
string
via_user_id
string
closed_now

ClosedNow is false when the case was already closed (a re-run that retried rows).

boolean
complete

Complete is false when any team’s restore failed or is incomplete: lift again to retry.

boolean
teams
Array<object>
object
case_id
string
complete

Complete is false for unsuspend_incomplete and unsuspend_failed.

boolean
error
string
from

From is the row’s state when the lift acted on it.

string
restore

Restore is the unsuspend report when this lift ran one.

object
complete

Complete is true only when every step above succeeded: no error field set, no project error or unprocessed project, no failed purge. The admin UI shows a success toast only then; anything else is a red “incomplete” report and a Re-run button (DEP-774). The handler always answers 200 with the outcome, so this flag is the one thing to check.

boolean
functions_error
string
functions_reconciled
boolean
hostnames_purged
integer
hostnames_still_online

HostnamesStillOnline gathers every hostname, across projects and the final purge, that may still be serving: its pointer survived, its zone could not be purged, or its cache could not be evicted. Suspend only. Re-running the suspension retries all of them.

Array<string>
notification_error
string
notification_sent
boolean
projects
Array<object>
object
domains_processed
integer
errors
Array<string>
hostnames_still_online

HostnamesStillOnline are this project’s hostnames whose take-down step still failed after its retries. Suspend only.

Array<string>
previews_processed
integer
production

Production is one of: “disabled”, “restored”, “no_rule” (the project has no production Edge Rule to touch), “no_live_deployment” (nothing to restore it to), “not_processed: …” (the context budget ran out first), or “error: …”.

string
project_id
string
project_slug
string
shares_processed
integer
purge_errors
Array<string>
ssr_functions_error
string
ssr_functions_reconciled
boolean
suspended

Suspended is the team’s state AFTER the call.

boolean
transitioned_now

TransitionedNow is whether THIS call moved the flag. False on a re-run, which is also what keeps the statement of reasons from being sent twice.

boolean
zitadel_error
string
zitadel_org_deactivated
boolean
result
string
team_id
string
team_name
string

Example

{
"data": {
"case": {
"class": "phishing",
"escalated_from": "phishing"
}
}
}

Bad Request

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string

Example generated

{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Unauthorized

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string

Example generated

{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Forbidden

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string

Example generated

{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Not Found

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string

Example generated

{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Internal Server Error

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string

Example generated

{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Service Unavailable

Media type application/json
object
code
string
details
error
string
meta
object
request_id
string
timestamp
string
trace_id
string

Example generated

{
"code": "example",
"details": "example",
"error": "example",
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

Live f79d25b6 built