Skip to content

List notification channels in the project.

GET
/v1/projects/{projectId}/observability/notification-channels
Code sample: Shell / cURL
curl --request GET \
--url https://stratum.example.com/v1/projects/example/observability/notification-channels \
--header 'Authorization: Bearer <token>'
projectId
required
string
/^p-[a-z0-9-]+$/

Notification channels.

Media typeapplication/json
object
items
required
Array<object>
object
id
required
string
/^nch-[a-z0-9]{1,32}$/
projectId
required
string
name
required
string
displayName
required
string
description
string
type
required
string
Allowed values: webhook email slack pagerduty
config
required

Type-specific configuration. Shape depends on type:

  • webhook: { url:..., headers: {...} }
  • email: { addresses: [...] }
  • slack: { webhook_url:... }
  • pagerduty: { integration_key:... }

Webhook headers is an object of header name to string value, sent on every delivery. At most 16 headers. Values are visible ASCII, space or tab, up to 4096 characters. Headers the sender sets itself (Host, Content-Type, Content-Length, User-Agent, and the rest of Alertmanager’s reserved list) are refused with 400. Authorization must be <scheme> <credentials>; a Basic value must decode to user:password. Header values are write-only: every read returns them as REDACTED, and a PATCH that sends REDACTED back keeps the stored value. Headers apply to webhook channels only.

A tenant channel’s destination (url, or Slack webhook_url) may not be, or resolve to, loopback, link-local, unspecified, multicast, or one of the cluster’s own node and VIP addresses: 400 on create and PATCH. The system project’s channels are exempt.

object
key
additional properties
any
state
required
string
Allowed values: active deleted
tags
object
key
additional properties
string
createdAt
required
string format: date-time
updatedAt
required
string format: date-time
deletedAt
string format: date-time
nullable
createdBy
required
string
nextPageToken
string
isTruncated

True when the server had more rows than it returned. The response is a valid prefix of the result, not the whole of it.

Without this flag a client at the server’s row ceiling receives a full page and no nextPageToken, which means “this is the complete set” — so data it never saw would be indistinguishable from data that does not exist.

It does not imply a cursor exists. These queries do not all sort on a total order, so a resumable token cannot be minted for them yet. The remedy is to narrow the request (a filter, or a tighter scope), not to page.

boolean

Example

{
"items": [
{
"type": "webhook",
"state": "active"
}
]
}