Skip to content

Get notification preferences

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

Returns the team’s per-notification toggles, its notification email override, the address mail actually goes to, and whether that address is currently suppressed for a hard bounce or a spam complaint (DEP-332). The suppression fields are how a team discovers its notifications stopped arriving; every other symptom is silence.

OK

Media type application/json
object
effective_email

EffectiveEmail is where mail actually goes: the override when set, otherwise the team owner’s address, otherwise empty.

string
effective_source

EffectiveSource is team | team_owner | none.

string
email_suppressed

EmailSuppressed reports that mail to EffectiveEmail is NOT being delivered because the address is on the suppression list (DEP-332). Always present, so the client never has to distinguish “not suppressed” from “the backend did not answer”.

boolean
email_suppression_reason

EmailSuppressionReason is hard_bounce or complaint, and is present only when EmailSuppressed is true — there is no reason to report when nothing is suppressed.

string
notification_email

NotificationEmail is the explicit override only; null means “no override set”.

string
preferences
object
build_failure
boolean
build_success

Build notifications

boolean
build_timeout
boolean
created_at
string
form_submission

Forms notifications

boolean
id
string
payment_failed
boolean
payment_success

Billing notifications

boolean
plan_changed
boolean
spending_cap_warning
boolean
subscription_cancelled
boolean
team_id
string
updated_at
string
Example generated
{
"effective_email": "example",
"effective_source": "example",
"email_suppressed": true,
"email_suppression_reason": "example",
"notification_email": "example",
"preferences": {
"build_failure": true,
"build_success": true,
"build_timeout": true,
"created_at": "example",
"form_submission": true,
"id": "example",
"payment_failed": true,
"payment_success": true,
"plan_changed": true,
"spending_cap_warning": true,
"subscription_cancelled": true,
"team_id": "example",
"updated_at": "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"
}
}