Alert Connectors API
Forward alerts to external channels (Slack, Microsoft Teams) via webhook-based connectors.
Endpoints Overview
| Method | Endpoint | Description |
|---|---|---|
| GET | /spaces/{slug}/alert-connectors | List all connectors |
| POST | /spaces/{slug}/alert-connectors | Create a connector |
| PATCH | /spaces/{slug}/alert-connectors/{id} | Update a connector |
| DELETE | /spaces/{slug}/alert-connectors/{id} | Delete a connector |
| POST | /spaces/{slug}/alert-connectors/{id}/test | Send test message |
Connector Types
| Type | Platform | Payload Format |
|---|---|---|
slack | Slack | Block Kit with attachments |
teams | Microsoft Teams | Adaptive Card v1.4 |
List Connectors
GET /spaces/{slug}/alert-connectors
Response
[
{
"id": "...",
"space_id": "...",
"name": "#data-quality-alerts",
"connector_type": "slack",
"webhook_url": "https://hooks.slack.com/services/...",
"is_active": true,
"severity_filter": ["high", "critical"],
"alert_type_filter": null,
"created_by": {
"id": "...",
"email": "alice@example.com",
"full_name": "Alice Johnson"
},
"created_at": "2026-02-11T10:00:00Z",
"updated_at": "2026-02-11T10:00:00Z"
}
]
Create Connector
POST /spaces/{slug}/alert-connectors
Request Body
{
"name": "#data-quality-alerts",
"connector_type": "slack",
"webhook_url": "https://hooks.slack.com/services/T00/B00/xxx",
"severity_filter": ["high", "critical"],
"alert_type_filter": null
}
Fields
| Field | Type | Required | Description |
|---|---|---|---|
name | string | Yes | Display name for the connector |
connector_type | string | Yes | slack or teams |
webhook_url | string | Yes | Incoming webhook URL (must be HTTPS) |
severity_filter | string[] | No | Severities to forward. Default: ["high", "critical"]. Valid: low, medium, high, critical |
alert_type_filter | string[] | No | Alert types to forward. Default: null (all types) |
Response
Returns the created connector (same shape as list items), with status 201.
Update Connector
PATCH /spaces/{slug}/alert-connectors/{id}
Request Body
All fields are optional. Only provided fields are updated.
{
"name": "Updated Name",
"is_active": false,
"severity_filter": ["critical"],
"webhook_url": "https://hooks.slack.com/services/new-url"
}
Response
Returns the updated connector.
Delete Connector
DELETE /spaces/{slug}/alert-connectors/{id}
Returns 204 No Content on success.
Test Connector
POST /spaces/{slug}/alert-connectors/{id}/test
Sends a test message to verify webhook connectivity.
Response
{
"success": true,
"status_code": 200,
"error": null
}
If the webhook is unreachable or returns an error:
{
"success": false,
"status_code": 500,
"error": "Connection timeout"
}
Filtering Behavior
When an alert is dispatched, connectors are matched using two filters:
- Severity filter — The alert severity must appear in the connector's
severity_filterlist. An empty list matches all severities. - Alert type filter — If
alert_type_filterisnull, all alert types are forwarded. Otherwise, the alert type must appear in the list.
Only active connectors (is_active: true) receive dispatched alerts.
Authentication
All endpoints require a valid session token via the Authorization header. The user must have access to the specified space.