Throttling

Para ter acesso ao ambiente de produção é necessário realizar o tratamento do Throttling na sua aplicação.

O que significa?

O Mercos aplica um limite global de requisições por conta, considerando as chamadas realizadas à API independentemente da entidade ou rota acessada. Esse controle evita sobrecarga do sistema e garante o processamento adequado das requisições.

Na prática

O mecanismo de throttling ocorre quando você tenta enviar uma requisição e recebe um status_code 429, com o seguinte retorno no body:

Exemplo de resposta. Os valores apresentados são ilustrativos e podem variar a cada resposta 429.

{
   "tempo_ate_permitir_novamente": 5,
   "limite_de_requisicoes": 1
}

Ao receber um erro 429, sua aplicação deve:

  • Ler o campo tempo_ate_permitir_novamente no body da resposta.
  • Aguardar o tempo informado no campo tempo_ate_permitir_novamente, em segundos.
  • Somente após esse período, retomar o envio das requisições.
  • Repetir esse processo a cada novo erro 429, sempre utilizando o valor retornado na resposta mais recente.

O tempo de espera é dinâmico e deve ser obtido a cada resposta 429 por meio do campo tempo_ate_permitir_novamente. Esse valor pode variar entre as requisições e deve ser sempre respeitado. A aplicação não deve utilizar um tempo de espera fixo ou previamente definido.


⚠️

Importante

Esse controle deve ser aplicado a todas as rotas, pois o limite é global e contabilizado por conta, independentemente da entidade requisitada. Ou seja, qualquer requisição realizada pela conta será contabilizada no limite, independentemente da rota ou entidade acessada.

O campo limite_de_requisicoes, presente no corpo da resposta com erro 429, indica a quantidade máxima de requisições permitida dentro do intervalo de tempo definido. Esse valor deve ser considerado no controle das requisições da aplicação, mas não substitui a tratativa dinâmica do erro 429: sempre que um 429 for recebido, a aplicação deve utilizar o valor mais recente de tempo_ate_permitir_novamente para determinar o tempo de espera antes de retomar o envio.