Mint a new signing secret in place; preserves delivery history.
Issue a new signing secret for an existing webhook endpoint. Mirrors POST /keys//rotate: row identity (id, url, events, is_active, created_at) is…
POST
Issue a new signing secret for an existing webhook endpoint.
Mirrors
POST /keys/{id}/rotate: row identity (id, url, events,
is_active, created_at) is preserved; only the secret changes.
updated_at advances. The new plaintext secret is returned in
full exactly once — read it before the response goes out the
door, because subsequent reads omit it.
The old secret stops working the instant this commits. Tenants
should orchestrate the cutover the same way as API keys: deploy
the new secret to the receiver before calling this, OR tolerate
a brief window of failed-signature deliveries.
Delivery history (success / failure / retry rows) is unchanged —
rotation deliberately preserves it so audit trails survive.
Inactive endpoints 409 (parallel to API key rotate). Cross-tenant
ids 404. Same scope (admin) as the rest of the webhook surface.
Path parameters
string (uuid)
required
Response
WebhookEndpointWithSecret
string
required
string
required
string[]
required
boolean
required
string
required
string
required
string
required
HMAC-SHA256 signing secret. Compare incoming X-Webhook-Signature against
HMAC(secret, f'{t}.{body}').