Ограничения для запросов
Ограничения для запросов к API Яндекс Маркета для продавцов делятся на следующие типы:
-
глобальные ограничения (ограничения на количество одновременных запросов);
-
ресурсные ограничения (ограничения на количество запросов к одному и тому же ресурсу за продолжительный период времени, например, за сутки);
-
функциональные ограничения (ограничения на количество передаваемых или возвращаемых данных в одном запросе).
Глобальные ограничения
Действуют на количество одновременных (параллельных) запросов. Разрешается выполнять не более четырёх одновременных запросов.
Лимит применяется к конкретной сущности в зависимости от URL запроса:
- для запросов вида
/campaigns/{campaignId}/...— к магазину (campaignId); - для запросов вида
/businesses/{businessId}/...— к кабинету (businessId); - для остальных запросов:
- при авторизации по Api-Key-токену — к кабинету (businessId), в котором был создан токен;
- при авторизации по OAuth-токену — к сотруднику (userId), на имя которого был выпущен токен.
При превышении ограничения сервер возвращает специальный HTTP-код 420 Enhance Your Calm с поясняющим сообщением:
Hit rate limit of 4 parallel requests for campaignId 12345
Ресурсные ограничения
Действуют на объем запросов к одному и тому же ресурсу API за продолжительный период времени с одного логина.
Для разных методов ограничения действуют либо на количество запросов, либо на суммарный объем передаваемых или возвращаемых данных. Конкретный тип ограничения и его значение указаны на страницах соответствующих методов.
В каждом ответе на запрос сервер возвращает специальные HTTP-заголовки, в которых указывается состояние ресурсного ограничения для сущности:
-
заголовок
X-RateLimit-Resource-Limitсодержит числовое значение ограничения; -
заголовок
X-RateLimit-Resource-Untilсодержит дату, до которой действует ограничение, в форматеRFC822(например,Thu, 10 Jul 2018 00:42:42 GMT); -
заголовок
X-RateLimit-Resource-Remainingсодержит числовое значение объема запросов к данному ресурсу, оставшихся до превышения ограничения.
Уменьшение ресурсного лимита
Ресурсный лимит уменьшается на стоимость запроса. Стоимость зависит от типа ограничения:
- если ограничение по количеству запросов — стоимость равна 1 (каждый запрос уменьшает лимит на единицу);
- если ограничение по объему данных — стоимость равна размеру коллекции в запросе или ответе.
Правила уменьшения:
- при успешных ответах (2xx) ресурсный лимит уменьшается;
- при ошибках клиента (4xx, например
400 Bad Requestили404 Not Found) ресурсный лимит также уменьшается; - при ошибках со стороны Маркета (5xx, включая 500) ресурсный лимит не уменьшается.
При превышении ограничения сервер отдает специальный HTTP-код 420 Enhance Your Calm с поясняющим сообщением, например:
Hit rate limit of 10000 points per 1 day for resource /regions/{regionId}.json for userId 67890
Функциональные ограничения
Действуют на количество передаваемых или возвращаемых данных для ресурса за один запрос. Ограничения индивидуальны для каждого ресурса, их значения указаны в описаниях самих методов.
Кроме того, действует общее для всех запросов ограничение: максимальный объем тела запроса составляет 512 КБ. Если объем получается больше, разбейте запрос на несколько.
При превышении ограничения сервер отдает специальный HTTP-код 400 Bad Request с поясняющим сообщением.