Skip to content

Admin withdraw an in-app notice

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

Expires a notice immediately so nobody sees it again. There is no delete: the per-person dismiss and acknowledgement rows written against the key stay meaningful, and an acknowledgement has to survive the notice it was given for. Idempotent — withdrawing an already-expired notice leaves the original expiry alone, because that timestamp is when readers actually stopped seeing it.

id
required
string

Notice ID

OK

Media type application/json
object
data
meta
object
request_id
string
timestamp
string
trace_id
string
data
object
audience_min_role
string
audience_team_id
string
body
string
channels
Array<string>
created_at
string
created_by

CreatedBy is the authoring platform admin’s Zitadel subject. Text, not uuid: there is no users table (same reasoning as teams.deletion_requested_by).

string
cta_label
string
cta_url
string
email_sent_at

EmailSentAt is the double-send guard for a fan-out that does not exist yet (v1 is in-app only). Always NULL today.

string
expires_at

ExpiresAt is also how a notice is withdrawn: there is no delete, so the state rows people already wrote against the key stay meaningful.

string
id
string
key
string
presentation
string
published_at
string
requires_ack
boolean
severity
string
title
string
updated_at
string
version
string
Example generated
{
"data": {
"audience_min_role": "example",
"audience_team_id": "example",
"body": "example",
"channels": [
"example"
],
"created_at": "example",
"created_by": "example",
"cta_label": "example",
"cta_url": "example",
"email_sent_at": "example",
"expires_at": "example",
"id": "example",
"key": "example",
"presentation": "example",
"published_at": "example",
"requires_ack": true,
"severity": "example",
"title": "example",
"updated_at": "example",
"version": "example"
},
"meta": {
"request_id": "example",
"timestamp": "example",
"trace_id": "example"
}
}

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"
}
}