Skip to main content

Notifications

Configure where alerts are delivered and manage browser push subscriptions. All endpoints are authenticated with a Bearer JWT (see Authentication).

Endpoints

MethodPathDescription
GET/api/v1/notification-channelsList notification channels
POST/api/v1/notification-channelsCreate a channel
PUT/api/v1/notification-channels/{channel_id}Update a channel
DELETE/api/v1/notification-channels/{channel_id}Delete a channel
POST/api/v1/notification-channels/{channel_id}/testSend a test notification
GET/api/v1/push/vapid-public-keyGet the public key for web-push
POST/api/v1/push/subscribeRegister a web-push subscription
DELETE/api/v1/push/subscribeRemove a web-push subscription

Notification channels

A channel describes one delivery destination. Channel-specific settings go in the config object; secret values are masked in responses. Webhook and chat destinations must use HTTPS and a public host.

Supported channel_type values: email, slack, webhook, sms, msteams, telegram, pagerduty, opsgenie, servicenow, jira.

Create a channel

POST /api/v1/notification-channels

Email:

{
"name": "Maintenance Team Email",
"channel_type": "email",
"config": { "to_email": "maintenance@example.com" },
"is_active": true,
"notify_on_alert": true
}

Slack:

{
"name": "Alerts Slack",
"channel_type": "slack",
"config": { "webhook_url": "https://hooks.slack.com/services/T00/B00/XXXX" },
"is_active": true,
"notify_on_alert": true
}

Generic webhook:

{
"name": "Custom Integration",
"channel_type": "webhook",
"config": {
"url": "https://example.com/webhook",
"headers": { "X-Custom-Header": "value" }
},
"is_active": true,
"notify_on_alert": true
}

Response:

{
"id": "...",
"tenant_id": "...",
"channel_type": "slack",
"name": "Alerts Slack",
"config": { "webhook_url": "***" },
"is_active": true,
"notify_on_alert": true,
"created_by": "USER_UUID",
"created_at": "2026-08-05T10:00:00Z"
}

Test a channel

POST /api/v1/notification-channels/{channel_id}/test

Sends a test message to the channel and reports whether it succeeded.

{ "success": true }

Web push

Deliver alerts as browser push notifications. See the Webhook & delivery setup guide for end-to-end wiring.

Get the public key

GET /api/v1/push/vapid-public-key

{ "public_key": "BMod…", "enabled": true }

When enabled is false, web push is not available and subscribe calls return 503.

Subscribe

POST /api/v1/push/subscribe

Register the browser PushSubscription for the current user's device.

{
"endpoint": "https://push.example.com/subscription/abc123",
"keys": { "p256dh": "BEl…", "auth": "k9X…" },
"user_agent": "Mozilla/5.0 …"
}
{ "subscribed": true }

Unsubscribe

DELETE /api/v1/push/subscribe

Send the same endpoint to remove the subscription. Returns 404 if no matching subscription exists.