zt-partners · Integração

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

  1. Serialize o body uma vez e guarde a string (rawBody).
  2. Monte mensagem = timestamp + "." + rawBody.
  3. Calcule HMAC-SHA256(hmac_secret, mensagem) e converta para hex minúsculo.
  4. Envie exatamente o mesmo rawBody que 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

HTTPMensagemCausa comum
401Headers de autenticação ausentes.Faltou algum dos três headers
401Timestamp fora da janela permitida.Relógio do servidor da marca adiantado/atrasado, ou timestamp em milissegundos
401NÃO AUTORIZADO.API key errada, rotacionada ou marca inativa
401ASSINATURA 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.

On this page