Channel Types
| Type | Description |
|---|---|
slack | Send to a Slack channel |
email | Send to an email address |
Creating a Notification Channel
POST /notification-configs
{
"name": "Platform Alerts",
"channel_type": "slack",
"value": "#platform-alerts",
"slack_connection_id": "slack-conn-uuid"
}
For email:
POST /notification-configs
{
"name": "DevOps Email",
"channel_type": "email",
"value": "devops@example.com"
}
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Must be unique per org |
channel_type | string | Yes | slack or email |
value | string | Yes | Slack channel name or email address |
slack_connection_id | UUID | Yes for slack | Reference to a connected Slack workspace |
Secret Storage
The actual value (email address or Slack channel) is stored in a secure vault. The database stores only a masked hint:
- Email:
j***@example.com - Slack: channel name is visible (not masked)
Testing a Channel
POST /notification-configs/{id}/test
Sends a fake “completed” run event with dummy data to verify the channel works.
- For Slack: requires a linked Slack connection with a valid bot token
- For Email: requires the server-side Resend API key to be configured
Rotating the Secret
POST /notification-configs/{id}/secret
{
"value": "new-channel@example.com"
}
Updates both the vault secret and the masked hint in the database.
Promoting a Channel
POST /notification-configs/{id}/promote
Removes the user attachment from the notification config, making it org-wide. After promotion, any org member can manage targets on this config.
Related API Endpoints
POST /notification-configs— Create a notification channelGET /notification-configs— List channelsPOST /notification-configs/{id}/test— Send a test notificationPOST /notification-configs/{id}/secret— Rotate the secret valuePOST /notification-configs/{id}/promote— Promote to org-owned