Pular para o conteúdo principal

Documentation Index

Fetch the complete documentation index at: https://docs.jelou.ai/llms.txt

Use this file to discover all available pages before exploring further.

O header X-Jelou-Signature com formato sha256=HMAC_HEX_DIGEST é utilizado em ambas as direções:
  • Verificação: Ao receber eventos do Jelou em seu webhook, você deve verificar a assinatura para garantir a integridade.
  • Geração: Ao enviar mensagens ao webhook do Jelou (incoming_message), você deve gerar e enviar a assinatura.

Verificação de eventos recebidos do Jelou

Todos os eventos enviados pelo Jelou ao webhook incluem o header X-Jelou-Signature. Recomenda-se sempre verificar a assinatura.
const crypto = require("crypto");

function verifySignature(payload, signature, signingSecret) {
    const expectedSignature = crypto
        .createHmac("sha256", signingSecret)
        .update(JSON.stringify(payload))
        .digest("hex");

    const expected = `sha256=${expectedSignature}`;

    return (
        signature.length === expected.length &&
        crypto.timingSafeEqual(Buffer.from(signature), Buffer.from(expected))
    );
}

Geração de assinatura para enviar ao Jelou

Quando o provedor externo envia uma mensagem ao usuário final via POST /v1/external-support/webhook, deve incluir o header X-Jelou-Signature com a assinatura HMAC-SHA256 do body.
O body assinado deve ser a mesma string exata enviada na requisição. Serialize o payload com JSON.stringify() uma única vez e use essa mesma string tanto para gerar a assinatura quanto para o body da requisição.
const crypto = require("crypto");

const payload = { /* seu payload aqui */ };
const signingSecret = "seu_signing_secret";

const body = JSON.stringify(payload);
const signature = crypto
    .createHmac("sha256", signingSecret)
    .update(body)
    .digest("hex");

console.log("Body (usar como raw body):");
console.log(body);
console.log("\nX-Jelou-Signature:", `sha256=${signature}`);

Headers de autenticação enviados pelo Jelou

De acordo com o authType configurado na integração, o Jelou enviará o header correspondente ao invocar seu webhook:
authTypeHeader enviado
bearerAuthorization: Bearer {{token}}
api_keyX-API-Key: {{api_key}}
basicAuthorization: Basic {{base64_credentials}}
no_authSem header de autenticação