Dispatch targets
A dispatch target is a reusable, named outbound destination — "primary-pager", "team-slack", "ops-linear" — that one or more notification rules can reference. Useful when the same Slack webhook or PagerDuty integration backs several rules and you'd rather rotate credentials in one place than across every rule.
Sensitive config is write-only
The config object holds the per-type credential — Slack/Discord
webhook URLs, PagerDuty integration keys, Opsgenie API tokens, generic
webhook bearer tokens. It is encrypted at rest with the app encryption
key and never returned on read; only the canonical metadata
(id, name, type, created_at, updated_at) come back. To
rotate, PATCH the row with a fresh config.
Type is immutable post-create
Per-type config validation is type-bound — a webhook config is shaped
differently from a PagerDuty config. Changing type on an existing row
would silently mismatch the stored config, so the API rejects type
in the PATCH body with a 400. To switch types, DELETE the target
and create a new one.
Notes
- Six target types:
slack,discord,linear,opsgenie,pagerduty,webhook. - Deleting a target leaves any referencing notification rules
intact — they fall back to whatever inline
endpoint_configthey were originally created with. - Capability-gated to owner/admin.
Endpoints
- POST
/v1/dispatch_targets— Create a dispatch target - DELETE
/v1/dispatch_targets/{id}— Delete a dispatch target - GET
/v1/dispatch_targets/{id}— Retrieve a dispatch target - GET
/v1/dispatch_targets— List dispatch targets - PATCH
/v1/dispatch_targets/{id}— Update a dispatch target