POST /v1/webhooks; a resposta retorna um signingSecret uma única vez —
guarde-o agora.
Events
Event catalog
Assine um ou mais eventos por webhook (o array
events na criação).
Subscribing to events
Envie um arrayevents ao registrar um webhook para escolher exatamente quais eventos ele recebe. O
campo type de cada entrega indica qual evento disparou, então um único endpoint trata todo o ciclo.
PATCH /v1/webhooks/{id} e um novo array events.
Event envelope
O corpo de cada POST de webhook é um envelope JSON.id é estável entre reentregas — deduplique
por ele. data carrega o objeto de negócio do evento — para os eventos scribe_session.*, um
instantâneo da sessão:
data para os eventos scribe_session.*:
A mesma forma de
data é enviada para cada evento scribe_session.*; status reflete o estado
real da sessão e completedAt é null quando a sessão não foi concluída.
Verifying the signature
Cada requisição carrega um cabeçalhoX-Scribe-Api-Signature (estilo Stripe):
t é o timestamp Unix em que a requisição foi assinada; v1 é o HMAC-SHA256 em hexadecimal de
"{t}." + raw_request_body, com chave o seu segredo de assinatura. Verifique sobre o corpo cru
da requisição antes de fazer o parse — reserializar o JSON pode mudar os bytes e quebrar a
comparação. Use uma comparação de tempo constante e rejeite timestamps fora de uma janela de 5
minutos para mitigar ataques de repetição.
X-Scribe-Api-Event-Id (igual ao id do envelope) para log rápido.
Retry & delivery
- Retorne um
2xxrapidamente para confirmar. Faça o trabalho lento de forma assíncrona. - Um
5xx, erro de rede ou timeout é repetido com backoff exponencial (≈2s até ≈2min entre tentativas) por até 6 tentativas ao longo de ~15 minutos. - Qualquer
4xx(incluindo408e429) é tratado como permanente — a entrega não é repetida. - As repetições reutilizam o mesmo
iddo envelope, então deduplique por ele para ser idempotente.
Rotating the signing secret
ChamePOST /v1/webhooks/{id}/rotate-secret para gerar um novo segredo. A resposta retorna o novo
signingSecret uma única vez e incrementa signingSecretVersion. O segredo anterior para de
verificar imediatamente, então implante o novo valor no seu endpoint antes de rotacionar.