---
title: "Поартикульные настройки конкурентов - получение (v2)"
method: POST
path: "/v2/comp/products-settings"
tags: ["Репрайсер по конкурентам V2"]
---

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

`POST /v2/comp/products-settings`

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

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


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

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

## Query parameters

- `limit` integer — Лимит товаров в ответе
- `offset` integer — Сдвиг выборки (постраничная навигация)
- `block` string

## Headers

- `x-connect-id` integer, required — ID магазина
- `x-user-id` integer, required — ID пользователя

## Request body

- ProductPricesFiltersDTO
  - `skus` integer[] — Фильтр по списку SKU (артикулу Ozon) товаров
  - `product_ids` integer[] — Фильтр по списку product_id товаров
  - `offer_ids` string[] — Фильтр по списку offer_id (артикулу продавца) товаров
  - `names` string[] — Фильтр по названию товара
  - `brands` string[] — Фильтр по брендам
  - `catalog_filter_logic` 'or' | 'and', nullable — Логика для множественных значений в фильтрах names, brands, offer_ids. - `or` (по умолчанию) — товары, где поле содержит ЛЮБОЕ из указанных значений. - `and` — товары, где поле содержит ВСЕ указанные значения одновременно.
  - `settings_rrc` ProductSettingsFiltersDTO
    - `rrc_status` boolean, nullable — Фильтр по статусу работы репрайсера. - `true` — включён. - `false` — выключен.
    - `action_status` integer, nullable — Фильтр по статусу акций
    - `mode` 'PRICE' | 'TIME' | 'NIGHT', nullable — Фильтр по стратегии работы репрайсера: - `PRICE` — Стандартный режим контроля цены на удержания. - `TIME` — Включена стратегия контроля цены по времени. - `NIGHT` — Включена стратегия ночного повышения цены
    - `night_control` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `plan_fact_status` boolean, nullable — Фильтр по статусу план факта
    - `plan_fact_target` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `control_price` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `min_price_rrc` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `max_price_rrc` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `ignore_max_price` integer, nullable — Фильтр по стратегии работы с максимальной ценой
    - `type_control_price` integer, nullable — Фильтр по типу контроля цены
    - `change_price_if_green_absent` integer, nullable — Фильтр по настройке 'Менять ли цену, если зелёная цена отсутствует?'
    - `region` integer, nullable — **Город (регион).** Текущая настройка по которой будет выполняться сбор цен. *Список активных городов:* - `-77` - Неавторизованный Москва - `-66` - Неавторизованный Екатеринбург - `-48` - Неавторизованный Липецк - `-36` - Неавторизованный Воронеж - `-31` - Неавторизованный Белгород - `-21` - Неавторизованный Чебоксары - `21` - Чебоксары - `23` - Краснодар - `25` - Владивосток - `26` - Ставрополь - `54` - Новосибирск - `62` - Рязань - `63` - Самара - `66` - Екатеринбург - `77` - Москва - `78` - Санкт-Петербург - `771` - Одинцово
    - `working_schedule_status` boolean, nullable — Фильтр по типу расписания работы репрайсера. - `true` — товары с нестандартным расписанием. - `false` — товары со стандартным расписанием (репрайсер работает постоянно).
    - `low_stock_type` 0 | 1, nullable — **Фильтр по статусу инструмента "Цена от остатков".** - `0` - Инструмент выключен. Настройки границ по остаткам сохраняются, но не применяются. - `1` - Инструмент включен. При достижении границ по остаткам изменяется цена на удержание.
    - `low_stock_control_type` 'ALL' | 'FBO' | 'FBS' | 'FBP'
  - `settings_comp` CompArticleSettingsFiltersDTO — Фильтры по полям sys.article_settings_ozon_competitors.
    - `comps_strategy_status` boolean, nullable — Статус стратегии «конкуренты» для артикула
    - `action_status` 'OFF' | 'EXIT' | 'AUTO'
    - `price_guide` 'OZON_CARD' | 'GREY_PRICE'
    - `aggregation_method` 'LOWEST' | 'HIGHEST' | 'AVERAGE'
    - `price_delta_type` 'BELOW' | 'ABOVE' | 'SAME'
    - `price_delta_change_type` 'PRICE' | 'PERCENT'
    - `low_stock_type` 'KEEP' | 'SET_PRICE'
    - `low_stock_control_type` 'ALL' | 'FBO' | 'FBS' | 'FBP'
    - `competitor_out_of_stock_type` 'KEEP' | 'SET_PRICE'
    - `strategy_min_price` 'SET_MINIMUM' | 'KEEP_CURRENT'
    - `min_price_comp` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `max_price_comp` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `comp_strat_lower_bound` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `region` integer, nullable — **Фильтр по городу (региону) для проверки цен.** *Список активных городов:* - `-77` - Неавторизованный Москва - `-66` - Неавторизованный Екатеринбург - `-48` - Неавторизованный Липецк - `-36` - Неавторизованный Воронеж - `-31` - Неавторизованный Белгород - `-21` - Неавторизованный Чебоксары - `21` - Чебоксары - `23` - Краснодар - `25` - Владивосток - `26` - Ставрополь - `54` - Новосибирск - `62` - Рязань - `63` - Самара - `66` - Екатеринбург - `77` - Москва - `78` - Санкт-Петербург - `771` - Одинцово
    - `has_competitors` boolean, nullable — Фильтр по наличию конкурентов у артикула
    - `rrc_status` boolean, nullable — Фильтр статуса работы репрайсера Ozon 2.0 на товаре. `true` — товар управляется стратегией РРЦ (не может быть включен для контроля в Конкурентах)
  - `api_filters` ProductApiFiltersDTO
    - `price` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `old_price` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `marketing_seller_price` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `min_price` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `present` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `reserved` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `fbs_stocks` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `fbo_stocks` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `fbp_stocks` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `actions_count` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `discount_ozon` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `discount_card` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `current_green_price` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
    - `current_grey_price` ComparisonOperators
      - `eq` integer, nullable — Равно
      - `gt` integer, nullable — Больше
      - `gte` integer, nullable — Больше или равно
      - `lt` integer, nullable — Меньше
      - `lte` integer, nullable — Меньше или равно
  - `history_status` 'info' | 'warning' | 'error', nullable — Текстовый статус работы последнего цикла: - `info` - репрайсер работает стабильно - `warning` - цена на сайте не соответствует цене на удержание, но репрайсер сможет установить нужную цену при возможности - `error` - невозможно изменить цену селлера, требуются действия пользователя
  - `history_comment` string, nullable — ⚠️ **Только для внутреннего использования.** Фильтр по комментарию последней записи из истории (оператор LIKE, частичное совпадение). Текст комментария в БД истории отличается от комментария, который собирается для пользователя в ручках истории, поэтому фильтр может не найти товары по тексту, который виден в интерфейсе. Применять только для отладки, зная фактические значения в `sys.full_history_ozon.loop_comment`.
  - `negative_profit` boolean, nullable — Фильтр по маржинальности. - `true` — только товары с отрицательной маржой в рублях. - Не установлено — без фильтрации.
  - `is_archive` 0 | 1, nullable — Фильтр по флагу архивного товара. **Работает только по данным из кеша**- `0` — только неархивные товары (есть данные по ценам/остаткам в кеше). - `1` — только архивные товары (нет данных по ценам/остаткам в кеше).
  - `has_settings` 0 | 1, nullable — Фильтр по наличию сохраненных настроек в базе данных репрайсера. - `0` - только товары без настроек (дефолтные значения). - `1` - только товары с настройками.
  - `tags` integer[] — Фильтр по списку ID тегов. Вернёт только те товары, которые привязаны хотя бы к одному из указанных тегов.
  - `sort` SortField
    - `field` string, required — Название поля для сортировки. Доступные поля для products-prices и products-settings (РРЦ): product_id, sku_sds, offer_id, name, brand_name, price, old_price, marketing_seller_price, min_price, min_price_api, present, reserved, fbs_stocks, fbo_stocks, fbp_stocks, actions_count, last_update, history_status, control_price, min_price_rrc, max_price_rrc, min_price_comp, max_price_comp, rrc_status, predict_profit_rub, predict_profit_percent, discount_ozon, discount_card, current_green_price, current_grey_price. min_price / min_price_api — мин. цена в кабинете Ozon (из API селлера); min_price_rrc / max_price_rrc — настройки РРЦ в сервисе; min_price_comp / max_price_comp — настройки конкурентов в сервисе. Устаревший alias: max_price → max_price_rrc. Доступные поля для products-settings (конкуренты v2): product_id, sku_sds, offer_id, name, brand_name, price, old_price, marketing_seller_price, min_price, min_price_api, present, reserved, fbs_stocks, fbo_stocks, fbp_stocks, actions_count, last_update, history_status, control_price, rrc_status, min_price_comp, max_price_comp, predict_profit_rub, predict_profit_percent, discount_ozon, discount_card, current_green_price, current_grey_price. min_price / min_price_api — мин. цена в кабинете Ozon; min_price_comp / max_price_comp — настройки конкурентов в сервисе.
    - `order` 'asc' | 'desc' — Порядок сортировки: asc — по возрастанию, desc — по убыванию

