Rotate a credential-owned webhook signing secret
const url = 'https://api.de.teamgrid.app/v1/webhooks/example/secret-rotation';const options = { method: 'POST', headers: { 'If-Match': 'example', 'Idempotency-Key': 'example', Authorization: 'Bearer <token>' }};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://api.de.teamgrid.app/v1/webhooks/example/secret-rotation \ --header 'Authorization: Bearer <token>' \ --header 'Idempotency-Key: example' \ --header 'If-Match: example'Rotates the signing-secret generation for a credential-owned v2 webhook. The secret is derived only for this no-store response, remains absent from URLs and persistent records, and is reproduced only for an exact idempotent replay.
Authorizations
Section titled “Authorizations”Parameters
Section titled “Parameters”Path Parameters
Section titled “Path Parameters”Header Parameters
Section titled “Header Parameters”Exactly one latest strong webhook ETag. Wildcards, weak validators, and lists are rejected.
Unique request key retained for seven days. Within that window, reuse with different data is rejected.
Responses
Section titled “Responses”An exact replay of the completed secret rotation.
object
object
object
Reveal-only replacement signing secret. It is returned only by this no-store response and is never persisted as plaintext.
object
Example
{ "data": { "type": "webhookSecretRotation" }}Headers
Section titled “Headers”Prevents shared caching and representation transformations so the strong revision validator remains byte-for-byte usable for conditional requests.
Strong credential-owned webhook revision including signing-secret generation.
A newly completed signing-secret rotation.
object
object
object
Reveal-only replacement signing secret. It is returned only by this no-store response and is never persisted as plaintext.
object
Example
{ "data": { "type": "webhookSecretRotation" }}Headers
Section titled “Headers”Prevents shared caching and representation transformations so the strong revision validator remains byte-for-byte usable for conditional requests.
Strong credential-owned webhook revision including signing-secret generation.
The request is invalid.
object
object
object
object
Examplegenerated
{ "errors": [ { "code": "example", "detail": "example", "source": { "additionalProperty": "example" }, "status": "example", "title": "example" } ], "meta": { "requestId": "example" }}The bearer credential is missing, invalid, expired, or revoked.
object
object
object
object
Examplegenerated
{ "errors": [ { "code": "example", "detail": "example", "source": { "additionalProperty": "example" }, "status": "example", "title": "example" } ], "meta": { "requestId": "example" }}The credential has insufficient scope.
object
object
object
object
Examplegenerated
{ "errors": [ { "code": "example", "detail": "example", "source": { "additionalProperty": "example" }, "status": "example", "title": "example" } ], "meta": { "requestId": "example" }}The tenant-scoped resource does not exist.
object
object
object
object
Examplegenerated
{ "errors": [ { "code": "example", "detail": "example", "source": { "additionalProperty": "example" }, "status": "example", "title": "example" } ], "meta": { "requestId": "example" }}The request conflicts with the current resource state.
object
object
object
object
Examplegenerated
{ "errors": [ { "code": "example", "detail": "example", "source": { "additionalProperty": "example" }, "status": "example", "title": "example" } ], "meta": { "requestId": "example" }}The resource changed since the supplied revision.
object
object
object
object
Examplegenerated
{ "errors": [ { "code": "example", "detail": "example", "source": { "additionalProperty": "example" }, "status": "example", "title": "example" } ], "meta": { "requestId": "example" }}A strong If-Match revision is required.
object
object
object
object
Examplegenerated
{ "errors": [ { "code": "example", "detail": "example", "source": { "additionalProperty": "example" }, "status": "example", "title": "example" } ], "meta": { "requestId": "example" }}The credential or source exceeded its rate limit.
object
object
object
object
Examplegenerated
{ "errors": [ { "code": "example", "detail": "example", "source": { "additionalProperty": "example" }, "status": "example", "title": "example" } ], "meta": { "requestId": "example" }}Headers
Section titled “Headers”Minimum delay in seconds before retrying.
Maximum requests in the current window.
Requests remaining in the current window.
Unix time in milliseconds when the current window resets.
Request correlation identifier.
The cell-local application returned an invalid response.
object
object
object
object
Examplegenerated
{ "errors": [ { "code": "example", "detail": "example", "source": { "additionalProperty": "example" }, "status": "example", "title": "example" } ], "meta": { "requestId": "example" }}A required cell-local dependency is unavailable.
object
object
object
object
Examplegenerated
{ "errors": [ { "code": "example", "detail": "example", "source": { "additionalProperty": "example" }, "status": "example", "title": "example" } ], "meta": { "requestId": "example" }}