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-Keyem 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.