Skip to content

RedkinSP/Ozon-API

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Аналитический модуль тестирования и интеграции с Ozon API

Данный проект представляет собой интерактивный аналитический инструмент на базе Jupyter Lab, предназначенный для интеграции с Ozon Seller API, выгрузки ключевых коммерческих метрик и глубокой постобработки финансовых данных. Инструмент автоматизирует сбор информации о товарах, остатках, оборачиваемости и продажах, а также детализацию и пропорциональное распределение сборных финансовых транзакций по конкретным SKU.

Стек

Язык программирования: Python

Библиотеки для работы с данными: Pandas, NumPy

Интеграция с API: Requests, Python-dotenv (безопасное хранение ключей в .env)

Среда разработки: Jupyter Notebook / Jupyter Lab

Архитектура и структура данных

Проект ориентирован на работу с конкретными аккаунтами (в коде используется профиль "Michael"). При запуске скрипт автоматически создает изолированную структуру папок и имена файлов для экспорта.

Реализованные эндпоинты Ozon API

Модуль последовательно тестирует и использует следующие методы Ozon API: Реализованные эндпоинты Ozon API

Метод API: /v3/product/list

Функция в коде: get_products_list Назначение: Получение базового списка товаров (связка offer_id → product_id).

Метод API: /v4/product/info/stocks

Функция в коде: get_stocks_by_product_id Назначение: Выгрузка остатков товаров на складах FBO с получением SKU.

Метод API: /v1/analytics/stocks

Функция в коде: get_analytics_stocks Назначение: Детальная аналитика по остаткам в разрезе складов и кластеров.

Метод API: /v1/analytics/turnover/stocks

Функция в коде: get_analytics_turnover Назнажение: Получение метрик оборачиваемости и дефицита товаров.

Метод API: /v3/product/info/list

Функция в коде: get_product_info Назначение: Извлечение расширенной информации о ценах, старых ценах и квантах.

Метод API: /v1/report/products/create и /v1/report/info

Функция в коде: download_products_report_to_df Назначение: Асинхронное создание, проверка готовности и скачивание CSV-отчета по товарам.

Метод API: /v1/analytics/data

Функция в коде: get_analytics / _today Назначение: Сбор комплексной аналитики (просмотры, переходы в корзину, конверсии).

Метод API: /v3/finance/transaction/list

Функция в коде: get_transactions Назначение: Получение полной финансовой ленты (начисления, комиссии, эквайринг).

Модуль автоматизации рекламной аналитики Ozon Performance API

Инструмент предназначен для интеграции с рекламным API Ozon (https://api-performance.ozon.ru). Он автоматизирует аутентификацию, сбор данных обо всех типах рекламных кампаний селлера, загрузку детальной ежедневной статистики и синхронный/асинхронный экспорт отчетов по расходам. Модуль позволяет осуществлять сквозной контроль эффективности маркетинга в разрезе конкретных SKU, кампаний и дат.

Архитектура и реализованные методы API

В модуле настроен базовый клиент для выполнения запросов с автоматическим менеджментом сессии и авторизации. Ниже представлены используемые методы API Ozon Performance:

Метод API: /api/client/token

Функция в коде: get_token
Назначение: Реализация протокола OAuth2 (grant_type: "client_credentials"). Функция автоматически запрашивает новый токен доступа или обновляет текущий, если до истечения его срока действия осталось менее 60 секунд.

Метод API: /api/client/campaign

Функция в коде: fetch_campaigns
Назначение: Постраничный (пагинация по 100 позиций) сбор данных обо всех рекламных кампаниях. Позволяет фильтровать кампании по их статусу (например, только активные — CAMPAIGN_STATE_RUNNING).

Метод API: /api/client/campaign/{campaign_id}/objects

Функция в коде: get_campaign_objects
Назначение: Получение списка уникальных идентификаторов (SKU/ID товаров), привязанных к конкретной рекламной кампании.

Метод API: POST /api/client/statistics/json и GET /api/client/statistics/{report_uuid}

Функция в коде: get_report_resilient / get_report_resilient_new
Назначение: Асинхронный заказ и скачивание глубоких аналитических отчетов по рекламе в формате JSON.

Метод API: /api/client/statistics/expense/json

Функция в коде: get_expense_report
Назначение: Синхронный сбор данных исключительно о финансовых расходах на рекламу за выбранный период времени.

Ключевые аналитические и технические решения

1. Отказоустойчивый асинхронный сбор отчетов (Resilient Polling)

Поскольку генерация рекламных отчетов на стороне Ozon происходит асинхронно и может занимать длительное время, в функциях get_report_resilient реализован продвинутый механизм контроля сессии: Файл-чекпоинт (ozon_last_uuid.txt): Утилита сохраняет уникальный UUID заказанного отчета на диск. Если скрипт прервется, при перезапуске он сначала проверит файл, найдет незавершенный отчет и продолжит опрашивать Ozon, не создавая дублирующих запросов и экономя лимиты API. Политика ожидания: Скрипт совершает до 30 попыток проверки статуса ответа (state == "OK") с шагом в 15 секунд.
Специфика S3 облака: Реализована корректная обработка прямых S3-ссылок Ozon для скачивания готовых файлов, где принудительно отключаются заголовки авторизации API, которые вызывают ошибку доступа на серверах хранения данных Amazon/S3.

2. Мультиформатный парсинг JSON-структур

OzonAPI Performance выдает данные в разной структуре в зависимости от параметров группировки и типов кампаний. Код содержит встроенный парсер трех конфигураций ответов: Структура с явным списком рекламных кампаний ({"campaigns": [...]}). Словарь, где ID кампаний выступают в роли корневых ключей. Плоский классический список строк. Скрипт автоматически распаковывает любую из этих вложенностей, обогащает каждую строку метаданными (ID и название кампании) и собирает плоский датафрейм Pandas.

3. Нормализация коммерческих метрик

Модуль выполняет автоматическую чистку текстовых данных Ozon, переводя финансовые показатели из строкового представления с запятыми ("1053,06") в классический вещественный тип float (1053.06). Нормализации подвергаются ключевые e-commerce метрики: moneySpent — затраченный бюджет. views и clicks — показы и переходы. orders и ordersMoney — количество заказов с рекламы и оборот. drr (ДРР) — доля рекламных расходов. product_gmv — общий оборот товара.

Добавьте ваши ключи доступа в файл .env

Фрагмент кода

OZON_CLIENT_ID="ваш_client_id" OZON_API_KEY="ваш_api_key"

Запустите Jupyter Lab и последовательно выполните ячейки ноутбука.

About

Ozon API and Performance Ozon API testing for integrations

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors