Общие endpoint-ы репрайсера

Информация из апи для товаров общая для всех репрайсеров

Changed on

Выгружает информацию с API по фильтрам настроек из выбранного репрайсера и пагинации

Общая ручка, не привязана к конкретному репрайсеру. Для корректной фильтрации/сортировки в теле запроса обязательна передача поля instrument (rrc или comp).

post/products-prices

Request

  • Base URL: https://api.mpspace.ru (the document declares no server; this is the origin it was published from)
  • URL: https://api.mpspace.ru/products-prices
  • Auth: none declared. Required headers: x-user-id, x-connect-id

Query parameters

limitinteger

Лимит товаров в ответе

offsetinteger

Сдвиг

blockstring

Headers

x-user-idinteger required

ID пользователя

x-connect-idinteger required

ID магазина

Request body

skusinteger[]

Фильтр по списку SKU (артикулу Ozon) товаров

product_idsinteger[]

Фильтр по списку product_id товаров

offer_idsstring[]

Фильтр по списку offer_id (артикулу продавца) товаров

namesstring[]

Фильтр по названию товара

brandsstring[]

Фильтр по брендам

catalog_filter_logic'or' | 'and' nullable

Логика для множественных значений в фильтрах names, brands, offer_ids.

  • or (по умолчанию) — товары, где поле содержит ЛЮБОЕ из указанных значений.
  • and — товары, где поле содержит ВСЕ указанные значения одновременно.
instrument'rrc' | 'comp' nullable

Инструмент, из которого пришёл запрос. Нужен, чтобы на общей ручке POST /products-prices выбрать таблицы истории и настроек.

  • rrc - sys.full_history_ozon, sys.control_price_ozon_v2
  • comp - sys.full_history_ozon_competitors, sys.article_settings_ozon_competitors

Обязателен на POST /products-prices, если используется фильтр history_status / history_comment / has_settings или сортировка по history_status / last_update и каких-либо иных (если такие будут появляться в схемах в случае неопределенности. На POST /v2/rrc/products-settings и POST /v2/comp/products-settings поле игнорируется: инструмент берётся из пути.

Тем же полем разделяются сохранённые наборы фильтров: последний применённый набор запоминается отдельно для rrc и для comp. Без инструмента набор не сохраняется и не восстанавливается.

history_status'info' | 'warning' | 'error' nullable

Текстовый статус работы последнего цикла:

  • info - репрайсер работает стабильно
  • warning - цена на сайте не соответствует цене на удержание, но репрайсер сможет установить нужную цену при возможности
  • error - невозможно изменить цену селлера, требуются действия пользователя

Таблица истории выбирается по instrument (на products-prices) или по пути ручки settings.

history_commentstring[] nullable

Фильтр по комментарию последней записи из истории (частичное совпадение без учёта регистра). Вернутся товары, комментарий которых совпал хотя бы с одним из значений списка.

Значения с ценами передаются шаблоном: числа заменены заглушками X, Y, Z, W, ... (по порядку появления), каждая заглушка совпадает с любым числом. Готовые шаблоны отдают ручки settings полем history_comment_options.

Сравнение идёт с комментарием в том виде, в котором его отдают ручки полной истории (GET /rrc/history_v3/... для rrc, история артикула конкурентов для comp), но без названий акций.

negative_profitboolean nullable

Фильтр по маржинальности.

  • true — только товары с отрицательной маржой в рублях.
  • Не установлено — без фильтрации.
is_archive0 | 1 nullable

Фильтр по флагу архивного товара из Ozon API (колонка is_archived таблицы sys.ozon_product_info_v4).

  • Не передан или 0 (по умолчанию) — только неархивные товары.
  • 1 — только архивные товары.
  • null — без фильтрации: вернутся и архивные, и неархивные.

Товары, по которым флаг ещё ни разу не проставлялся (NULL в БД), считаются неархивными.

only_with_stocksboolean nullable

Показывать только товары с остатками.

  • не задано — показываются все товары, включая без остатков: умолчание задаёт только порядок (сортировка по остаткам по убыванию) и ничего не скрывает;
  • true — только товары с остатками (применяется только если данные по остаткам собраны);
  • false — то же, что «не задано»: показать все товары.

Числовой фильтр api_filters.present перебивает это поле.

has_settings0 | 1 nullable

Фильтр по наличию сохраненных настроек в базе данных репрайсера.

  • 0 - только товары без настроек (дефолтные значения).
  • 1 - только товары с настройками.

Таблица настроек выбирается по instrument (на products-prices) или по пути ручки settings.

tagsinteger[]

Фильтр по списку ID тегов. Вернёт только те товары, которые привязаны хотя бы к одному из указанных тегов.

reset_filtersboolean

Забыть сохранённый набор фильтров и показать значения по умолчанию. Разовое действие: сам по себе не сохраняется.

Example request

{
  "skus": [
    12345678,
    87654321
  ],
  "product_ids": [
    12345678,
    87654321
  ],
  "offer_ids": [
    "offer-1",
    "offer-2"
  ],
  "names": [
    "катушка",
    "мочалка"
  ],
  "brands": [
    "kitty",
    "bunny"
  ],
  "catalog_filter_logic": "and",
  "settings_rrc": {
    "mode": "PRICE",
    "night_control": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "plan_fact_target": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "control_price": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "min_price_rrc": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "max_price_rrc": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "change_price_if_green_absent": 1,
    "region": 77,
    "working_schedule_status": true,
    "competitors_status": true
  },
  "settings_comp": {
    "comps_strategy_status": true,
    "min_price_comp": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "max_price_comp": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "comp_strat_lower_bound": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "region": 77,
    "has_competitors": true
  },
  "api_filters": {
    "price": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "old_price": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "marketing_seller_price": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "min_price": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "present": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "reserved": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "fbs_stocks": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "fbo_stocks": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "fbp_stocks": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "actions_count": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "discount_ozon": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "discount_card": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "current_green_price": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    },
    "current_grey_price": {
      "eq": 10,
      "gt": 10,
      "gte": 10,
      "lt": 10,
      "lte": 10
    }
  },
  "instrument": "rrc",
  "history_status": "warning",
  "history_comment": [
    "С ценой на сайте все отлично.",
    "Мин. цена селлера: установлена минимальная цена селлера X руб., при попытке установить Y."
  ],
  "negative_profit": true,
  "only_with_stocks": true,
  "tags": [
    1,
    5,
    13
  ],
  "reset_filters": true
}

