Ограничения для запросов

Ограничения для запросов к партнерскому API Яндекс.Маркета делятся на следующие типы:
  • глобальные ограничения (ограничения на количество одновременных запросов);

  • ресурсные ограничения (ограничения на количество запросов к одному и тому же ресурсу за продолжительный период времени, например, за сутки);

  • функциональные ограничения (ограничения на количество передаваемых или возвращаемых данных в одном запросе).

Глобальные ограничения действуют на количество одновременных (параллельных) запросов в рамках одного магазина (при запросе к ресурсу определенного магазина, например, GET /campaigns/{campaignId}/offers) или в рамках одного партнера (при запросе к ресурсу вне контекста магазина, например, GET /campaigns или GET /campaigns/by_login/{login}). Разрешается выполнять не более двух одновременных запросов.

При превышении ограничения сервер возвращает специальный HTTP-код 420 Enhance Your Calm с поясняющим сообщением:

Hit rate limit of 2 parallel requests

Ресурсные ограничения действуют на объем запросов к одному и тому же ресурсу партнерского API за продолжительный период времени для одного и того же магазина (при запросе к ресурсу определенного магазина, например, GET /campaigns/{campaignId}/offers) или от одного и того же партнера (при запросе к ресурсу вне контекста магазина, например, GET /campaigns или GET /campaigns/by_login/{login}). Под объемом запросов понимается количество запросов и количество передаваемых или возвращаемых данных за один запрос.

Для большинства ресурсов ограничения действуют только на количество запросов. Эти ограничения индивидуальны для каждого ресурса, их значения указаны в описаниях каждой группы методов.

Для остальных ресурсов ограничения действуют на суммарное количество передаваемых или возвращаемых данных в запросах к одному и тому же ресурсу. Эти ограничения рассчитываются индивидуально для каждого магазина или партнера. Критерии расчета ограничений указаны в описаниях таких ресурсов.

Некоторые ресурсы объединены в группы, для которых действует общее ресурсное ограничение. В этом случае ограничения действуют на объем запросов к любому из ресурсов группы за продолжительный период времени.

Примечание.

Цены на предложения и ассортимент Яндекс.Маркета обновляются примерно раз в 3-6 часов. Значения ставок обновляются в течение 3 часов при идентификации товаров по названию и в течение 30 минут при идентификации товаров по ID. Поэтому не имеет смысла выполнять запросы, возвращающие ассортимент или информацию о моделях по одним и тем же предложениям, или устанавливающие ставки, чаще чем раз в час или раз в 30 минут соответственно.

Индивидуальные ограничения для этих запросов рассчитываются таким образом, чтобы у магазина была возможность запрашивать информацию или устанавливать ставки для всех своих товаров с интервалом в час.

В каждом ответе на запрос сервер возвращает специальные HTTP-заголовки, в которых указывается состояние ресурсного ограничения для магазина или партнера:

  • заголовок X-RateLimit-Resource-Limit содержит числовое значение ограничения;

  • заголовок X-RateLimit-Resource-Until содержит дату, до которой действует ограничение, в формате RFC822 (например, Thu, 10 Jul 2018 00:42:42 GMT);

  • заголовок X-RateLimit-Resource-Remaining содержит числовое значение объема запросов к данному ресурсу, оставшихся до превышения ограничения.

При превышении ограничения сервер отдает специальный HTTP-код 420 Enhance Your Calm с поясняющим сообщением, например:

Hit rate limit of 10 000 points per 1 day for resource /regions/{regionId}.json

Функциональные ограничения действуют на количество передаваемых или возвращаемых данных для ресурса за один запрос. Ограничения индивидуальны для каждого ресурса, их значения указаны в описаниях каждой группы методов, а также в описаниях самих методов.

При превышении ограничения сервер отдает специальный HTTP-код 400 Bad Request с поясняющим сообщением.