Autenticação
API key, timestamp e assinatura HMAC-SHA256 em todas as chamadas.
Toda chamada para /v1/integration/* leva três headers:
Prop
Type
Como assinar
- Serialize o body uma vez e guarde a string (
rawBody). - Monte
mensagem = timestamp + "." + rawBody. - Calcule
HMAC-SHA256(hmac_secret, mensagem)e converta para hex minúsculo. - Envie exatamente o mesmo
rawBodyque foi assinado.
Em GET (sem body) o rawBody é a string vazia, então a mensagem assinada é só timestamp..
import { createHmac } from 'node:crypto';
const body = JSON.stringify(event);
const timestamp = String(Math.floor(Date.now() / 1000));
const signature = createHmac('sha256', HMAC_SECRET).update(`${timestamp}.${body}`).digest('hex');Erros de autenticação
| HTTP | Mensagem | Causa comum |
|---|---|---|
| 401 | Headers de autenticação ausentes. | Faltou algum dos três headers |
| 401 | Timestamp fora da janela permitida. | Relógio do servidor da marca adiantado/atrasado, ou timestamp em milissegundos |
| 401 | NÃO AUTORIZADO. | API key errada, rotacionada ou marca inativa |
| 401 | ASSINATURA INVÁLIDA. | Body re-serializado depois de assinar, secret errado ou hex maiúsculo |
Não re-serialize o body
Frameworks HTTP que recebem um objeto e serializam por conta própria podem mudar espaços ou a ordem das chaves. Assine a mesma string que será enviada.