Response

Successful Response

warmup_in_progressboolean

Выполняется ли фоновая загрузка данных на товары в магазине. Если true — загрузка ещё идёт.

limitinteger

Лимит из запроса

offsetinteger

Текущий переданный сдвиг выборки

total_productsinteger

Количество неархивных артикулов в магазине (без эконом товаров). Кешируется на 2 часа

total_archived_productsinteger

Количество архивных артикулов в магазине (без эконом товаров). Кешируется на 2 часа

total_filteredinteger

Количество артикулов после применения фильтров — именно его нужно использовать для пагинации. Поле total_products по-прежнему означает общее количество артикулов в магазине.

stock_filter_appliedboolean

Был ли применён фильтр по остаткам. false означает, что показан весь каталог: либо фильтр не запрашивали, либо запросили, но данные по остаткам для магазина ещё не собраны и фильтровать нечем.

stock_data_partialboolean

Данные по остаткам известны не по всем товарам. Фильтр и сортировка выполнены по той части, по которой данные есть; остальные товары показаны в конце списка.

applied_filtersobject

Набор фильтров, который был фактически применён. Может отличаться от присланного: если запрос пришёл без фильтров, подставляется последний сохранённый набор. По этому полю клиент отрисовывает активные фильтры. Содержит только те поля, которые действительно заданы. Незаданный фильтр в объекте отсутствует, а не приходит как null: иначе клиент, вернувший этот объект в следующем запросе, сообщил бы серверу, что задал их все.

slice_productsinteger

Количество артикулов в текущем ответе

token_errorboolean

Ошибка API-токена. Возвращает true, если при получении цен или остатков возникла ошибка

currencystring

Валюта кабинета Ozon. В ней указаны все цены ответа и в ней задаются настройки.

Example response

{
  "limit": 1000,
  "offset": 3000,
  "total_archived_products": 42,
  "total_filtered": 128,
  "slice_products": 42,
  "products": [
    {
      "product_id": 21356090,
      "offer_id": "Sh-1457",
      "sku_sds": 170771792,
      "sku_fbo": 175011984,
      "sku_fbs": 175496364,
      "tags": [
        5,
        8,
        13
      ],
      "name": "Перчатки NitriMAX Аrchdale черные нитриловые, 100 шт (размер XL)",
      "primary_image": "https://cdn1.ozone.ru/s3/multimedia-1-o/7513047564.jpg",
      "primary_image_min": "https://cdn1.ozone.ru/s3/multimedia-1-o/c50/7513047564.jpg",
      "brand_name": "Lohmann&Rauscher",
      "prices_and_discounts": {
        "discount_ozon": 22.7,
        "discount_card": 10.6,
        "source": "history"
      }
    }
  ],
  "currency": "RUB"
}

Changes

    • breaking

      request property list-of-types was narrowed by removing types string from media type application/json

    • breaking

      the / request property type changed from string to array

    • breaking

      response property products/items/api_info_prices/marketing_seller_price list-of-types was widened by adding types number to media type application/json of response 200

    • breaking

      response property products/items/api_info_prices/min_price list-of-types was widened by adding types number to media type application/json of response 200

    • breaking

      response property products/items/api_info_prices/old_price list-of-types was widened by adding types number to media type application/json of response 200

    • breaking

      response property products/items/api_info_prices/price list-of-types was widened by adding types number to media type application/json of response 200

    • breaking

      response property products/items/prices_and_discounts/anyOf[subschema #1: PricesAndDiscounts]/current_green_price list-of-types was widened by adding types number to media type application/json of response 200

    • breaking

      response property products/items/prices_and_discounts/anyOf[subschema #1: PricesAndDiscounts]/current_grey_price list-of-types was widened by adding types number to media type application/json of response 200

    • info

      added the optional property to the response with the status

    • info

      added the new optional request property /

    • info

      request property reactivated