Protocolo

Idempotência

A rede cai, o seu sistema repete, e a mensagem não pode sair duas vezes. Por isso as rotas que criam ou disparam alguma coisa exigem o cabeçalho Idempotency-Key.

  • Mande um valor único por operação (um UUID serve), até 255 caracteres. A referência marca as rotas que exigem.
  • A chave é reservada antes de a operação rodar e vale por chave de API: a mesma Idempotency-Key em outra chave de API é outra operação.
  • Repetir a mesma chave, com o mesmo corpo, em até 24 horas devolve a mesma resposta, com o cabeçalho Idempotent-Replayed: true. Nada é feito de novo.
  • A mesma chave com outro corpo ou em outra rota é idempotency_key_reused (422).
  • Se a primeira ainda está rodando, a repetição recebe idempotency_key_in_use (409): espere e repita.
  • Só o sucesso fica guardado. Se a operação falhou, a chave é solta, e repetir com ela tenta de novo.

PUT /v1/contacts/{external_id} não precisa da chave: mandar o mesmo contato duas vezes deixa o mesmo resultado. O envio de evento também é conferido pelo motor: o mesmo evento com a mesma chave sai uma vez.