For the complete documentation index, see llms.txt. This page is also available as Markdown.

Requisição

O que o webhook me envia?

O webhook envia um evento via HTTP POST requisição com Content-Type: application/json com os seguintes parâmetros:

  • Um X-Caf-Signature cabeçalho usado para verificar se a requisição veio da Certta

Assinatura
  • O corpo da requisição é um JSON que segue o padrão CloudEvents

Eventos

Estrutura da requisição

Cada requisição de webhook inclui:

Cabeçalhos

Cabeçalho
Descrição

Content-Type

Sempre application/json

User-Agent

Identifica-se como Caf-Webhook/Connect

X-Caf-Signature

Contém a assinatura HMAC SHA-256 do corpo da requisição

Corpo da requisição

O corpo da requisição segue o formato CloudEvents, embora os cabeçalhos HTTP específicos do CloudEvents não estejam incluídos:

Exemplos

Curl

Exemplo de comando curl assumindo SECRET: "dummysecret":

O que devo responder ao webhook?

Nosso webhook considera respostas com um 2xx código (de preferência 202 ACCEPTED) em até 2 segundos como indicação de que a integração recebeu o evento com sucesso e, portanto, nenhuma outra chamada será feita para esse evento. O corpo da resposta é ignorado pelo sistema, exceto para fins de auditoria interna em caso de falhas de entrega.

Casos de erro

A requisição de webhook tem o objetivo de integrar o evento com sucesso e nada além disso. Com esse objetivo em mente, as respostas de erro devem ser usadas apenas para indicar falha na integração do evento (por evento integrado, entende-se que o evento foi recebido com sucesso pelo servidor de webhook).

O mecanismo de entrega do webhook aceita e reconhece erros dentro da série de erros HTTP 5xx, que podem indicar erros no recebimento ou processamento da requisição pelo servidor. As retentativas de entrega ocorrerão apenas para essa classe de erros.

As respostas de erro podem seguir o payload especificado abaixo para detalhar e deixar claro o motivo do erro em nossa auditoria interna. Quaisquer outros campos e/ou formatos serão ignorados.

Tratamento de requisições de webhook

Idempotência

As requisições de webhook podem ser entregues mais de uma vez em casos raros. Para lidar com isso, implemente idempotência por meio de:

  1. Usando o id campo no payload do evento para detectar duplicatas

  2. Armazenando IDs de eventos processados para evitar processar o mesmo evento duas vezes

  3. Tornando sua lógica de tratamento de eventos idempotente (segura para executar várias vezes)

Exemplo de manipulador de webhook

Aqui está um exemplo simples de manipulador de webhook em Node.js Express:

Solução de problemas

Problemas comuns

Logs e depuração

Você pode usar os logs de webhook no Trust, a plataforma que gerencia configurações, para visualizar o status de entrega dos eventos recentes e quaisquer mensagens de erro. Os logs mantêm um histórico de:

  • Tentativas de entrega bem-sucedidas e com falha

  • Códigos de resposta HTTP recebidos

  • Carimbos de data e hora das entregas

  • Erros específicos encontrados durante as entregas

Atualizado