Skip to main content
O header X-Jelou-Signature com formato sha256=<HMAC_HEX> é usado nas duas direções. A signingKey é obrigatória ao ativar o canal.
  • Entrada (seu app → Jelou): você deve gerar a assinatura ao chamar POST /v1/custom-channel/:botId e POST /v1/custom-channel/:botId/status.
  • Saída (Jelou → seu webhook): você deve verificar a assinatura de cada entrega no seu webhookUrl antes de processar o payload.
A assinatura é independente de credentials.auth (api_key / bearer / basic).

Gerar assinatura em requisições de entrada

Assine o raw body exato que você envia (os mesmos bytes do body HTTP), não um objeto re-serializado diferente. Aplica-se a enviar interação e a consultar status.
Use a mesma string/buffer enviada na requisição. Re-serializar o JSON com ordem de chaves ou espaços diferentes quebra a verificação.

Verificar assinatura dos eventos recebidos no seu webhook

A Jelou assina o JSON stringificado do payload de saída (JSON.stringify do envelope completo).
Leia o body como string raw (antes de fazer o parse) e compare com o header X-Jelou-Signature.
Uma entrega repetida leva a mesma assinatura, porque o body assinado é idêntico. Então rejeitar requisições cuja assinatura já viu descartaria novas tentativas legítimas em silêncio — deduplique pelo message.messageId autenticado. O header X-Jelou-Delivery-Attempt não é assinado e indica qual tentativa é, mas não prova nada: trate-o como campo de log, nunca como proteção anti-replay. Ver Entrega e novas tentativas.