Webhooks
List webhooks
Keyset-paginated. Filters are typed query params (`field=value`, `field[op]=value`); unknown filters, unsortable fields and malformed values are rejected with 400 `validation_failed`.
Create webhook
Create webhook
Create or update webhook
Upsert. Takes the same body as POST plus the lookup keys `id` and `external_id`, matched in that order. A match is updated in place and returns 200 — fields absent from the body keep their stored value. No key, or no match, creates the webhook exactly as POST would and returns 201.
Get webhook
Accepts either the internal UUID or the resource `external_id`.
Update webhook
Accepts either the internal UUID or the resource `external_id`.
Delete webhook
Accepts either the internal UUID or the resource `external_id`.
Send a webhook.ping event
Accepts either the internal UUID or the resource `external_id`.
Rotate the signing secret
Replaces the signing secret and returns the new value **once**. By default the previous secret keeps signing deliveries for 24 hours (`previous_secret_grace_hours`), during which every delivery carries one signature per secret so the receiver can switch keys without dropping events. Pass `0` to revoke the previous secret immediately (leaked secret). Accepts either the internal UUID or the resource `external_id`.