Skip to main content
Idempotência é a propriedade que garante que realizar a mesma operação múltiplas vezes produz o mesmo resultado que realizá-la uma única vez. Na Ticto API, isso é essencial para lidar com falhas de rede: se uma requisição POST não receber resposta (timeout, queda de conexão, etc.), você pode reenviá-la com segurança usando a mesma chave, sem risco de criar produtos ou ofertas duplicados na sua conta.

Como funciona

Toda requisição POST para a Ticto API exige o header Idempotency-Key contendo um UUID v4. O comportamento é o seguinte:
  • Na primeira chamada com uma chave, a API processa a requisição normalmente e armazena a resposta vinculada àquela chave.
  • Em chamadas subsequentes com a mesma chave, a API devolve exatamente a mesma resposta da primeira chamada (o mesmo status, 201 no caso de criação), acrescida do header Idempotent-Replay: true, sem reprocessar a operação. Não é um erro.
  • O escopo da chave é por token: chaves de outros produtores não interferem nas suas.

Exemplo de requisição com Idempotency-Key

Replay: reenvio com a mesma chave

Quando a mesma Idempotency-Key é reenviada, a API não reprocessa a operação: ela devolve a resposta armazenada da primeira chamada, com o mesmo status e o mesmo corpo, apenas acrescentando o header Idempotent-Replay: true. Um POST de criação replayado responde 201 com o recurso original, não um erro.
Detecte o replay pela presença do header Idempotent-Replay: true e trate a resposta como se fosse a original: o recurso já existe e nada novo foi criado.
Use um UUID único por operação lógica. Reutilizar a mesma chave para uma requisição diferente faz a API devolver a resposta armazenada da operação original, não a da nova, sem processá-la. Nunca reaproveite a chave entre recursos distintos.

Boas práticas

  • Gere UUIDs v4 aleatórios para cada nova operação. Não use identificadores previsíveis ou sequenciais.
  • Armazene a chave junto com a operação em sua base de dados. Assim, em caso de falha, você pode recuperar a chave original para o retry.
  • Em retries, use a mesma chave da tentativa original, que é exatamente o que garante a idempotência.
  • Não reutilize chaves entre recursos diferentes: uma chave usada para criar um produto não deve ser reaproveitada para criar uma oferta.

Gerando UUIDs