Skip to main content
Resumo: 29 eventos, um envelope só e uma assinatura só. Você escreve um parser e um switch no campo event. A convenção do nome é <recurso>.<sub-recurso>.<o que aconteceu, no passado>, e nome de evento é contrato público: ele não muda.

O envelope

Todo evento sai com a mesma forma:
Deduplique por id. Uma retentativa carrega o mesmo id; sem deduplicar, um retry vira um segundo pedido de reenvio para o seu cliente.

Conferir a assinatura

Compare com X-Gyra-Signature, que vem como sha256=<hex>.
Use o corpo cru, byte a byte. Reserializar o JSON muda espaços e ordem de chave, e a assinatura deixa de bater. É o erro mais comum de quem integra webhook assinado.Recuse o que estiver fora de uma janela de cinco minutos. É isso que impede reenvio, e é por isso que o carimbo entra dentro da assinatura.

Cabeçalhos

Entrega e retentativa

Responda 2xx rápido e processe depois. O endereço é resolvido a cada tentativa, então domínio que passa a apontar para um endereço interno é recusado na hora da entrega. Para configurar, ver Criar ou atualizar assinatura. GET /v1/webhook/events devolve este mesmo catálogo, com os grupos, para você montar a sua tela sem fixar a lista no código.
ping não entra em nenhum grupo e não respeita a lista de eventos da assinatura: ele é o botão “testar”.

Documento

registry.document.received

Upload confirmado, a análise vai começar. Sai depois do despacho para o pipeline: um received que chegasse antes prometeria um parecer que poderia nunca vir.

registry.document.progress

Passo da análise. Existe para quem consome por API não ver um silêncio de minutos entre o upload e o parecer e sair fazendo polling, que é exatamente o que o webhook evita.

registry.document.assessed

Parecer terminal. É o evento principal do módulo.
reason traz o statusReason quando o documento parou num terminal que não é falha técnica (fora de escopo, não identificado, qualidade insuficiente, parecer de análise manual). Para os campos extraídos e as verificações, chame o resultado completo.

registry.document.failed

Falha técnica: não há parecer, e o reprocessamento é possível. Mesmo formato do assessed, com status: "FAILED".

registry.document.reprocessed

Reprocessamento disparado. Avisa que o parecer que você já recebeu vai ser substituído; sem ele, você guardaria o veredito antigo e receberia um segundo assessed do mesmo documento sem entender de onde veio.

registry.document.decided

Um operador discordou do parecer e decidiu na mão. É evento separado do parecer da IA de propósito: quem integra costuma tratar os dois de forma diferente (um libera a operação automaticamente, o outro registra que alguém assumiu).

Cadastro

registry.updated

Completude, situação de KYC ou dados básicos mudaram. É o que você usa para decidir se pode seguir com a operação.

registry.financial.extracted

Balanço e DRE extraídos: os números já estão no cadastro. É aqui que a esteira de crédito acorda.

Solicitação, itens, formulário e assinatura

Estes eventos saem da trilha da solicitação, então todos têm o mesmo formato de data:

Solicitação

A solicitação aberta pelo formulário público emite collection.created e os demais eventos como qualquer outra, com actorType SYSTEM na criação, porque ninguém da sua equipe a abriu. O formulário não tem eventos próprios, e o desligamento do link pelo teto diário não gera webhook.

Itens

Em AUTOMATIC, collection.item.assessed já resolve o item. Em REVIEW, ele apenas informa o parecer da IA: o que fecha o item é collection.item.reviewed.

Formulário, consentimento, identidade e assinatura

signature.collected e signature.completed respondem perguntas diferentes: uma é “fulano assinou”, a outra é “o contrato existe”. É a segunda que autoriza a via em PDF a nascer.

Contratos da esteira e assinatura pela Clicksign

Quando a esteira gera um contrato, ela abre uma solicitação com um único item de assinatura conjunta. Os eventos são os mesmos da tabela acima; o que muda é o payload.
Para saber que um contrato foi formalizado, escute collection.signature.completed e confira contractDocumentId no collection.created da mesma solicitação. O desfecho da esteira inteira chega pelo webhook da execução. Veja Formalização.

Mensagens

collection.message.failed

A mensagem não chegou. É o único da família que não sai da trilha, e é o mais fácil de esquecer de assinar: sem ele, você acha que avisou o cliente e o cliente nunca soube, e descobre no vencimento.
Assine collection.message.failed mesmo que não assine mais nada da categoria de mensagens. Quem tem este evento consegue ligar para o cliente; quem não tem, descobre no vencimento.

O que não vira webhook

Ruído interno não vira evento, de propósito: cada gravação de rascunho, cada recálculo de estado, a visualização de imagens da identidade, os eventos de bastidor do destinatário e o próprio registro de entrega de webhook (que se realimentaria). Evento demais tem o mesmo efeito que evento nenhum: o integrador filtra tudo e para de ler. Tudo isso continua na trilha de auditoria, consultável por API.

Eventos de relatório e crédito

Os eventos de relatório, política, comitê, exportação e operação continuam existindo e agora aparecem na mesma tela de configuração, sob a categoria Relatórios e crédito, com nome público na mesma convenção:
Nada foi migrado: o tipo gravado continua o mesmo, e quem já integra por POST /webhook com type: "REPORT_FINISHED" não precisa mudar nada. O que muda é o nome público na lista de eventos, para você não ter de aprender duas convenções.O conteúdo desses eventos está em Criar Webhook.