Skip to content

Admin list in-app notices

GET
/api/v1/admin/notices
curl --request GET \
--url https://api.deploybase.eu/api/v1/api/v1/admin/notices \
--header 'Authorization: <Authorization>'

Every notice deploybase has published, newest first, withdrawn and expired ones included. Withdrawal is an expiry rather than a delete, so hiding expired rows would hide exactly the ones somebody goes looking for after a mistake. Derived notices such as the functions closed-beta invite are computed per reader and never appear here.

page
integer

Page number (default 1)

page_size
integer

Page size, 1-100 (default 20)

OK

Media type application/json
object
data
meta
object
request_id
string
timestamp
string
trace_id
string
data
object
notices
Array<object>
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
page
integer
page_size

PageSize echoes the applied size, which may be the default rather than what was asked for.

integer
total

Total is the unpaginated count, so the dashboard can page and badge without a second call.

integer
total_pages
integer
Example generated
{
"data": {
"notices": [
{
"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"
}
],
"page": 1,
"page_size": 1,
"total": 1,
"total_pages": 1
},
"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"
}
}

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