Webhook

Um POST de evento para um endpoint HTTPS: recibos de entrega, mensagens recebidas e mudanças de status que o receptor verifica e confirma rápido.

Apenas definições: um termo explicado aqui não é um serviço que vendemos.

Um webhook é um callback HTTPS que envia um evento para uma URL que você registrou, como um recibo de entrega ou uma mensagem recebida. O receptor verifica a assinatura, confirma com 2xx e enfileira o trabalho.

O receptor lida com duplicatas e eventos fora de ordem; um webhook é entrega por push.

Verificar, confirmar, enfileirar

O provedor envia um POST quando um evento acontece, e seu endpoint retorna 2xx para confirmar. O payload geralmente é JSON com um tipo de evento e um identificador. O provedor pode assiná-lo; confira a assinatura em relação ao corpo bruto com o segredo compartilhado e rejeite requisições fora da janela de replay.

Verifique primeiro, armazene o evento bruto, retorne 2xx e processe o trabalho de forma assíncrona. Endpoints lentos causam novas tentativas. A entrega geralmente é pelo menos uma vez e a ordem não é preservada, então desduplique pelo ID do evento. Mantenha uma fila de mensagens mortas para eventos que não puderem ser processados. O explicador SMPP versus HTTP compara callbacks com entrega baseada em sessão.

Perguntas frequentes

Qual é a diferença entre um webhook e uma API?

Uma API geralmente é consultada pelo cliente. Um webhook é enviado pelo provedor quando um evento acontece, e a maioria das plataformas oferece os dois.

Por que os eventos chegam duas vezes?

A entrega geralmente é pelo menos uma vez, então uma nova tentativa pode duplicar um evento já processado. Desduplique pelo ID do evento.

Qual status devo retornar?

Um 2xx quando o evento já está persistido ou enfileirado. Retornar antes disso arrisca perder o evento se a próxima etapa falhar.

Saiba mais

Fontes

  1. IETF RFC 9110: HTTP Semantics