Chave de idempotência (Idempotency-key)

O mecanismo de chave de idempotência visa garantir que uma operação seja executada uma única vez, independente da quantidade de requisições realizadas dentro de um período de tempo específico.

Quando esse tempo houver expirado, qualquer requisição que utilize a mesma chave resultará em uma nova execução.

📘

Nota

O período de duração da chave de idempotência poderá variar. Para conhecer o tempo de expiração dos endpoints que fazem uso da chave de idempotência, verifique a documentação específica de cada endpoint.

Chave de idempotência no Bankly

Alguns endpoints do Bankly utilizam a chave de idempotência para prevenir a ocorrência de requisições duplicadas.

Por exemplo, a API de criação de contas possibilita que uma mesma pessoa, física ou jurídica, crie mais de uma conta (Multicontas).

Portanto, um parceiro poderia, acidentalmente, enviar mais de uma requisição para um documento sem a intenção de criar uma conta extra e, mesmo assim, criá-la. O uso da chave de idempotência previne esse tipo de erro.

Funcionamento

A chave de idempotência deve ser enviada por meio do cabeçalho adicional Idempotency-key nas requisições dos endpoints que utilizam esse mecanismo.

Atualmente as APIs do Bankly aceitam como chave de idempotência uma string no formato UUID v4 com 128 bits.

📘

Nota

Cabe ao parceiro Bankly a geração e garantia de unicidade da chave.

O Bankly armazena as requisições (request e response) de sucesso (status code 2XX) que utilizam a chave de idempotência. Desse modo, ao reutilizar a mesma chave para uma nova requisição dentro de um período válido, o resultado retornado será idêntico ao da primeira requisição.

Caso seja realizada uma requisição com uma chave de idempotência ainda ativa, porém com qualquer informação divergente da primeira requisição, as APIs poderão retornar o erro 400 - REQUEST_ERROR.

📘

Nota

As informações divergentes podem variar de acordo com cada API, podendo ser o corpo, cabeçalho ou quaisquer outros parâmetros da requisição.

Endpoints

Confira a seguir os endpoints que utilizam a chave de idempotência (Idempotency-key) em seu header:

DescriçãoEndpointContextoObrigatório
Criação de conta para pessoa físicaPOST /customers/{documentNumber}/accountsAccountSomente para parceiros que utilizam a funcionalidade de Multicontas.
Criação de conta para pessoa jurídicaPOST /business/{documentNumber}/accountsAccountSomente para parceiros que utilizam a funcionalidade de Multicontas.
Criação de conta pocketPOST /accounts/{accountNumber}/pocketsPocketSim
Depósito em uma conta pocketPOST /pockets/{pocketNumber}/transactions/savingsPocketSim
Resgate de um valor da conta pocketPOST /pockets/{pocketNumber}/transactions/redeemsPocketSim
Transferência via TEDPOST /fund-transfersTEDNão

Erros

Na utilização da chave de idempotência, poderão ocorrer os seguintes erros:

Status codeCódigoMensagemDescrição
400IDEMPOTENCY_KEY_NOT_FOUNDIdempotency-key header not found in request.A requisição não apresenta o Idempotency-key em seu header. Esse erro é retornado apenas em endpoints para os quais a chave de idempotência é obrigatória.
400INVALID_IDEMPOTENCY_KEYIdempotency-key header is not a valid guid.O header Idempotency-key precisa ser enviado no formato Uuid/Guid.
400REQUEST_ERRORHash code is different from the one persisted with the same idempotency key and companykey.O valor do header Idempotency-key já foi utilizado em outra requisição. A requisição atual apresenta alguma divergência em relação aos parâmetros fornecidos na primeira requisição.