agency-board
POST /v1/agency/boards/{boardId}/webhooks
Add an outbound webhook.
Authentifizierung
Senden Sie einen API-Schlüssel als Bearer-Token. Dieser Endpunkt gibt in der Spezifikation keine spezifische Berechtigung an. Versehen Sie Ihren Schlüssel daher mit den minimal erforderlichen Rechten und prüfen Sie die Antwort, anstatt Annahmen zu treffen.
Dieser Endpunkt erfordert keine Organisations-ID. Ihr Schlüssel identifiziert bereits die zugehörige Organisation, und die Antwort ist entsprechend eingeschränkt.
Ausprobieren
Ersetzen Sie alles in spitzen Klammern durch Ihre eigenen Werte und den Platzhalter für den Schlüssel durch einen Schlüssel aus Ihrem Dashboard.
curl -X POST https://api.zinndigital.com/v1/agency/boards/{boardId}/webhooks \
-H "Authorization: Bearer zdk_live_…" \
-H "Content-Type: application/json" \
-d '{ "name": <string>, "url": <string> }'Angemeldet? Die API-Konsole in Ihrem Dashboard trägt automatisch Ihre echte Organisations-ID sowie Ihren eigenen Schlüssel ein und führt die Anfrage gegen die Live-API aus, sodass Sie die tatsächliche Antwort sehen können. Öffnen Sie diesen Endpunkt in der API-Konsole
Details
HTTPS only. We mint the signing secret and return it **once, in this response**. There is no endpoint that can read it back, so keep it — rotate to get a new one. Deliveries are signed `X-Zinn-Signature: sha256=<hmac over "<timestamp>.<body>">` with `X-Zinn-Timestamp`, `X-Zinn-Delivery` and `X-Zinn-Event` beside them. The timestamp is bound INTO the signature so a captured request cannot be replayed for ever, and so a receiver cannot be tricked about which timestamp it was.
Parameter
| Name | Typ | Erforderlich | Was es ist |
|---|---|---|---|
boardId (path) | Uuid | Ja | Project board ID (UUIDv7). |
Anfragekörper
| Name | Typ | Erforderlich | Was es ist |
|---|---|---|---|
name | string | Ja | — |
url | string | Ja | HTTPS only. Private and link-local addresses are refused when the socket opens, not when you save. |
events | string[] | Nein | Empty means every event this board emits. |
status | string<enabled, disabled> | Nein | — |
Antwort
| Name | Typ | Erforderlich | Was es ist |
|---|---|---|---|
id | Uuid | Ja | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
board_id | Uuid | Ja | UUIDv7 identifier — sortable by creation time (docs/02 §8). |
name | string | Ja | — |
url | string | Ja | — |
events | string[] | Nein | — |
status | BoardAutomationStatus | Ja | `suspended` means WE paused it after repeated failure and it carries a reason the customer has not read. It is a third state rather than a reuse of `disabled`, because collapsin… |
has_secret | boolean | Ja | Whether a signing secret is stored. The secret itself is in Vault and is returned only by create and rotate; no endpoint can read it back. |
consecutive_failures | integer | Nein | — |
suspended_reason | string | Nein | Why we paused this webhook, in authored copy from a closed table — never an exception from our own code. It distinguishes your endpoint refusing a delivery, your endpoint being… |
suspended_at | string | Nein | — |
last_delivered_at | string | Nein | — |
last_failed_at | string | Nein | — |
created_at | string | Nein | — |
secret | string | Ja | Shown ONCE, here. Store it now; rotate to get a new one. |
Fehler, die dieser Endpunkt zurückgeben kann
401 · 403 · 404 · 422