В августе API Маркета снизил максимальный limit при получении остатков с 200 до 100, а значение по умолчанию — со 100 до 50. Превышение предела не вызывает ошибку валидации.

Что изменилось в методах остатков

В публикации от 5 августа Маркет описал обновление от 4 августа для получения остатков на уровне магазина и кабинета. Максимальный limit уменьшен с 200 до 100 записей, значение по умолчанию — со 100 до 50. Если клиент передаёт число больше 100, оно обрезается до 100 без ошибки валидации.

Изменение затронуло POST v2/campaigns/{campaignId}/offers/stocks и POST v3/businesses/{businessId}/offers/stocks. Тихое ограничение требует отдельного внимания: запрос может выглядеть успешным, хотя возвращает меньшую страницу, чем ожидает интеграция. Обновление относится к размеру ответа, а не к фактическому уменьшению товарного остатка.

Тихое ограничение сложнее заметить

Система, которая считает получение менее 200 строк признаком конца данных, после изменения может завершить выгрузку раньше времени. Внешне ошибки не будет: сервер ответил, JSON разобран, часть ассортимента получена. Проблема проявится позже в неполной сверке запасов.

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

Как проверить полный цикл

Тестовый каталог должен превышать 100 позиций, чтобы выгрузка действительно проходила несколько страниц. Следует проверить запрос без limit, с допустимым значением и с числом выше максимума. Во всех случаях итоговый набор должен соответствовать ожидаемым данным, если выполнен полный обход.

Отдельно важно выяснить, что делает система с товарами, не встретившимися в частичной выгрузке. Нельзя автоматически считать их остаток нулевым, если получение ещё не завершено. Такая ошибка способна скрыть доступные товары или исказить заказ на пополнение.