Репрайсер РРЦ V2

Поартикульные настройки из БД учитывая фильтрацию и пагинацию

Changed on

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

post/v2/rrc/products-settings

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/v2/rrc/products-settings
  • 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

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

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

currencystring

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

token_errorboolean

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

Example response

{
  "limit": 1000,
  "offset": 3000,
  "total_archived_products": 42,
  "total_filtered": 128,
  "slice_products": 42,
  "currency": "RUB",
  "history_comment_options": [
    {
      "comment": "С ценой на сайте все отлично.",
      "status": "info"
    },
    {
      "comment": "Мин. цена селлера: установлена минимальная цена селлера X руб., при попытке установить Y.",
      "status": "warning"
    }
  ],
  "settings": [
    {
      "sku_sds": 170771792,
      "product_id": 21356090,
      "offer_id": "Sh-1457",
      "control_rrc_settings": {
        "action_deviation_mode": "OFF",
        "hold_max_action_price": "OFF",
        "region": 77,
        "rrc_working_schedule": {
          "MON": [
            9,
            10,
            11,
            17
          ],
          "TUE": [
            8,
            9,
            15,
            16
          ],
          "WED": [
            12,
            13,
            14
          ],
          "THU": [
            1,
            2,
            3,
            4,
            13,
            14,
            15,
            16
          ],
          "FRI": [
            8,
            9,
            15,
            16,
            17
          ],
          "SAT": [
            11,
            12,
            13,
            14
          ],
          "SUN": [
            12,
            13,
            21,
            22,
            23
          ]
        },
        "comp_working_schedule": {
          "MON": [
            9,
            10,
            11,
            17
          ],
          "TUE": [
            8,
            9,
            15,
            16
          ],
          "WED": [
            12,
            13,
            14
          ],
          "THU": [
            1,
            2,
            3,
            4,
            13,
            14,
            15,
            16
          ],
          "FRI": [
            8,
            9,
            15,
            16,
            17
          ],
          "SAT": [
            11,
            12,
            13,
            14
          ],
          "SUN": [
            12,
            13,
            21,
            22,
            23
          ]
        }
      },
      "history": {
        "current_green_price": 1250,
        "current_grey_price": 1250,
        "discount_ozon": 22.7,
        "discount_card": 10.6,
        "comment": "С ценой на сайте все отлично.",
        "last_update": "2025.06.05 15:55:59",
        "calculate_comps_price": 6849
      },
      "mode": "PRICE",
      "night_control": 5,
      "time_intervals": [
        {
          "start_time": 8,
          "end_time": 20
        }
      ],
      "plan_fact": {
        "plan_fact_target": 10,
        "type_change_price": "PERCENT",
        "intervals": [
          {
            "max": 30,
            "price": -10
          }
        ]
      }
    }
  ],
  "products_to_shutdown": [
    {
      "product_id": 21356090,
      "offer_id": "Sh-1457",
      "sku_sds": 170771792,
      "name": "Перчатки NitriMAX Аrchdale черные нитриловые, 100 шт (размер XL)"
    }
  ]
}

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 settings/items/control_rrc_settings/control_price list-of-types was widened by adding types number to media type application/json of response 200

    • breaking

      response property settings/items/control_rrc_settings/low_stock_settings/items/final_price list-of-types was widened by adding types number to media type application/json of response 200

    • breaking

      response property settings/items/control_rrc_settings/max_price list-of-types was widened by adding types number to media type application/json of response 200

    • breaking

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

    • breaking

      response property settings/items/control_rrc_settings/predict_control_price/type_0 list-of-types was widened by adding types number to media type application/json of response 200

    • breaking

      response property settings/items/control_rrc_settings/predict_control_price/type_1 list-of-types was widened by adding types number to media type application/json of response 200

    • breaking

      response property settings/items/control_rrc_settings/predict_control_price/type_3 list-of-types was widened by adding types number to media type application/json of response 200

    • breaking

      response property settings/items/plan_fact/intervals/items/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 optional property to the response with the status

    • info

      added the new optional request property /

    • info

      request property reactivated

    • info

      added the optional property /// to the response with the status

    • info

      added the optional property // to the response with the status