Компонент: Ozon Seller API Integration
Версия: 2.0
Дата: Февраль 2026
Заменяет: adolf_logistic_2_wb_integration_v1_0.md
2.1 Обзор интеграции
Назначение
Компонент Ozon Integration обеспечивает взаимодействие модуля Logistic с Ozon Seller API для получения данных об остатках по кластерам, аналитике продаж, оборачиваемости и FBO-заказах.Используемые API
| Группа | Base URL | Назначение |
|---|---|---|
| Ozon Seller API | https://api-seller.ozon.ru | Все методы (единый URL) |
Документация Ozon
Официальная документация: docs.ozon.ru/api/seller2.2 Авторизация
Формат запроса
Ozon использует двухпараметрическую авторизацию через HTTP-заголовки:| Заголовок | Описание |
|---|---|
Client-Id | Числовой идентификатор клиента (seller) |
Api-Key | API-ключ, генерируется в ЛК продавца |
Получение ключей: Личный кабинет продавца → Настройки → API-ключи (seller.ozon.ru/app/settings/api-keys)
Конфигурация
2.3 Endpoints
2.3.1 Остатки на складах Ozon
Endpoint:POST /v2/analytics/stock_on_warehouses
Назначение: Отчёт по остаткам и движению товаров на складах Ozon (FBO)
Rate Limit: Базовый (без Premium — ограничения)
Пример запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| limit | integer | ❌ | Количество записей (макс. 1000) |
| offset | integer | ❌ | Смещение для пагинации |
| warehouse_type | string | ❌ | Тип склада: ALL, EXPRESS, NOT_EXPRESS |
| Поле | Тип | Описание |
|---|---|---|
| sku | integer | SKU товара в системе Ozon |
| item_code | string | Артикул продавца (offer_id) |
| item_name | string | Наименование товара |
| free_to_sell_amount | integer | Доступно для продажи |
| promised_amount | integer | Товары в пути / зарезервированные |
| reserved_amount | integer | Зарезервировано под заказы |
| warehouse_name | string | Название кластера Ozon |
2.3.2 Оборачиваемость товара
Endpoint:POST /v1/analytics/turnover/stocks
Назначение: Оборачиваемость товара, количество дней до окончания остатка
Пример запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| sku | integer[] | ❌ | Список SKU (фильтр) |
| limit | integer | ❌ | Лимит записей |
| offset | integer | ❌ | Смещение |
| Поле | Тип | Описание |
|---|---|---|
| sku | integer | SKU товара |
| offer_id | string | Артикул продавца |
| days_without_stock_percent | float | % дней без остатка за период |
| stock_coverage_days | integer | На сколько дней хватит текущего остатка |
| avg_daily_demand | float | Среднесуточный спрос (шт) |
| current_stock | integer | Текущий остаток |
| in_transit | integer | В пути на склад |
| turnover_days | float | Оборачиваемость (дни) |
2.3.3 Аналитика продаж
Endpoint:POST /v1/analytics/data
Назначение: Агрегированная аналитика продаж: воронка, ABC, среднесуточные показатели
Пример запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| date_from | string | ✅ | Начало периода (RFC3339) |
| date_to | string | ✅ | Конец периода (RFC3339) |
| metrics | string[] | ✅ | Список метрик |
| dimension | string[] | ✅ | Измерения: sku, day, category |
| filters | object[] | ❌ | Фильтры |
| sort | object[] | ❌ | Сортировка |
| limit | integer | ❌ | Лимит (макс. 1000) |
| offset | integer | ❌ | Смещение |
| Метрика | Описание |
|---|---|
revenue | Выручка (₽) |
ordered_units | Заказано (шт) |
delivered_units | Доставлено (шт) |
returns | Возвраты (шт) |
cancellations | Отмены (шт) |
session_view | Просмотры карточки |
conv_tocart_pdp | Конверсия в корзину |
2.3.4 Остатки по товарам
Endpoint:POST /v4/product/info/stocks
Назначение: Текущие остатки по товарам (FBO + FBS), агрегированные
Пример запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| filter.offer_id | string[] | ❌ | Фильтр по артикулам |
| filter.product_id | integer[] | ❌ | Фильтр по product_id |
| filter.visibility | string | ❌ | ALL, VISIBLE, INVISIBLE, EMPTY_STOCK |
| last_id | string | ❌ | Курсор пагинации |
| limit | integer | ❌ | Лимит (макс. 1000) |
2.3.5 FBO-заказы
Endpoint:POST /v2/posting/fbo/list
Назначение: Список FBO-отправлений для анализа паттернов продаж
Пример запроса:
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
| dir | string | ❌ | ASC / DESC |
| filter.since | string | ✅ | Начало периода (RFC3339) |
| filter.to | string | ✅ | Конец периода (RFC3339) |
| filter.status | string | ❌ | Статус отправления |
| limit | integer | ❌ | Лимит (макс. 1000) |
| offset | integer | ❌ | Смещение |
| with.analytics_data | boolean | ❌ | Включить аналитические данные |
| Статус | Описание |
|---|---|
awaiting_packaging | Ожидает упаковки |
awaiting_deliver | Ожидает доставки |
delivering | Доставляется |
delivered | Доставлен |
cancelled | Отменён |
Важно: Поляanalytics_data.cityиanalytics_data.regionбыли deprecated в Ноябре 2024. Их доступность может варьироваться. Основной идентификатор географии —warehouse_name(кластер).
2.3.6 Список складов продавца
Endpoint:POST /v1/warehouse/list
Назначение: Справочник складов/кластеров Ozon, доступных продавцу
Пример запроса:
2.3.7 Отчёт по складским остаткам
Endpoint:POST /v1/report/warehouse/stock
Назначение: Асинхронная генерация отчёта по складским остаткам (CSV)
Пример запроса:
Асинхронный endpoint: Возвращаетcodeдля последующей проверки статуса и скачивания черезPOST /v1/report/info.
2.4 Архитектура адаптера
Диаграмма компонентов
Структура модуля
2.5 Rate Limiting
Лимиты Ozon API
Ozon применяет rate limiting на уровне аккаунта. Лимиты зависят от наличия Premium-подписки:| Подписка | Базовый лимит | Примечание |
|---|---|---|
| Без Premium | ~5 RPS | Ограничения на аналитические методы |
| Premium | Расширенный | Более высокие лимиты |
Лимиты по endpoints
| Endpoint | Примерный лимит | Стратегия |
|---|---|---|
/v2/analytics/stock_on_warehouses | 5/мин (без Premium) | Кэширование 25 мин |
/v1/analytics/turnover/stocks | 5/мин | Ежедневная синхронизация |
/v1/analytics/data | 10/мин | Ежедневная синхронизация |
/v4/product/info/stocks | 50/мин | Кэширование 25 мин |
/v2/posting/fbo/list | 50/мин | Инкрементальная загрузка |
/v1/warehouse/list | 50/мин | Кэширование 7 дней |
Реализация Rate Limiter
2.6 Пагинация
Ozon использует два типа пагинации:Offset-based (большинство endpoints)
Cursor-based (/v4/product/info/stocks)
2.7 Обработка ошибок
Коды ошибок Ozon API
| HTTP Code | Описание | Действие |
|---|---|---|
| 200 | Успех | Обработать ответ |
| 400 | Неверный запрос | Логировать, не повторять |
| 401 | Client-Id / Api-Key невалидны | Алерт администратору |
| 403 | Нет доступа (Premium required) | Алерт, fallback на альтернативный endpoint |
| 429 | Too Many Requests | Ждать и повторить |
| 500 | Ошибка сервера Ozon | Retry с backoff |
| 503 | Сервис недоступен | Retry с backoff |
Retry стратегия
Кастомные исключения
2.8 Кэширование
TTL по типам данных
| Данные | TTL | Обоснование |
|---|---|---|
| Остатки по кластерам | 25 мин | Частые изменения, синхронизация каждые 30 мин |
| Оборачиваемость | 1 час | Агрегированные данные |
| Аналитика продаж | 1 час | Ежедневная детализация |
| Остатки по товарам | 25 мин | Частые изменения |
| FBO-заказы | 30 мин | Новые заказы |
| Список кластеров | 7 дней | Стабильный справочник |
Реализация кэша
2.9 Pydantic модели
Модель остатков по кластерам
Модель оборачиваемости
Модель FBO-заказа
Модель склада/кластера
2.10 Endpoint Handlers
StockWarehouseAPI
2.11 Синхронизация данных
Стратегия синхронизации
Маппинг Ozon SKU ↔ Внутренний артикул
Ozon используетsku (числовой) и offer_id (строковый артикул продавца). Маппинг:
| Поле Ozon | Поле ADOLF | Описание |
|---|---|---|
sku | ozon_sku | Числовой SKU в системе Ozon |
offer_id / item_code | article | Артикул продавца (совпадает с 1С) |
product_id | ozon_product_id | ID товара Ozon |
Связь с 1С: Полеoffer_id(Ozon) =Артикул(1С). Это ключевое поле для маппинга между двумя источниками данных.
2.12 Мониторинг и логирование
Метрики
| Метрика | Тип | Описание |
|---|---|---|
ozon_api_requests_total | Counter | Всего запросов к Ozon API |
ozon_api_errors_total | Counter | Ошибки по типам |
ozon_api_latency_seconds | Histogram | Время ответа API |
ozon_api_rate_limit_hits | Counter | Срабатывания rate limit |
ozon_sync_duration_seconds | Histogram | Время синхронизации |
ozon_sync_records_count | Gauge | Количество записей |
Структура логов
2.13 Тестирование
Mock-сервер для тестов
2.14 Промпт для Claude Code
Для реализации Ozon API адаптера:2.15 Ссылки
| Ресурс | URL |
|---|---|
| Ozon Seller API Документация | https://docs.ozon.ru/api/seller/ |
| Ozon for Dev (сообщество) | https://dev.ozon.ru/ |
| Генерация API-ключей | https://seller.ozon.ru/app/settings/api-keys |
| Postman Collection | https://www.postman.com/googlesheets/ozon-seller-api |
Документ подготовлен: Февраль 2026
Версия: 2.0
Статус: Черновик
Заменяет: adolf_logistic_2_wb_integration_v1_0.md