## Response `200`

Successful Response

- GetCompV2ProductsSettingsResponse
  - `msg` string, required
  - `error` boolean — Статус ошибки (True/False)
  - `data` CompV2ProductsSettings, required
    - `limit` integer, required — Лимит из запроса
    - `offset` integer, required — Текущий переданный сдвиг выборки
    - `total_products` integer, required — Общее количество артикулов в магазине (без эконом товаров). **Кешируется на 2 часа**
    - `slice_products` integer — Количество артикулов в текущем ответе
    - `sort_by` SortField
      - `field` string, required — Название поля для сортировки. Доступные поля для products-prices и products-settings (РРЦ): product_id, sku_sds, offer_id, name, brand_name, price, old_price, marketing_seller_price, min_price, min_price_api, present, reserved, fbs_stocks, fbo_stocks, fbp_stocks, actions_count, last_update, history_status, control_price, min_price_rrc, max_price_rrc, min_price_comp, max_price_comp, rrc_status, predict_profit_rub, predict_profit_percent, discount_ozon, discount_card, current_green_price, current_grey_price. min_price / min_price_api — мин. цена в кабинете Ozon (из API селлера); min_price_rrc / max_price_rrc — настройки РРЦ в сервисе; min_price_comp / max_price_comp — настройки конкурентов в сервисе. Устаревший alias: max_price → max_price_rrc. Доступные поля для products-settings (конкуренты v2): product_id, sku_sds, offer_id, name, brand_name, price, old_price, marketing_seller_price, min_price, min_price_api, present, reserved, fbs_stocks, fbo_stocks, fbp_stocks, actions_count, last_update, history_status, control_price, rrc_status, min_price_comp, max_price_comp, predict_profit_rub, predict_profit_percent, discount_ozon, discount_card, current_green_price, current_grey_price. min_price / min_price_api — мин. цена в кабинете Ozon; min_price_comp / max_price_comp — настройки конкурентов в сервисе.
      - `order` 'asc' | 'desc' — Порядок сортировки: asc — по возрастанию, desc — по убыванию
    - `settings` CompArticleSettingsDTO[], required — Пачка поартикульных настроек
      - `product_id` integer, required — **Уникальный идентификатор товара в системе продавца (в Seller API).** К одному product_id кроме основного товара могут быть привязаны кванты.
      - `sku_sds` integer, required — **Уникальный идентификатор товара в системе Ozon — SKU.** По sku мы можем найти товар в поиске OZON.
      - `offer_id` string, required — **Идентификатор товара в системе продавца — артикул продавца.**
      - `comps_strategy_status` 0 | 1 — **Статус стратегии 'конкуренты' для артикула** При `comps_strategy_status = 0` статусы конкурентов (`competitor_status`) сохраняются как есть — допускается ситуация, когда стратегия выключена, но конкуренты включены. Репрайсер по конкурентам в этом случае не отрабатывает. Сделано для удобства: при повторном включении стратегии не нужно заново включать конкурентов. При `comps_strategy_status = 1` должен быть хотя бы один конкурент с `competitor_status = 1`, иначе PATCH вернёт ошибку валидации. Допускаются: - `0` - стратегия по артикулу выключена. - `1` - стратегия включена Если `rrc_status = 1` и выполняется попытка PATCH запроса на `comps_strategy_status = 1` будет возвращена ошибка.
      - `price_guide` 'OZON_CARD' | 'GREY_PRICE'
      - `min_price` integer — **Минимальная цена** на артикул (в настройках репрайсера), допустимая к обновлению.
      - `max_price` integer — **Максимальная цена** на артикул (в настройках репрайсера), допустимая к обновлению.
      - `region` integer — **Город (регион).** Текущая настройка по которой будет выполняться сбор цен. *Список активных городов:* - `-77` - Неавторизованный Москва - `-66` - Неавторизованный Екатеринбург - `-48` - Неавторизованный Липецк - `-36` - Неавторизованный Воронеж - `-31` - Неавторизованный Белгород - `-21` - Неавторизованный Чебоксары - `21` - Чебоксары - `23` - Краснодар - `25` - Владивосток - `26` - Ставрополь - `54` - Новосибирск - `62` - Рязань - `63` - Самара - `66` - Екатеринбург - `77` - Москва - `78` - Санкт-Петербург - `771` - Одинцово
      - `price_delta_type` 'BELOW' | 'ABOVE' | 'SAME'
      - `price_delta_change_type` 'PRICE' | 'PERCENT'
      - `price_delta` integer — **Смещение относительно цены конкурента**
      - `aggregation_method` 'LOWEST' | 'HIGHEST' | 'AVERAGE'
      - `low_stock_type` 'KEEP' | 'SET_PRICE'
      - `low_stock_control_type` 'ALL' | 'FBO' | 'FBS' | 'FBP'
      - `low_stock_steps` LowStockSettings[] — **Ступени low_stock** из sys.low_stock_steps_ozon, instrument=COMP. До 5 штук, как в РРЦ.
        - `stock_quantity` integer, required — Пороговое значение остатков для ступени при котором цена будет изменена
        - `target_percent` integer — Изменение цены в процентах относительно цены на удержание (если указано изменение в процентах, то изменение цены на удержание для той же ступени указать нельзя). `null` принимается как `0`.
        - `final_price` integer — Новая цена на удержание для клиента (если указано изменение цены на удержание, то изменение цены в процентах для той же ступени указать нельзя). `null` принимается как `0`.
      - `competitor_out_of_stock_type` 'KEEP' | 'SET_PRICE'
      - `competitor_out_of_stock_price` integer, nullable — **Конечная цена на сайте при отсутствии остатков у конкурентов** (если competitor_out_of_stock_type = SET_PRICE)
      - `strategy_min_price` 'SET_MINIMUM' | 'KEEP_CURRENT'
      - `comp_strat_lower_bound` integer — **Минимальная цена** - конечная - стратегии (на уровне price_guide)
      - `action_status` 'OFF' | 'EXIT' | 'AUTO'
      - `competitors` CompArticleCompetitorDTO[] — **Актуальный список конкурентов артикула.** При PATCH бэкенд сравнивает с БД: добавление, удаление, смена competitor_status.
        - `comp_sku` integer, required — SKU SDS товара-конкурента
        - `competitor_status` 0 | 1 — Активность конкурента: 0 — выкл., 1 — вкл.
        - `prices` CompetitorPrices
          - `source` string, required — **Источник данных о скидках.** - `history` — из таблицы истории репрайсера. - `statisticsAPI` — расчёт по Statistics API Ozon.
          - `base_price` integer, nullable — Цена до скидок (зачёркнутая). null, если Statistics API не вернул цену.
          - `discount_price` integer, nullable — Цена после скидок (чёрная). null, если Statistics API не вернул цену.
          - `ozon_card_price` integer, nullable — Цена по карте Ozon (зелёная). null, если Statistics API не вернул цену.
      - `history` History
        - `current_green_price` integer, nullable — **Текущая цена на сайте по карте Ozon (зеленая).** Важно: это цена на последней проверке! Если на этой проверке была отправлена новая цена, то цены НЕ будут соответствовать текущим.
        - `current_grey_price` integer, nullable — **Текущая цена на сайте (серая).**Важно: это цена на последней проверке! Если на этой проверке была отправлена новая цена, то цены НЕ будут соответствовать текущим.
        - `discount_ozon` number, nullable — **Скидка маркетплейса (соинвеста)** Разница в цене между вашей ценой (из кабинета продавца) и серой ценой (в процентах).
        - `discount_card` number, nullable — **Скидка по карте Ozon** Разница в цене между серой и зеленой ценой (в процентах).
        - `comment` string — **Комментарий к записи**
        - `last_update` string, required — Дата и время последнего обновления
        - `error` 0 | 1 — **Статус работы последнего цикла.** - `0` - предупреждения отсутствуют. - `1` - есть предупреждение.
        - `status` 'info' | 'warning' | 'error' — Текстовый статус работы последнего цикла
      - `has_settings` 0 | 1, required — **Есть ли по артикулу сохранённые настройки?** Проверка выполняется по таблице sys.article_settings_ozon_competitors: - `0` - нет (возвращаются дефолтные значения). - `1` - есть
      - `rrc_status` 0 | 1, required — **Статус инструмента РРЦ на артикуле.** На основе данных из таблицы sys.control_price_ozon_v2.rrc_status Только для GET / фильтрации. В PATCH-запросе не передаётся. - `1` - артикул на контроле РРЦ, включение конкурентов на фронте должно блокироваться. - `0` - артикул НЕ на контроле РРЦ. Допускается настройка и изменение.

## Other responses

- `400` — Bad Request
- `422` — Validation Error
- `500` — Internal Server Error

---

[API](https://skmtc.dev/mpspace/apis/api.md) · [All operations](https://skmtc.dev/mpspace/apis/api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/mpspace/api/revisions/480b05bed427/schema)
