Webhooks

Recebi o mesmo evento duas vezes

Webhooks são entregues pelo menos uma vez. Veja como deduplicar com segurança.

É esperado. O LiveTP garante entrega pelo menos uma vez: se o seu endpoint processou o evento mas a resposta não chegou (timeout, queda de rede, reinício do processo), o evento é enviado de novo. Reenvios manuais também repetem o mesmo evento.

Como identificar duplicatas

O ID do evento (webhook-id e campo id) é o mesmo em todas as tentativas e reenvios. Guarde o par environment + id em um armazenamento persistente com restrição de unicidade:

CREATE TABLE livetp_events (
  environment text NOT NULL,
  id text NOT NULL,
  received_at timestamptz NOT NULL DEFAULT now(),
  PRIMARY KEY (environment, id)
);

INSERT INTO livetp_events (environment, id)
VALUES ($1, $2)
ON CONFLICT DO NOTHING;

Se a inserção não afetou nenhuma linha, o evento já foi processado: responda 2xx e não repita a ação.

Dois eventos para uma única edição?

Uma mudança de status gera dois eventos diferentes, com IDs distintos e a mesma revisão: script.updated e script.status_changed. Assine apenas o que precisa. Para automações de status, script.status_changed com filtro costuma bastar.

Eventos fora de ordem

A ordem de chegada não é garantida. Use data.script.revision para descartar estados mais antigos do que o que você já aplicou.