Очевидный БАГ в API Ozon Marketplace (POST URL: "/v4/product/info/limit")
Что произошло? )
Мы хотим использовать данный API для получения и расчёта атрибута "Общий лимит товаров", как это отображается на странице "Добавить товары". Но в моем аккаунте результат не соответствует ожиданиям!
Проверка моего процесса:
- Отправляем запрос на API по адресу "/v4/product/info/limit", чтобы узнать общее количество товаров, которое можно загрузить. В ответе по умолчанию получаем:
{"total": {"limit": 1000}}
Выглядит хорошо и понятно.
- Затем мы отправляем запрос на API "/v3/product/list", чтобы получить все товары и рассчитать, сколько ещё можно загрузить. То есть: total_limit - all_products = (1000 - n)
Проблема в том, что Seller API не предоставляет атрибут "Общий лимит товаров" напрямую.
Если бы всё работало как надо, значение должно совпадать с отображаемым на дашборде Seller Central, на странице "Добавить товары" в блоке "Общий лимит товаров".
И что? )
Но у меня оно не совпадает! Например:
- Лимит: 1000
- Фактическое количество товаров: 508
- Значит, должно быть доступно: 492
Но в дашборде отображается: 278 Разница: 492 - 278 = 214
Как это произошло? )
Я выяснил, куда «исчезли» эти 214 единиц:
- Мы можем отправить POST-запрос на "/v3/product/list", указав фильтр "ARCHIVED", и получить список архивных товаров. Сейчас таких товаров 3761 — всё как ожидается.
- Затем мы отправляем запрос на внутренний XHR-эндпоинт:
POST https://seller.ozon.ru/api/get_quota
Payload: {"seller_id": "2616614"}
Этот запрос не относится к Seller API, а используется на стороне seller.ozon.ru. В ответе получаем:
{
"total": {
"archive_usage": "3547",
"black_list": false,
"frozen_archive": "0",
"limit": "1000",
"usage": "4269",
"white_list": false
}
}
Этот ответ похож на ответ из "/v4/product/info/limit", но тут есть интересный атрибут "archive_usage": 3547.
Обратите внимание:
- Мы насчитали 3761 архивных товаров через "/v3/product/list"
- А "archive_usage" показывает 3547
Разница: 3761 - 3547 = 214 — та самая разница, что и между расчётным и фактическим лимитом: 492 - 278 = 214
Вывод:
Похоже, что "archive_usage" "съедает" часть моего "Общий лимит товаров", и это значение не совпадает с количеством архивных товаров, полученным через API "/v3/product/list".
Это приводит к расхождению в итоговом лимите на загрузку товаров между:
- API "/v4/product/info/limit" (limit = 1000)
- и фактическим значением на странице "Добавить товары" (278)
Я предполагаю, что ошибка возникла в какой-то момент при архивации товаров, и система Ozon Marketplace неправильно обработала эти операции (возможно, из-за ошибки сервиса), и теперь они перманентно влияют на лимит.
Что мне нужно? )
он блокирует мне возможность загружать новые товары.
Когда количество архивированных товаров приближается к тысяче, вы можете столкнуться с этой проблемой. Администраторам сообщества, желающим воспроизвести ошибку, рекомендуется сравнить результат запроса к https://seller.ozon.ru/api/get_quota с результатом API /v3/product/list (с фильтром archive). Я не могу раскрыть здесь свой API-ключ и другие конфиденциальные данные.
