Skip to Content
ConceitosIdempotência

Idempotência

Numa integração que cria empréstimos e move dinheiro, um retry após um timeout de rede não pode duplicar a operação. Para isso, os POST sensíveis exigem o header Idempotency-Key.

Como funciona

Você gera uma chave única (ex.: um UUID) por operação lógica e a envia no header. Se a mesma chave chegar de novo, a API retorna a resposta original sem reexecutar nada — seguro para reenviar quantas vezes precisar.

curl -X POST https://api.socinal.com.br/v1/emprestimos \ -H 'Authorization: Bearer SEU_TOKEN' \ -H 'Idempotency-Key: 7b3e2c10-4f5a-4c8d-9a1b-2e6f0a9c1d34' \ -H 'Content-Type: application/json' \ -d '{ ... }'

Na repetição, a resposta vem com o header X-Idempotency-Replayed: true.

Quais endpoints exigem

EndpointPor quê
POST /v1/emprestimosNão duplicar emissão de CCB
POST /v1/emprestimos/{id}/documentosNão reprocessar pacote assinado
POST /v1/emprestimos/{id}/averbacaoNão averbar em duplicidade
POST /v1/emprestimos/{id}/desembolsoNão duplicar PIX
POST /v1/emprestimos/{id}/cancelamentoNão cancelar em duplicidade

Chamar esses endpoints sem o header resulta em 400 IDEMPOTENCY_KEY_OBRIGATORIA.

Uma chave por operação lógica. Reutilizar a mesma chave para uma operação diferente devolve a resposta antiga. Gere uma chave nova para cada nova intenção.

Boas práticas

  • Use um UUID v4 por tentativa de operação e persista-o do seu lado antes de chamar — assim o retry reusa a mesma chave.
  • A janela de deduplicação tem TTL (≈24h). Retries dentro desse período são seguros; depois disso, a chave pode não estar mais em cache.
  • Combine idempotência com webhooks: mesmo que sua chamada dê timeout, o evento assíncrono confirma o resultado real.