Репрайсер по конкурентам V2

Поартикульные настройки конкурентов - получение (v2)

Changed on

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

Цены и остатки по артикулам магазина — в общей ручке POST /v2/rrc/products-prices.

Цены наших конкурентов — POST /v2/comp/competitors-prices (загружаются в процессе дополнительного запроса при открытии модального окна).

Артикулы без строк в БД отдаются с дефолтными значениями (параметр has_settings = 0)

post/v2/comp/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/comp/products-settings
  • Auth: none declared. Required headers: x-connect-id, x-user-id

Query parameters

limitinteger

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

offsetinteger

Сдвиг выборки (постраничная навигация)

blockstring

Headers

x-connect-idinteger required

ID магазина

x-user-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

msgstring required
errorboolean

Статус ошибки (True/False)

Example response

{
  "msg": "Successful POST /v2/comp/products-settings",
  "data": {
    "limit": 1000,
    "total_products": 1250,
    "total_archived_products": 42,
    "total_filtered": 128,
    "history_comment_options": [
      {
        "comment": "С ценой на сайте все отлично.",
        "status": "info"
      },
      {
        "comment": "Мин. цена селлера: установлена минимальная цена селлера X руб., при попытке установить Y.",
        "status": "warning"
      }
    ],
    "slice_products": 42,
    "settings": [
      {
        "product_id": 21356090,
        "sku_sds": 170771792,
        "offer_id": "Sh-1457",
        "comps_strategy_status": 1,
        "region": 77,
        "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
          ]
        },
        "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
          ]
        },
        "competitors": [
          {
            "comp_sku": 1738567991,
            "competitor_status": 1,
            "prices": {
              "source": "history",
              "base_price": 860,
              "discount_price": 375,
              "ozon_card_price": 350
            }
          }
        ],
        "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
        },
        "has_settings": 1,
        "tags": [
          5,
          8,
          13
        ]
      }
    ],
    "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 data/settings/items/comp_strat_lower_bound list-of-types was widened by adding types number to media type application/json of response 200

    • breaking

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

    • breaking

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

    • breaking

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

    • breaking

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

    • breaking

      response property data/settings/items/price_delta 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