Требования и ограничения
Ограничения при работе с API
Ограничение частоты запросов — не более 10 запросов в секунду на контакт.
При количестве запросов более 10 rps, сервер ответит статусом — код 429 Too Many Requests
.
Повторите запрос через 100 мс, в случае повторного получения ответа 429 увеличивайте время ожидания в два раза (100 мс, 200 мс, 400мс и т.д.).
Ограничения при работе с конкретными эндпоинтами
PUT api.ati.su/v2/cargos/{guid}
Ограничение частоты запросов — не более 5000 запросов за 24 часа на контакт.
При достижении лимита, сервер ответит статусом 429 Too Many Requests
в течение 24 часов.
Требования к http запросам
С 1 июля 2022 года не гарантируется работоспособность интеграций, которые не удовлетворяют следующим требованиям
Передавать обязательные заголовки
Accept-Encoding
:gzip, deflate, br
. Ожидается, что приложение должно уметь принимать сжатый контент.User-Agent
:ati_integrator_<код в ATI.SU>
, например,ati_integrator_64357
Authorization
:Bearer {authorizationToken}
, кроме метода получения токенаContent-Type
:application/json
Accept
:application/json
илиtext/xml
Использовать https
(TLS 1.2 или TLS 1.3)
Поддержка схемы http
прекращается с 1 августа 2022 года
Поддержать автоматический редирект
В случае ответов сервера со статусами 301
и 302
, необходимо следовать редиректам по указанному в заголовке Location
адресу.
Делать retry на запросы, упавшие с ошибкой сокета
Симптомы: ошибки ECONNRESET(104)
и ENOTCONN (107)
Пример реализации на C#
private HttpClient _client = new HttpClient();
private async Task<T> DoHttpCall<T>(string url)
{
var tries = 3;
do
{
try
{
var response = await _client.GetAsync(url);
var result = await response.Content.ReadFromJsonAsync<T>();
return result;
}
catch (HttpRequestException)
{
}
tries--;
} while (tries > 0);
return default;
}