{"openapi":"3.0.3","info":{"version":"1.0.0","title":"Yandex KITᵝ API","description":"Спецификация публичного API Yandex KITᵝ.","contact":{"name":"Yandex KITᵝ Support","url":"https://yandex.ru/support/kit/ru/feedback"}},"servers":[{"url":"https://api.kit.yandex.net"}],"tags":[{"name":"Категории товаров","description":"Управление категориями товаров.\n\n## Мультикатегории и архивирование\n\nПродукт может относиться к нескольким категориям одновременно.\n\nПравила при архивировании категории (`POST /v1/categories/{id}/archive`):\n\n1. У продуктов с товарами в статусе `PUBLISHED` или `HIDDEN` должна быть хотя бы одна активная категория.\n  Можно архивировать любую категорию, но после этого у продукта обязана остаться минимум одна активная категория.\n\n2. Если у продукта с неархивными товарами только одна категория, ее нельзя архивировать без параметра `archive_variants=true` — в противном случае запрос вызовет ошибку.\n\n3. Архивированная категория не удаляется физически. Ее можно восстановить одним из способов:\n   - с помощью запроса `POST /v1/categories/{id}/unarchive`;\n   - через разархивирование связанного товара.\n\n4. При обновлении `category_ids` продукта список привязок заменяется на переданный.\n  При этом архивированные категории из списка привязываются к продукту, но остаются в статусе `ARCHIVED` и не отображаются в `Product.category_ids`, пока категорию не разархивируют через `POST /v1/categories/{id}/unarchive`."},{"name":"Характеристики товаров","description":"Управление характеристиками товаров и их группами.\n\n## Группы характеристик\n\nКаждая характеристика относится к одной группе — она указана в поле `group_id`.\nЕсли группа не задана, характеристика попадает в группу по умолчанию (is_default: true).\n\nЧтобы увидеть характеристики в сгруппированном виде:\n\n1. Получите группы с помощью запроса `GET /v1/characteristics/groups` и отсортируйте их по полю `priority` по убыванию: чем больше значение, тем выше группа в списке.\n\n2. Получите характеристики нужной группы с помощью запроса `GET /v1/characteristics?group_id={group_id}` и отсортируйте их по полю `group_display_sequence` по возрастанию.\n   `group_display_sequence` — это независимая нумерация внутри группы. Она непрерывная, начинается с 1 и не зависит от `display_sequence`.\n\n## Перемещение характеристики между группами\nГруппа и позиция задаются при создании и обновлении характеристики:\n\n- передан только `group_id`, характеристика добавляется в конец указанной группы.\n- передан только `group_display_sequence`, характеристика меняет позицию внутри текущей группы.\n- переданы оба поля (`group_id` и `group_display_sequence`), характеристика перемещается в указанную группу на указанную позицию.\n\nПри перемещении характеристики остальные характеристики в группе сдвигаются, а нумерация внутри группы пересчитывается."},{"name":"Файлы","description":"Управление файлами."},{"name":"Видео","description":"Загрузка видео, получение списка и информации о ходе их обработки.\n\n## Как работать с видео\n\n1. Загрузите видео — `POST /v1/videos` (файлом) или `POST /v1/videos/from_url`\n   (по публичной ссылке)..\n2. Дождитесь статуса `READY`, опрашивая `GET /v1/videos/{video_id}`. Обработка видео\n   выполняется асинхронно, время зависит от длительности видео.\n3. Привяжите видео к товару — передайте его в `media` при создании или обновлении товара\n   (`POST /v1/variants`, `PATCH /v1/variants/{id}`):\n   `{ \"type\": \"VIDEO\", \"video_id\": \"vplvusemmooxmhpwiqli\", \"display_sequence\": 2 }`.\n   Список `media` заменяется целиком, поэтому вместе с видео передавайте\n   и все изображения товара: у товара может быть не больше одного видео,\n   и в `media` должно быть хотя бы одно изображение.\n\n{% note info \"Ограничения\" %}\n\n- максимальный размер файла — 100 МБ;\n- поддерживаемые форматы: mp4, mov, webm, avi, flv;\n- видео дедуплицируются по содержимому: повторная загрузка того же файла не создает\n  дубликат, а возвращает уже загруженное видео;\n- видео, обработка которых завершилась ошибкой, удаляются автоматически — после удаления\n  `GET /v1/videos/{video_id}` возвращает `404`.\n\n{% endnote %}"},{"name":"Товары","description":"Управление товарами в каталоге.\n\nТовар - это минимальная единица ассортимента, которая может быть продана покупателю. У товара есть цена, наличие на складе и другие параметры.\nПродукт - это абстрактная сущность, которая объединяет один или несколько товаров, с одинаковыми категориями.\n\n## Варианты товаров\n\nПродукт может содержать несколько вариантов (товаров). Например, футболка одной модели может иметь варианты с разными размерами и цветами.\nЧтобы создать несколько вариантов в одном продукте, создайте товары с одинаковым `product_id`.\n\n## Управление группировкой товаров\n\nЧтобы добавить несколько товаров в один продукт:\n\n1. Добавьте хотя бы один товар в продукт.\n2. Задайте для товара все группирующие характеристики продукта. Без них товар не добавится в продукт.\n3. Настройте группирующие характеристики продукта — это делается через метод обновления продукта.\n\n{% note info %}\n\n- После добавления товара в продукт нельзя удалить значения группирующих характеристик.\n- В продукте не может быть двух товаров с полностью одинаковыми значениями группирующих характеристик.\n\n{% endnote %}\n\n### Разделяющие характеристики\n\nДля продукта можно настроить разделяющие характеристики (`splitting_characteristics`) — они нужны, чтобы разделить товары продукта на отдельные карточки в каталоге.\n\nПравила работы с разделяющими характеристиками:\n- разделяющие характеристики должны быть одновременно и группирующими характеристиками продукта;\n- товары разделяются на карточки по уникальным значениям этих характеристик.\n\n## Мультикатегории\n\nПри создании и обновлении продукта его можно привязать к одной или нескольким категориям (параметр `category_ids`).\n\nПравила работы с категориями:\n\n1. В ответах API (`Product.category_ids`) отображаются только активные (неархивированные) категории продукта.\n\n2. Продукт с товарами в статусах `PUBLISHED` или `HIDDEN` должен иметь хотя бы одну категорию.\nПри обновлении продукта передача пустого параметра `category_ids` приведет к отклонению запроса.\n\n3. При обновлении `category_ids` список привязок категорий продукта полностью заменяется на переданный:\n   - архивированные категории привязываются к продукту, но остаются в статусе `ARCHIVED` и не отображаются в `Product.category_ids` в ответах API;\n   - передача архивированного ID не разархивирует категорию;\n   - после запроса `POST /v1/categories/{id}/unarchive` ранее привязанная архивированная категория появится в `Product.category_ids`.\n\n4. Если у продукта с неархивными товарами остались только архивированные категории, их можно восстановить при разархивации товара с помощью запроса `POST /v1/variants/{id}/unarchive`."},{"name":"Склады","description":"Управление складами."},{"name":"Пользователи","description":"Информация о пользователях."},{"name":"Магазин","description":"Информация о магазине."},{"name":"Заказы","description":"Управление заказами магазина."},{"name":"Клиенты","description":"Управление клиентами магазина."},{"name":"Промокоды","description":"Управление промокодами магазина.\n\nМетоды устарели — используйте методы раздела **Группы промокодов**."},{"name":"Группы промокодов","description":"Управление группами промокодов магазина.\n\nГруппа промокодов — это набор уникальных кодов, к которым применяются единые правила скидки:\n- тип и размер скидки;\n- условия применения (минимальная сумма заказа, ограничения на использование);\n- период действия.\n\n## Создание группы\n\nЧтобы создать группу, передайте в одном запросе параметры группы и список кодов. Группа не сохранится, если список кодов пустой.\n\nЕсли при создании группы запрос отклоняется с ошибкой `409 Conflict`, значит код совпадает с кодом уже активной группы в пересекающемся периоде действия.\n\n## Типы группы\n\n| `group_type` | **Описание** |\n|---|---|\n| `SINGLE` | Группа с одним промокодом. Используется для традиционных промокодов (один код на всех). |\n| `MULTIPLE` | Группа с набором промокодов.  |\n\n## Применимость\n\nПараметр `binding_mode` определяет, к чему применяется скидка (только для промокодов типа `PRODUCTS`):\n- `ALL_VARIANTS` — ко всем товарам магазина.\n- `SELECTED_VARIANTS` — к выбранным товарам.\n- `SELECTED_CATEGORIES_COLLECTIONS` — к товарам из выбранных категорий и коллекций."},{"name":"Скидки","description":"Управление скидками магазина."},{"name":"Подарки","description":"Управление подарками за покупку."},{"name":"Подарочные карты","description":"Получение подарочных карт магазина."},{"name":"Коллекции","description":"Управление коллекциями товаров."},{"name":"Контекстные коллекции","description":"Управление контекстными коллекциями (подбор похожих товаров по условиям)."},{"name":"Новости","description":"Управление новостями магазина."},{"name":"Вебхуки","description":"Управление вебхуками магазина.\n\n## Структура payload\n\nПри наступлении события система отправляет HTTP POST-запрос на зарегистрированный URL с JSON-телом.\nКонкретный вариант определяется значением поля `event`:\n\n| `event`                         | Схема payload                          | Описание                              |\n|---------------------------------|----------------------------------------|---------------------------------------|\n| `ORDER_STATUS_CHANGED`          | `WebhookOrderStatusChangedPayload`     | Изменение статуса заказа.              |\n| `ORDER_PAYMENT_STATUS_CHANGED`  | `WebhookOrderPaymentStatusChangedPayload` | Изменение статуса оплаты заказа.    |\n| `ORDER_DELIVERY_STATUS_CHANGED` | `WebhookOrderDeliveryStatusChangedPayload` | Изменение статуса доставки заказа. |\n| `CUSTOMER_CHANGED`              | `WebhookCustomerChangedPayload`        | Изменение данных клиента.              |\n| `CART_UPDATED`                  | `WebhookCartUpdatedPayload`            | Изменение корзины клиента.             |\n| `WEBHOOK_VALIDATE`              | `WebhookValidatePayload`               | Запрос валидации URL при активации.    |\n\n### Поля payload\n\n| Поле          | Тип                   | Описание                                                                      | Обязательное |\n|---------------|-----------------------|-------------------------------------------------------------------------------|:------------:|\n| `event_id`    | `string (uuid)`       | Уникальный ID события. Используется для идемпотентной обработки. Повторная доставка приходит с тем же `event_id`.              | ✓ |\n| `event`       | `string (enum)`       | Тип события: `ORDER_STATUS_CHANGED`, `ORDER_PAYMENT_STATUS_CHANGED`, `ORDER_DELIVERY_STATUS_CHANGED`, `CUSTOMER_CHANGED` или `WEBHOOK_VALIDATE`(при вызове `POST /v1/webhooks/{webhook_id}/validate?activate=true`).  | ✓ |\n| `occurred_at` | `string (date-time)`  | Время возникновения события.                                                   | ✓ |\n| `data`        | `object`              | Данные события.\n\n### Поля `data` для `ORDER_STATUS_CHANGED`\n\n| Поле         | Тип             | Описание                         | Обязательное |\n|--------------|-----------------|----------------------------------| :------------:|\n| `order_id`   | `string (uuid)` |  ID заказа.                        | ✓ |\n| `customer_id`| `string (uuid)` | ID клиента, который оформил заказ. Данные клиента — `GET /v1/customers/{customer_id}`. | ✓ |\n| `new_status` |  `OrderStatus`  |  Новый статус заказа. Подробнее см. в разделе `Заказы`.  | ✓ |\n\n### Поля `data` для `ORDER_PAYMENT_STATUS_CHANGED`\n\n| Поле                 | Тип             | Описание                            | Обязательное |\n|----------------------|-----------------|-------------------------------------| :------------: |\n| `order_id`           | `string (uuid)` |  ID заказа.                           | ✓ |\n| `customer_id`        | `string (uuid)` | ID клиента, который оформил заказ. Данные клиента — `GET /v1/customers/{customer_id}`. | ✓ |\n| `new_payment_status` | `PaymentStatus` |  Новый статус оплаты. Подробнее см. в разделе `Заказы`. | ✓ |\n\n### Поля `data` для `ORDER_DELIVERY_STATUS_CHANGED`\n\n| Поле                  | Тип              | Описание                             | Обязательное |\n|-----------------------|------------------|--------------------------------------| :------------: |\n| `order_id`            | `string (uuid)`  | ID заказа.                            | ✓ |\n| `customer_id`         | `string (uuid)`  | ID клиента, который оформил заказ. Данные клиента — `GET /v1/customers/{customer_id}`. | ✓ |\n| `chunk_id`            | `integer`        | ID части доставки заказа (у заказа может быть несколько отправлений). | ✓ |\n| `new_delivery_status` | `DeliveryStatus` | Новый статус доставки. Подробнее см. в разделе `Заказы`. | ✓ |\n\n### Поля `data` для `CUSTOMER_CHANGED`\n\n| Поле           | Тип             | Описание      |  Обязательное |\n|----------------|-----------------|---------------| :------------: |\n| `customer_id`  | `string (uuid)` | ID клиента.    |  ✓            |\n\n### Поля `data` для `CART_UPDATED`\n\n| Поле           | Тип             |  Описание      | Обязательное |\n|----------------|-----------------|:------------:|---------------|\n| `customer_id`  | `string (uuid)` | ID клиента, чья корзина изменилась. Состав корзины — `GET /v1/customers/{customer_id}/cart`. | ✓ |\n\nСобытия по одной корзине схлопываются: серия изменений (включая очистку корзины) приходит одним\nсобытием, новое событие по одной корзине формируется не чаще раза в окно (по умолчанию 15 минут).\nПовторная доставка события может прийти позже следующего события по той же корзине. Событие приходит с задержкой\nдо окна после изменения, поэтому актуальный состав корзины запрашивайте в момент обработки события.\n\nПример payload для `ORDER_STATUS_CHANGED`:\n\n```json\n{\n  \"event_id\": \"019b21d9-c5d9-777d-80bd-d67c664bc6d9\",\n  \"event\": \"ORDER_STATUS_CHANGED\",\n  \"occurred_at\": \"2024-01-15T10:30:00Z\",\n  \"data\": {\n    \"order_id\": \"019b21d9-c5d9-777d-80bd-d67c664bc6d9\",\n    \"customer_id\": \"019b21da-0a3e-7c41-9f2b-5e8d1c7a4b60\",\n    \"new_status\": \"DELIVERED\"\n  }\n}\n\n```\n\nПример payload для `ORDER_PAYMENT_STATUS_CHANGED`:\n\n```json\n{\n  \"event_id\": \"019b21d9-c5d9-777d-80bd-d67c664bc6d9\",\n  \"event\": \"ORDER_PAYMENT_STATUS_CHANGED\",\n  \"occurred_at\": \"2024-01-15T10:30:00Z\",\n  \"data\": {\n    \"order_id\": \"019b21d9-c5d9-777d-80bd-d67c664bc6d9\",\n    \"customer_id\": \"019b21da-0a3e-7c41-9f2b-5e8d1c7a4b60\",\n    \"new_payment_status\": \"PAYMENT_PAID\"\n  }\n}\n```\n\nПример payload для `ORDER_DELIVERY_STATUS_CHANGED`:\n\n```json\n{\n  \"event_id\": \"019b21d9-c5d9-777d-80bd-d67c664bc6d9\",\n  \"event\": \"ORDER_DELIVERY_STATUS_CHANGED\",\n  \"occurred_at\": \"2024-01-15T10:30:00Z\",\n  \"data\": {\n    \"order_id\": \"019b21d9-c5d9-777d-80bd-d67c664bc6d9\",\n    \"customer_id\": \"019b21da-0a3e-7c41-9f2b-5e8d1c7a4b60\",\n    \"chunk_id\": 1,\n    \"new_delivery_status\": \"DELIVERED\"\n  }\n}\n```\n\nПример payload для `CUSTOMER_CHANGED`:\n\n```json\n{\n  \"event_id\": \"019b21d9-c5d9-777d-80bd-d67c664bc6d9\",\n  \"event\": \"CUSTOMER_CHANGED\",\n  \"occurred_at\": \"2024-01-15T10:30:00Z\",\n  \"data\": {\n    \"customer_id\": \"019b21d9-c5d9-777d-80bd-d67c664bc6d9\"\n  }\n}\n```\n\nПример payload для `CART_UPDATED`:\n\n```json\n{\n  \"event_id\": \"019b21d9-c5d9-777d-80bd-d67c664bc6d9\",\n  \"event\": \"CART_UPDATED\",\n  \"occurred_at\": \"2024-01-15T10:30:00Z\",\n  \"data\": {\n    \"customer_id\": \"019b21d9-c5d9-777d-80bd-d67c664bc6d9\"\n  }\n}\n```\n\n## Верификация подписи\n\nКаждый запрос содержит заголовок `X-Webhook-Signature` — HMAC-SHA256 от тела запроса, вычисленный с помощью поля `secret` вебхука.\nИспользуйте его для проверки подлинности входящего запроса:\n\n{% cut \"Запрос\" %}\n\n```\nexpected = HMAC-SHA256(key=secret, data=request_body)\nvalid = (X-Webhook-Signature == hex(expected))\n```\n\n{% endcut %}\n\n## Повторные попытки доставки\n\nДоставка работает по принципу at-least-once: одно и то же событие может прийти повторно с тем же `event_id`.\nСистема повторяет доставку с экспоненциальной задержкой при следующих ответах сервера:\n- `5xx` — серверные ошибки.\n- `408 Request Timeout`, `429 Too Many Requests`.\n- `401 Unauthorized`, `403 Forbidden` (например, во время ротации секрета на стороне приемника).\n- `404 Not Found` (например, во время деплоя приемника).\n- `3xx` — редиректы не выполняются, доставка повторяется на исходный URL.\n- Сетевые ошибки и таймаут запроса (10 секунд).\n\nОстальные ответы `4xx` (включая `410 Gone`) считаются окончательным отказом — доставка не повторяется.\n\nКаждая подписка получает событие независимо. Если один из вебхуков не отвечает, повторы поступают только ему, остальные подписки получают событие один раз.\nЕсли вебхук удалили, отключили или отписали от события, повторы прекращаются.\n\n| Попытка | Задержка перед попыткой |\n|---------|------------------------ |\n| 1       | —                       |\n| 2       | 5 сек.                  |\n| 3       | 10 сек.                 |\n| 4       | 20 сек.                 |\n| 5       | 40 сек.                 |\n| 6       | ~1,3 мин.               |\n| 7       | ~3 мин.                 |\n| 8       | ~5 мин.                 |\n| 9       | ~11 мин.                |\n| 10      | ~21 мин.                |\n| 11      | ~43 мин.                |\n| 12 и далее  | 1 ч.                |\n\nЗадержки указаны без случайного разброса: фактическая задержка отличается от табличной до ±20% и не превышает максимальный интервал.\nЕсли приемник на `429` или `503` вернул заголовок `Retry-After`, следующая попытка повторится не раньше\nуказанного времени, но не позже максимального интервала.\n\n{% cut \"Параметры\" %}\n\n* Начальный интервал — 5 секунд.\n* Коэффициент — 2.\n* Максимальный интервал — 1 час.\n* Случайный разброс задержки — ±20%.\n* Общее окно — 72 часа с момента постановки события в доставку.\nПосле окончания окна событие считается недоставленным и больше не отправляется.\n\nДля `CART_UPDATED` общее окно — 1 час, максимальный интервал — 10 минут.\n\n{% endcut %}\n\n## Порядок доставки\n\nДоставка вебхуков не гарантируется в хронологическом порядке: событие, которое произошло позже, может быть доставлено раньше.\nЧтобы восстановить правильную хронологию, используйте поле `occurred_at` из payload\n\n## Активация вебхука\n\nПосле создания вебхук находится в статусе `INACTIVE` и не отправляет уведомления.\n\nЧтобы активировать вебхук:\n\n1. Вызовите `POST /v1/webhooks/{webhook_id}/validate?activate=true`.\n2. Система отправит POST-запрос на ваш URL с телом — `{\"event_id\": \"...\", \"event\": \"WEBHOOK_VALIDATE\", \"occurred_at\": \"...\"}`.\n3. Ваш сервер должен вернуть HTTP 2xx с телом:\n   ```json\n   { \"message\": \"validated_store_{store_id}\" }\n   ```\n     * `{store_id}` — идентификатор вашего магазина (доступен через `GET /v1/store`).\n4. При успешной проверке вебхук автоматически изменит статус на `ACTIVE`.\n5. При изменении URL вебхука он переходит в статус `INACTIVE`, после чего требуется повторная валидация."},{"name":"Бейджи","description":"Управление бейджами магазина."},{"name":"Гео","description":"Получение списка регионов."},{"name":"Доставка","description":"Справочники служб доставки."},{"name":"Услуги","description":"Управление услугами магазина."},{"name":"Редиректы","description":"Управление редиректами страниц витрины."},{"name":"Алерты","description":"Системные алерты магазина — уведомления о проблемах, которые требуют внимания.\n\n## Важность\n\n- `WARNING` — предупреждение. Такой алерт можно закрыть вручную через\n  `POST /v1/alerts/{alert_id}/resolve`.\n- `CRITICAL` — критичная проблема. Закрывается только автоматически, когда система\n  обнаружит, что причина устранена. Если вы вручную закроете такой алерт, вернется ошибка `400`.\n\n## Статусы\n\n`ACTIVE` — пока открыт, `RESOLVED` — после закрытия (с отметкой `resolved_at`).\nПри повторном возникновении проблемы алерт с прежним идентификатором активируется снова."}],"x-error-response-content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}},"security":[{"BearerAuth":[]}],"paths":{"/v1/categories":{"get":{"operationId":"GetCategories","tags":["Категории товаров"],"summary":"Получение списка категорий","description":"Возвращает список категорий товаров с возможностью пагинации.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"status","in":"query","description":"Фильтр по статусу категории.","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/CategoryStatus"}}}],"responses":{"200":{"description":"Список категорий.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateCategory","tags":["Категории товаров"],"summary":"Создание новой категории","description":"Создает новую категорию товаров с указанными параметрами.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCategoryRequest"}}}},"responses":{"201":{"description":"Категория успешно создана.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Category"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/categories/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CategoryID"}}],"get":{"operationId":"GetCategoryById","tags":["Категории товаров"],"summary":"Получение категории по ID","description":"Возвращает информацию о категории по ее уникальному идентификатору.","responses":{"200":{"description":"Категория","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Category"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateCategory","tags":["Категории товаров"],"summary":"Обновление категории","description":"Обновляет существующую категорию товаров по ее идентификатору.","requestBody":{"required":true,"content":{"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/UpdateCategoryRequest"}}}},"responses":{"200":{"description":"Категория успешно обновлена.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Category"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/categories/{id}/archive":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CategoryID"}}],"post":{"operationId":"ArchiveCategory","tags":["Категории товаров"],"summary":"Архивирование категории","parameters":[{"name":"archive_variants","in":"query","required":false,"schema":{"type":"boolean","default":false},"description":"Архивировать товары в удаляемых категориях."}],"description":"Архивирует категорию товаров по ее идентификатору.\nАрхивированная категория не удаляется физически, а становится недоступной для покупки.\n\nЕсли категория единственная у продукта с неархивными товарами\n(`PUBLISHED/HIDDEN`), архивирование возможно только с `archive_variants=true`.","responses":{"204":{"description":"Категория успешно архивирована."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/categories/{id}/unarchive":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CategoryID"}}],"post":{"operationId":"UnarchiveCategory","tags":["Категории товаров"],"summary":"Восстановление категории из архива","description":"Восстанавливает архивированную категорию товаров по ее идентификатору.\nВосстановленная категория становится доступной для покупки.","responses":{"204":{"description":"Категория успешно восстановлена."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/characteristics":{"get":{"operationId":"GetCharacteristics","tags":["Характеристики товаров"],"summary":"Получение списка характеристик","description":"Возвращает список характеристик товаров с возможностью фильтрации и пагинации.","parameters":[{"name":"page","in":"query","description":"Номер страницы","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"status","in":"query","description":"Фильтр по статусу характеристики.","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/CharacteristicStatus"}}},{"name":"group_id","in":"query","description":"Фильтр по идентификатору группы характеристик.","required":false,"schema":{"$ref":"#/components/schemas/CharacteristicGroupID"}},{"name":"search_text","in":"query","description":"Текст для поиска по названию характеристики.","required":false,"schema":{"type":"string","example":"Цвет"}}],"responses":{"200":{"description":"Список характеристик.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacteristicCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateCharacteristic","tags":["Характеристики товаров"],"summary":"Создание новой характеристики","description":"Создает новую характеристику товара с указанными параметрами.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCharacteristicRequest"}}}},"responses":{"201":{"description":"Характеристика успешно создана.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Characteristic"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/characteristics/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CharacteristicID"}}],"get":{"operationId":"GetCharacteristicById","tags":["Характеристики товаров"],"summary":"Получение характеристики по ID","description":"Возвращает информацию о характеристике по ее уникальному идентификатору.","responses":{"200":{"description":"Характеристика.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Characteristic"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateCharacteristic","tags":["Характеристики товаров"],"summary":"Обновление характеристики","description":"Обновляет существующую характеристику товара по ее идентификатору.","requestBody":{"required":true,"content":{"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/UpdateCharacteristicRequest"}}}},"responses":{"200":{"description":"Характеристика.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Characteristic"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/characteristics/{id}/archive":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CharacteristicID"}}],"post":{"operationId":"ArchiveCharacteristic","tags":["Характеристики товаров"],"summary":"Архивирование характеристики","description":"Архивирует характеристику по ее идентификатору.","responses":{"204":{"description":"Характеристика успешно архивирована."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/characteristics/{id}/unarchive":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CharacteristicID"}}],"post":{"operationId":"UnarchiveCharacteristic","tags":["Характеристики товаров"],"summary":"Восстановление характеристики из архива","description":"Восстанавливает архивированную характеристику по ее идентификатору.","responses":{"204":{"description":"Характеристика успешно восстановлена."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/characteristics/groups":{"get":{"operationId":"GetCharacteristicGroups","tags":["Характеристики товаров"],"summary":"Получение списка групп характеристик","description":"Возвращает список групп характеристик с пагинацией.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"Список групп характеристик.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacteristicGroupCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateCharacteristicGroup","tags":["Характеристики товаров"],"summary":"Создание группы характеристик","description":"Создает новую группу характеристик товаров.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCharacteristicGroupRequest"}}}},"responses":{"201":{"description":"Группа характеристик успешно создана.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacteristicGroup"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт данных.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/characteristics/groups/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CharacteristicGroupID"}}],"get":{"operationId":"GetCharacteristicGroupById","tags":["Характеристики товаров"],"summary":"Получение группы характеристик по ID","description":"Возвращает группу характеристик по ее уникальному идентификатору.","responses":{"200":{"description":"Группа характеристик.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacteristicGroup"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateCharacteristicGroup","tags":["Характеристики товаров"],"summary":"Обновление группы характеристик","description":"Обновляет группу характеристик. Передаются только изменяемые поля.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCharacteristicGroupRequest"}}}},"responses":{"200":{"description":"Группа характеристик успешно обновлена.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacteristicGroup"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт данных.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeleteCharacteristicGroup","tags":["Характеристики товаров"],"summary":"Удаление группы характеристик","description":"Удаляет группу характеристик.","responses":{"204":{"description":"Группа характеристик успешно удалена"},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/characteristics/colors":{"get":{"operationId":"GetCharacteristicColors","tags":["Характеристики товаров"],"summary":"Получение списка цветов","description":"Возвращает список цветов значений характеристик с пагинацией и поиском.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"search_text","in":"query","description":"Поиск по значению цвета.","required":false,"schema":{"type":"string","example":"крас"}}],"responses":{"200":{"description":"Список цветов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacteristicColorCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateCharacteristicColor","tags":["Характеристики товаров"],"summary":"Обновление hex-кода для значения цветовой характеристики","description":"Обновляет hex-код для строкового значения цветовой характеристики.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCharacteristicColorRequest"}}}},"responses":{"200":{"description":"Цвет для значения характеристики успешно сохранен.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CharacteristicColor"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files":{"get":{"operationId":"GetFiles","tags":["Файлы"],"summary":"Получение списка файлов","description":"Возвращает список загруженных файлов магазина.\n\nВозвращаются только изображения (`IMAGE`) и прочие файлы (`OTHER`).\nВидео хранятся отдельно — используйте `GET /v1/videos`.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"Список файлов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FileCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"UploadFile","tags":["Файлы"],"summary":"Загрузка файла","description":"Загружает файл в систему с автоматической дедупликацией.\n\nЕсли файл с таким же содержимым уже существует в системе,\nбудет возвращен существующий файл вместо создания дубликата.\n\nМаксимальный размер файла — 100 MB.","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"Файл для загрузки."}}}}}},"responses":{"201":{"description":"Файл успешно загружен.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/File"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/files/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/FileID"}}],"get":{"operationId":"GetFileById","tags":["Файлы"],"summary":"Получение файла по ID","description":"Возвращает информацию о ранее загруженном файле по его уникальному идентификатору.","responses":{"200":{"description":"Файл.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/File"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/videos":{"get":{"operationId":"GetVideos","tags":["Видео"],"summary":"Получение списка видео","description":"Возвращает список видео с фильтром по статусу обработки и пагинацией.\nВидео отсортированы по возрастанию даты загрузки.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"status","in":"query","description":"Фильтр по статусу обработки видео.","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/VideoStatus"}}}],"responses":{"200":{"description":"Список видео.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VideoCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"UploadVideo","tags":["Видео"],"summary":"Загрузка видео","description":"Загружает видео и ставит его в очередь на обработку.\n\nВ ответе возвращается идентификатор загруженного видео — используйте его, чтобы\nотслеживать статус обработки через `GET /v1/videos/{video_id}` и привязывать видео\nк товару через `media` в `POST /v1/variants` и `PATCH /v1/variants/{id}`.\n\n{% note info \"Ограничения\" %}\n\n- максимальный размер файла — 100 МБ;\n- поддерживаемые форматы: mp4, mov, webm, avi, flv;\n- видео дедуплицируются по содержимому: повторная загрузка того же файла не создает\n  дубликат, а возвращает уже загруженное видео;\n\n{% endnote %}","requestBody":{"required":true,"content":{"multipart/form-data":{"schema":{"type":"object","required":["file"],"properties":{"file":{"type":"string","format":"binary","description":"Файл видео для загрузки"}}}}}},"responses":{"201":{"description":"Видео успешно загружено","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadedVideo"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/videos/from_url":{"post":{"operationId":"UploadVideoFromUrl","tags":["Видео"],"summary":"Загрузка видео по ссылке","description":"Загружает видео по публичной ссылке и ставит его в очередь на обработку.\n\nПоддерживаются:\n\n- публичная ссылка Яндекс.Диска на видеофайл;\n- прямая ссылка на видеофайл;\n- ссылка на плеер видеоплатформы Яндекс KITᵝ — возвращается ранее загруженное видео.\n\nСсылка должна быть доступна без авторизации. Если по ссылке нет видео,\nметод вернет ошибку `400`.\n\nВ ответе возвращается идентификатор видео — используйте его, чтобы отслеживать\nстатус обработки через `GET /v1/videos/{video_id}` и привязывать видео\nк товару через `media` в `POST /v1/variants` и `PATCH /v1/variants/{id}`.\n\n{% note info \"Ограничения\" %}\n\n- максимальный размер файла — 100 МБ;\n- поддерживаемые форматы: mp4, mov, webm, avi, flv;\n- видео дедуплицируются по содержимому: повторная загрузка того же файла не создает\n  дубликат, а возвращает уже загруженное видео;\n\n{% endnote %}","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadVideoFromUrlRequest"}}}},"responses":{"201":{"description":"Видео успешно загружено.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/UploadedVideo"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/videos/{video_id}":{"parameters":[{"name":"video_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/VideoID"}}],"get":{"operationId":"GetVideoById","tags":["Видео"],"summary":"Получение видео по идентификатору","description":"Возвращает видео и текущий статус его обработки.\n\nИспользуйте метод, чтобы дождаться готовности видео после загрузки: статус меняется\n`UPLOADED` → `PROCESSING` → `READY`. В статусе `READY` заполнено поле `content`\nсо ссылкой на плеер, в статусе `ERROR` — поле `error` с описанием ошибки.\n\nОпрашивайте метод не чаще одного раза в 5 секунд: обработка занимает время,\nпропорциональное длительности видео, а на магазин действует общий лимит запросов.\n\nВидео в статусе `ERROR` удаляются автоматически, после удаления метод возвращает `404`.","responses":{"200":{"description":"Видео","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Video"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/products":{"get":{"operationId":"GetProducts","tags":["Товары"],"summary":"Получение списка продуктов","description":"Возвращает список продуктов с пагинацией.","parameters":[{"name":"page","in":"query","description":"Номер страницы","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"Список продуктов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCollection"}}}},"400":{"description":"Некорректный запрос: один из параметров `page`, `per_page` имеет неверный формат или равен нулю.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateProduct","tags":["Товары"],"summary":"Создание нового продукта","description":"Создает новый продукт.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateProductRequest"}}}},"responses":{"201":{"description":"Продукт успешно создан.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"}}}},"400":{"description":"Некорректный запрос: тело запроса отсутствует, содержит некорректный JSON или не соответствует контракту метода; категории или настройки группировки продукта не удовлетворяют правилам каталога.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/products/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ProductID"}}],"get":{"operationId":"GetProductById","tags":["Товары"],"summary":"Получение продукта по ID","description":"Возвращает информацию о продукте по его уникальному идентификатору.","responses":{"200":{"description":"Продукт.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Product"}}}},"400":{"description":"Некорректный запрос: параметр `id` имеет неверный формат.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Продукт с переданным `id` не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateProduct","tags":["Товары"],"summary":"Обновление продукта","description":"Обновляет существующий продукт по его идентификатору.\nПри передаче `category_ids` список привязок категорий полностью заменяется.\nАрхивированные категории из списка привязываются к продукту, но остаются `ARCHIVED`\nи не попадают в `Product.category_ids`, пока не будут разархивированы отдельно.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateProductRequest"}}}},"responses":{"200":{"description":"Продукт.","content":{"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/Product"}}}},"400":{"description":"Некорректный запрос: параметр `id` имеет неверный формат; тело запроса отсутствует, содержит некорректный JSON или не соответствует контракту метода; переданный набор категорий или настройки группировки нарушают правила продукта.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Продукт с переданным `id` либо одна из указанных категорий, группирующих или разделяющих характеристик не найдены.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/products/cards/slugs/bulk_update":{"post":{"operationId":"BulkUpdateProductCardSlugs","tags":["Товары"],"summary":"Массовое изменение URL карточек товаров","description":"Обновляет URL-идентификаторы карточек товаров. За один запрос можно передать до 100 карточек.\nИдентификатор карточки доступен в поле `Variant.product_card_id`.\nСтарые ссылки на карточки продолжат работать.\n\nОперация атомарная: если карточка не найдена, карточка повторяется в запросе несколько раз или один из slug\nнекорректен, дублируется либо занят другой карточкой, изменения не применяются.\nВ поле `errors` ответа перечислены невалидные элементы с идентификаторами карточек, кодами и описаниями ошибок.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateProductCardSlugsRequest"}}}},"responses":{"204":{"description":"URL-идентификаторы карточек обновлены."},"400":{"description":"Некорректный запрос, карточка не найдена либо slug занят другой карточкой. Для невалидных элементов в поле `errors` перечислены идентификаторы карточек, коды и описания ошибок.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkOperationError"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/products/cards/{product_card_id}/similar":{"parameters":[{"name":"product_card_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ProductCardID"}}],"get":{"operationId":"GetSimilarProductCardIDs","tags":["Товары"],"deprecated":true,"summary":"Получение списка похожих карточек товара","description":"Deprecated. Используйте `GET /v1/similar-cards/{product_card_id}/cards`.\n\nВозвращает список уникальных идентификаторов похожих карточек товара по идентификатору карточки товара.\nПохожие карточки симметричны, то есть если карточка **A** является похожей для карточки **B**, то карточка **B** также является похожей для карточки **A**.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"Список похожих карточек товара.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCardIDCollection"}}}},"400":{"description":"Некорректный запрос: параметр `product_card_id` имеет неверный формат либо один из параметров `page`, `per_page` имеет неверный формат или равен нулю.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Карточка товара с переданным `product_card_id` не найдена.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/products/cards/{product_card_id}/similar/add":{"parameters":[{"name":"product_card_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ProductCardID"}}],"post":{"operationId":"AddSimilarProductCards","tags":["Товары"],"deprecated":true,"summary":"Добавление похожих карточек товара","description":"Deprecated. Используйте `POST /v1/similar-cards/{product_card_id}/objects/add`.\nВ отличие от этого метода, новый метод изменяет только настройки карточки `product_card_id`. Обратные связи у карточек из запроса новый метод не создает.\n\nДобавляет похожие карточки товара по идентификатору карточки товара. Максимальное количество карточек — 500.\nПохожие карточки симметричны, то есть если карточка **A** является похожей для карточки **B**, то карточка **B** также является похожей для карточки **A**.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarProductCardsRequest"}}}},"responses":{"204":{"description":"Похожие карточки товара успешно добавлены."},"400":{"description":"Некорректный запрос: параметр `product_card_id` имеет неверный формат; тело запроса отсутствует, содержит некорректный JSON или не соответствует контракту метода; передана исходная карточка, отсутствует одна из карточек, указанных в теле запроса, или список содержит недопустимые связи.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/products/cards/{product_card_id}/similar/remove":{"parameters":[{"name":"product_card_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ProductCardID"}}],"post":{"operationId":"DeleteSimilarProductCards","tags":["Товары"],"deprecated":true,"summary":"Удаление похожих карточек товара","description":"Deprecated. Используйте `POST /v1/similar-cards/{product_card_id}/objects/remove`.\nВ отличие от этого метода, новый метод изменяет только настройки карточки `product_card_id`. Обратные связи у карточек из запроса новый метод не удаляет.\n\nУдаляет похожие карточки товара по идентификатору карточки товара. Максимальное количество карточек — 500.\nПохожие карточки симметричны, то есть если карточка **A** является похожей для карточки **B**, то карточка **B** также является похожей для карточки **A**.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarProductCardsRequest"}}}},"responses":{"204":{"description":"Похожие карточки товара успешно удалены."},"400":{"description":"Некорректный запрос: параметр `product_card_id` имеет неверный формат; тело запроса отсутствует, содержит некорректный JSON или не соответствует контракту метода; список содержит недопустимые связи.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/variants":{"get":{"operationId":"GetVariants","tags":["Товары"],"summary":"Получение списка товаров","description":"Возвращает список товаров с возможностью фильтрации и пагинации.\n\n Возможна фильтрация по:\n  - идентификатору продукта;\n  - статусу товара;\n  - тексту названия товара, артикулу, штрихкоду и KIT ID.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"product_id","in":"query","description":"Фильтр по идентификатору продукта.","required":false,"schema":{"$ref":"#/components/schemas/ProductID"}},{"name":"product_card_id","in":"query","description":"Фильтр по идентификатору карточки товара.","required":false,"schema":{"$ref":"#/components/schemas/ProductCardID"}},{"name":"status","in":"query","description":"Фильтр по статусу товара. По умолчанию возвращаются товары всех статусов, кроме `ARCHIVED`.","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/VariantStatus"}}},{"name":"name","in":"query","description":"Текст для поиска по тексту названия товара, артикулу, штрихкоду и KIT ID. Поиск регистронезависимый, частичный.","required":false,"schema":{"type":"string","example":"iPhone"}}],"responses":{"200":{"description":"Список товаров.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantCollection"}}}},"400":{"description":"Некорректный запрос: один из параметров `page`, `per_page` имеет неверный формат или равен нулю; `product_id`, `product_card_id` или `status` имеет неверный формат или недопустимое значение.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateVariant","tags":["Товары"],"summary":"Создание нового товара","description":"Создает новый товар с указанными параметрами.\nДобавьте товар в существующий продукт. Для этого в `product_id` укажите идентификатор продукта, который создали через POST /v1/products. Задайте категории на уровне продукта.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateVariantRequest"}}}},"responses":{"201":{"description":"Товар успешно создан.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Variant"}}}},"400":{"description":"Некорректный запрос: тело запроса отсутствует, содержит некорректный JSON или не соответствует контракту метода; данные товара, цены, остатки, медиа, характеристики или связь с продуктом нарушают правила каталога.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Не найдены указанная характеристика, указанный файл изображения или указанное видео.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/variants/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/VariantID"}}],"get":{"operationId":"GetVariantById","tags":["Товары"],"summary":"Получение товара по ID","description":"Возвращает информацию о товаре по его уникальному идентификатору.","responses":{"200":{"description":"Товар.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Variant"}}}},"400":{"description":"Некорректный запрос: параметр `id` имеет неверный формат.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Товар с переданным `id` не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateVariant","tags":["Товары"],"summary":"Обновление товара","description":"Обновляет существующий товар по его идентификатору.","requestBody":{"required":true,"content":{"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/UpdateVariantRequest"}}}},"responses":{"200":{"description":"Товар успешно обновлен.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Variant"}}}},"400":{"description":"Некорректный запрос: параметр `id` имеет неверный формат; тело запроса отсутствует, содержит некорректный JSON или не соответствует контракту метода; архивный товар нельзя обновлять; изменение статуса, характеристик, цен, остатков, медиа или связи с продуктом недопустимо; указанный продукт или склад не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Товар с переданным `id` не найден либо не найдены указанная характеристика, указанный файл изображения или указанное видео.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeleteVariant","tags":["Товары"],"summary":"Безвозвратное удаление архивного товара","description":"Безвозвратно удаляет товар. Операция доступна только для товаров\nв статусе `ARCHIVED` — для остальных возвращается ошибка 400.\nВосстановить товар после удаления невозможно.\n\nВ отличие от удаления, архивация `(POST /v1/variants/{id}/archive)`\nпереводит товар в статус `ARCHIVED` и делает его недоступным для\nпокупки, но данные сохраняются: товар остается в списке\n`GET /v1/variants` с фильтром `status=ARCHIVED` и его можно вернуть\nс помощью запроса `POST /v1/variants/{id}/unarchive`.\n\nЧтобы удалить активный товар, сначала переведите его в архив.\nНе удаляйте товар сразу после архивации, если он был опубликован\nи мог участвовать в заказах: безвозвратное удаление ухудшит\nклиентский опыт, например в истории заказов. Безвозвратно удаляйте\nтолько те архивные товары, которые точно больше не понадобятся.","responses":{"204":{"description":"Товар безвозвратно удален"},"400":{"description":"Некорректный запрос: параметр `id` имеет неверный формат либо товар не находится в статусе `ARCHIVED`.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Товар с переданным `id` не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/variants/{id}/archive":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/VariantID"}}],"post":{"operationId":"ArchiveVariant","tags":["Товары"],"summary":"Архивирование товара","description":"Архивирует товар, меняя его статус на `ARCHIVED`.\nТовар не удаляется физически, а становится недоступным для покупки:\nданные сохраняются, товар доступен в списке `GET /v1/variants`\nс фильтром `status=ARCHIVED` и его можно восстановить с помощью запроса:\n`POST /v1/variants/{id}/unarchive`.\n\nБезвозвратно удалить архивный товар можно запросом: `DELETE /v1/variants/{id}`.","responses":{"204":{"description":"Запрос на архивирование обработан; если товар с переданным `id` не найден или переход в `ARCHIVED` неприменим, состояние товара не изменяется."},"400":{"description":"Некорректный запрос: параметр `id` имеет неверный формат.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/variants/{id}/unarchive":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/VariantID"}}],"post":{"operationId":"UnarchiveVariant","tags":["Товары"],"summary":"Восстановление товара из архива","description":"Восстанавливает архивированный товар, меняя статус с `ARCHIVED` на `HIDDEN`.\nПосле восстановления товар можно будет опубликовать через обновление статуса.","responses":{"204":{"description":"Запрос на восстановление обработан; если товар с переданным `id` не найден или переход в `HIDDEN` неприменим, состояние товара не изменяется."},"400":{"description":"Некорректный запрос: параметр `id` имеет неверный формат.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/variants/{id}/external_ids":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/VariantID"}}],"get":{"operationId":"GetVariantExternalIDs","tags":["Товары"],"summary":"Получение внешних идентификаторов товара","description":"Возвращает список внешних идентификаторов товара по системе.","responses":{"200":{"description":"Список внешних идентификаторов товара.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantExternalIDsCollection"}}}},"400":{"description":"Некорректный запрос: параметр `id` имеет неверный формат.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Товар с переданным `id` не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/variants/{id}/external_ids/{system_type}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/VariantID"}},{"name":"system_type","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ExternalSystemType"}}],"put":{"operationId":"SetVariantExternalID","tags":["Товары"],"summary":"Установка внешнего идентификатора","description":"Устанавливает или обновляет внешний идентификатор товара для указанной системы.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetVariantExternalIdRequest"}}}},"responses":{"204":{"description":"Внешний идентификатор успешно установлен."},"400":{"description":"Некорректный запрос: параметр `id` имеет неверный формат либо `system_type` имеет неверное или неподдерживаемое значение; тело запроса отсутствует, содержит некорректный JSON или не соответствует контракту метода; внешний идентификатор не соответствует ограничениям метода.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Товар с переданным `id` не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeleteVariantExternalID","tags":["Товары"],"summary":"Удаление внешнего идентификатора","description":"Удаляет внешний идентификатор товара для указанной системы.","responses":{"204":{"description":"Запрос на удаление обработан; отсутствие внешнего идентификатора для указанного `system_type` не считается ошибкой."},"400":{"description":"Некорректный запрос: параметр `id` имеет неверный формат либо `system_type` имеет неверное или неподдерживаемое значение.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Товар с переданным `id` не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/variants/{id}/attachments":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/VariantID"}}],"get":{"operationId":"GetVariantAttachments","tags":["Товары"],"summary":"Получение документов товара","description":"Возвращает список документов товара (инструкции, сертификаты, паспорта), отсортированный по порядку отображения.","responses":{"200":{"description":"Список документов товара.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantAttachmentCollection"}}}},"400":{"description":"Некорректный запрос: параметр `id` имеет неверный формат.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Товар с переданным `id` не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateVariantAttachment","tags":["Товары"],"summary":"Прикрепление документа к товару","description":"Прикрепляет документ к товару по идентификатору ранее загруженного файла\n(файл загружается через POST /v1/files).\n\nОграничения:\n- не более 10 документов на товар;\n- допустимые расширения файла — pdf, doc, docx, xls, xlsx, rtf, txt, jpg, jpeg, png, svg, webp;\n- название не должно содержать символы ':' и '/';\n- к архивному товару прикрепить документ нельзя.\n\nВозвращает `409 Conflict`, если файл уже прикреплен к товару\nили порядок отображения занят другим документом.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantAttachmentCreateRequest"}}}},"responses":{"201":{"description":"Документ успешно прикреплен к товару.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantAttachment"}}}},"400":{"description":"Некорректный запрос: параметр `id` имеет неверный формат; тело запроса отсутствует, содержит некорректный JSON или не соответствует контракту метода; товар архивирован, файл не является допустимым документом, превышен лимит 10 документов или неверны название и порядок отображения.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Товар с переданным `id` или файл с переданным `file_id` не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Файл уже прикреплён к товару или переданный `display_sequence` занят другим документом.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/variants/{id}/attachments/{file_id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/VariantID"}},{"name":"file_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/FileID"}}],"patch":{"operationId":"UpdateVariantAttachment","tags":["Товары"],"summary":"Обновление документа товара","description":"Обновляет название и/или порядок отображения документа товара.\nПередавайте только те поля, которые нужно изменить — не переданные\nполя остаются без изменений.\n\nЕсли указанный display_sequence уже занят другим документом этого\nтовара, возвращается ошибка 409. Остальные документы автоматически не переупорядочиваются.\nЕсли нужно освободить нужный порядок, сначала измените display_sequence другого документа.\n\nДокументы архивного товара изменять нельзя — возвращается ошибка 400.","requestBody":{"required":true,"content":{"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/VariantAttachmentUpdateRequest"}}}},"responses":{"200":{"description":"Документ успешно обновлен","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantAttachment"}}}},"400":{"description":"Некорректный запрос: параметр `id` или `file_id` имеет неверный формат; тело запроса отсутствует, содержит некорректный JSON или не соответствует контракту метода; товар архивирован либо название или порядок отображения документа недопустимы.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Товар с переданным `id` или прикреплённый документ с переданным `file_id` не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Переданный `display_sequence` занят другим документом товара.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeleteVariantAttachment","tags":["Товары"],"summary":"Открепление документа от товара","description":"Операция открепляет документ от товара — удаляется только связь.\nФайл сохраняется и остается доступным для повторного прикрепления.\nЕсли документ привязан к другим товарам, их связи не затрагиваются.\n\nЕсли документ не прикреплен к товару (в том числе при повторном\nудалении), возвращается ошибка 404.\n\nУ архивного товара удалять документы нельзя — возвращается ошибка 400.","responses":{"204":{"description":"Документ откреплен от товара"},"400":{"description":"Некорректный запрос: параметр `id` или `file_id` имеет неверный формат либо товар архивирован и его документы нельзя изменять.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Товар с переданным `id` или прикреплённый документ с переданным `file_id` не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/variants/stocks/bulk_update":{"post":{"operationId":"BulkUpdateStocks","tags":["Товары"],"summary":"Массовое обновление остатков","description":"Массово обновляет остатки товаров по складам. За один запрос можно\nпередать до 5000 элементов — пар товаров + склад с новым количеством.\n\nОперация выполняется синхронно и атомарно. Запрос будет отклонен с ошибкой 400, а изменения — не применены, если в батче обнаружен хотя бы один из следующих случаев:\n- товар или склад не найден;\n- товар или склад архивирован;\n- пара «товар + склад» указана в батче более одного раза.\n\nВ поле errors ответа будет представлен список всех невалидных элементов с указанием идентификаторов соответствующих товаров и складов.\n\nКоличество устанавливается как абсолютное значение.\nЗарезервированное количество (`reserved`) не изменяется.\nОстатки на складах, не упомянутых в батче, не затрагиваются.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdateStocksRequest"}}}},"responses":{"204":{"description":"Остатки успешно обновлены."},"400":{"description":"Некорректный запрос: тело запроса отсутствует, содержит некорректный JSON или не соответствует контракту метода; батч пуст, содержит больше 5000 элементов, повторяющиеся пары товара и склада, товары или склады, которые не найдены либо архивированы, недопустимое количество. Для невалидных элементов батча в поле `errors` перечислены идентификаторы, коды и описания ошибок.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkOperationError"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/variants/prices/bulk_update":{"post":{"operationId":"BulkUpdatePrices","tags":["Товары"],"summary":"Массовое обновление цен","description":"Массово обновляет цены товаров. За один запрос можно передать\nдо 5000 элементов — товар с новыми ценами.\n\nОперация синхронная и атомарная. Если хотя бы один элемент батча\nнедействителен (товар не найден или архивирован, товар передан в батче более одного раза, цена некорректна),\nвесь запрос отклоняется с ошибкой 400, и ни одно изменение не применяется.\nВ поле `errors` ответа перечислены все недействительные элементы с идентификаторами товара.\n\nОба поля цен необязательные. Чтобы не менять текущее значение, не передавайте соответствующий ключ.\nЧтобы установить новое значение, передайте его.\n`manual_discount_price: null` — сбрасывает цену со скидкой.\n`price: null` — сбрасывает базовую цену (доступно только для неопубликованных товаров, для опубликованных товаров сброс цены запрещен).\n\nЕсли цена со скидкой превышает цену до скидки, элемент отклоняется с ошибкой `INVALID_PRICE`.\nПередайте новую цену со скидкой либо `null` для ее сброса.\n\nПри смене цены до скидки цена по акции пересчитывается.\nЕсли новая цена меняет вхождение товара в акцию, состав акций актуализируется позже — в фоновом режиме.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkUpdatePricesRequest"}}}},"responses":{"204":{"description":"Цены успешно обновлены."},"400":{"description":"Некорректный запрос: тело запроса отсутствует, содержит некорректный JSON или не соответствует контракту метода; батч пуст, содержит больше 5000 элементов, повторяющиеся товары, товары, которые не найдены либо архивированы, или недопустимые цены. Для невалидных элементов батча в поле `errors` перечислены идентификаторы, коды и описания ошибок.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkOperationError"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/warehouses":{"get":{"operationId":"GetWarehouses","tags":["Склады"],"summary":"Получение списка складов","description":"Возвращает список складов с возможностью пагинации.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"status","in":"query","description":"Фильтр по статусу склада.","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/WarehouseStatus"}}}],"responses":{"200":{"description":"Список складов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WarehouseCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateWarehouse","tags":["Склады"],"summary":"Создание нового склада","description":"Создает новый склад. URL-идентификатор (slug) генерируется автоматически из названия.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWarehouseRequest"}}}},"responses":{"201":{"description":"Склад успешно создан.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Warehouse"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/warehouses/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/WarehouseID"}}],"get":{"operationId":"GetWarehouseById","tags":["Склады"],"summary":"Получение склада по ID","description":"Возвращает информацию о складе по его уникальному идентификатору.","responses":{"200":{"description":"Склад.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Warehouse"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateWarehouse","tags":["Склады"],"summary":"Обновление склада","description":"Обновляет существующий склад. Slug нельзя изменить после создания.","requestBody":{"required":true,"content":{"application/merge-patch+json":{"schema":{"$ref":"#/components/schemas/UpdateWarehouseRequest"}}}},"responses":{"200":{"description":"Склад успешно обновлен.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Warehouse"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/warehouses/{id}/archive":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/WarehouseID"}}],"post":{"operationId":"ArchiveWarehouse","tags":["Склады"],"summary":"Архивирование склада","description":"Архивирует склад, меняя его статус на `ARCHIVED`.\nСклад не удаляется физически, а становится недоступным для использования.","responses":{"204":{"description":"Склад успешно архивирован."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/warehouses/{id}/unarchive":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/WarehouseID"}}],"post":{"operationId":"UnarchiveWarehouse","tags":["Склады"],"summary":"Восстановление склада из архива","description":"Восстанавливает архивированный склад, меняя его статус с `ARCHIVED` на `ACTIVE`.\nПосле восстановления склад можно будет использовать для хранения товаров.","responses":{"204":{"description":"Склад успешно восстановлен."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/users/current":{"get":{"operationId":"GetCurrentUser","tags":["Пользователи"],"summary":"Получение текущего пользователя","description":"Возвращает информацию о владельце API токена.","responses":{"200":{"description":"Информация о пользователе.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/User"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/store":{"get":{"operationId":"GetStore","tags":["Магазин"],"summary":"Получение информации о магазине","description":"Возвращает информацию о текущем магазине.","responses":{"200":{"description":"Информация о магазине.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Store"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/store/feeds":{"get":{"operationId":"GetStoreFeeds","tags":["Магазин"],"summary":"Получение ссылок на фиды каталога","description":"Возвращает ссылки на фиды каталога магазина — регулярные выгрузки товаров.\n\nСсылка на фид постоянная — она не меняется при обновлении содержимого фида.\nПолучите ее один раз и периодически скачивайте по ней сам фид.","responses":{"200":{"description":"Список фидов каталога.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedCollection"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/customers":{"get":{"operationId":"GetCustomers","tags":["Клиенты"],"summary":"Получение списка клиентов","description":"Возвращает список клиентов магазина с пагинацией. По умолчанию список отсортирован по идентификатору клиента по возрастанию.\n\nЧтобы забирать изменения, передайте параметр `updated_from` с сортировкой `sort_by=updated_at&sort_direction=asc`.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"agreement_for_promo","in":"query","description":"Фильтр по согласию клиента на получение рекламных материалов.\nНе передавайте параметр, чтобы получить всех клиентов.","required":false,"schema":{"type":"boolean","example":true}},{"name":"updated_from","in":"query","description":"Самая ранняя дата и время обновления клиента включительно.","required":false,"example":"2021-01-01T00:00:00Z","schema":{"type":"string","format":"date-time"}},{"name":"updated_to","in":"query","description":"Самая поздняя дата и время обновления клиента включительно.","required":false,"example":"2021-01-01T00:00:00Z","schema":{"type":"string","format":"date-time"}},{"name":"sort_by","in":"query","description":"Поле для сортировки.","required":false,"schema":{"type":"string","enum":["customer_id","registered_at","updated_at"],"default":"customer_id"}},{"name":"sort_direction","in":"query","description":"Направление сортировки.","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"asc"}}],"responses":{"200":{"description":"Список клиентов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CustomerCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/customers/{customer_id}":{"parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CustomerID"}}],"get":{"operationId":"GetCustomerById","tags":["Клиенты"],"summary":"Получение клиента по ID","description":"Возвращает информацию о клиенте по его уникальному идентификатору.","responses":{"200":{"description":"Клиент.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateCustomer","tags":["Клиенты"],"summary":"Обновление клиента","description":"Обновляет информацию о клиенте.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCustomerRequest"}}}},"responses":{"200":{"description":"Клиент успешно обновлен.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Customer"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/customers/{customer_id}/cart":{"parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CustomerID"}}],"get":{"operationId":"GetCustomerCart","tags":["Клиенты"],"summary":"Получение корзины клиента","description":"Возвращает текущий состав корзины клиента. Товары из наборов и выбранные подарки\nпопадают в `items` отдельными позициями наравне с обычными товарами. Позиции с товарами,\nснятыми с публикации, в выдачу не попадают. Если корзина пуста или ее у клиента еще\nне было, свойство `items` пусто, а суммы равны `0`.","responses":{"200":{"description":"Корзина клиента.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Cart"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/customers/{customer_id}/orders":{"parameters":[{"name":"customer_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CustomerID"}},{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"get":{"operationId":"GetOrdersByCustomerId","tags":["Заказы"],"summary":"Получение списка заказов по ID клиента","description":"Возвращает список заказов клиента по его уникальному идентификатору.\n\nСостав списка определяется так же, как в `GET /v1/orders`.","responses":{"200":{"description":"Список заказов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/orders":{"get":{"operationId":"GetOrders","tags":["Заказы"],"summary":"Получение списка заказов","description":"Возвращает список заказов магазина с пагинацией. По умолчанию список отсортирован по дате создания по убыванию.\n\nЧтобы забирать изменения, передайте параметр `updated_from` с сортировкой `sort_by=updated_at&sort_direction=asc`.\n\nСостав списка совпадает со списком заказов в кабинете продавца: отдаются оформленные заказы\nв любом статусе, включая `FROZEN` и `CANCELLED`. Не отдаются незавершенные оформления —\nкорзины, по которым покупатель не дошел до оплаты, — и заказы подарочных карт.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"updated_from","in":"query","description":"Самая ранняя дата и время обновления заказа включительно.","required":false,"example":"2021-01-01T00:00:00Z","schema":{"type":"string","format":"date-time"}},{"name":"updated_to","in":"query","description":"Самая поздняя дата и время обновления заказа включительно.","required":false,"example":"2021-01-01T00:00:00Z","schema":{"type":"string","format":"date-time"}},{"name":"sort_by","in":"query","description":"Поле для сортировки.","required":false,"schema":{"type":"string","enum":["created_at","updated_at"],"default":"created_at"}},{"name":"sort_direction","in":"query","description":"Направление сортировки.","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"desc"}}],"responses":{"200":{"description":"Список заказов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/orders/waybills":{"post":{"operationId":"GenerateOrderWaybills","tags":["Заказы"],"summary":"Получение накладных для частей заказов","description":"Система формирует накладные (акты приема‑передачи отправлений) для указанных частей заказов и возвращает ссылки на PDF‑файлы с документами.\n\nПравила и ограничения:\n\n- Накладная оформляется на партию — части заказов автоматически группируются по складу и службе доставки, для каждой такой группы создается отдельный документ.\n\n- При каждом запросе система запрашивает накладную у службы доставки — повторный запрос не использует ранее сгенерированный документ, а формирует новый.\n\n- Части заказов, для которых невозможно получить накладную (например, при самовывозе, если доставка еще не создана в службе или служба не предоставляет накладные), не включаются в массив `waybills`.\n  Такие части заказов отображаются в массиве `skipped` — с указанием причины, по которой накладная не была сформирована.\n\n- Ссылки на PDF‑файлы подписаны и имеют ограниченный срок действия. Дата истечения срока указана в поле `expires_at`.\n  Хранить ссылку не требуется — для получения актуальной ссылки выполните повторный запрос.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GenerateOrderWaybillsRequest"}}}},"responses":{"200":{"description":"Накладные сформированы.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderWaybillCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/orders/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/OrderID"}}],"get":{"operationId":"GetOrderById","tags":["Заказы"],"summary":"Получение заказа по ID","description":"Возвращает информацию о заказе по его уникальному идентификатору.","responses":{"200":{"description":"Заказ.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Order"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/orders/{id}/addons":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/OrderID"}}],"get":{"operationId":"GetOrderAddons","tags":["Заказы"],"summary":"Получение списка услуг заказа","description":"Возвращает список услуг заказа по его уникальному идентификатору.","responses":{"200":{"description":"Список услуг заказа.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderAddonCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/orders/{id}/confirm":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/OrderID"}}],"post":{"operationId":"ConfirmOrder","tags":["Заказы"],"summary":"Подтверждение заказа","description":"Подтверждает заказ. Заказ должен быть в статусе `WAIT_FOR_CONFIRMATION`.","responses":{"204":{"description":"Заказ успешно подтвержден."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/orders/{id}/cancel":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/OrderID"}}],"post":{"operationId":"CancelOrder","tags":["Заказы"],"summary":"Отмена заказа","description":"Отменяет заказ. Возможность отмены зависит от текущего статуса заказа.","responses":{"204":{"description":"Заказ успешно отменен."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/orders/{id}/delivery/complete":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/OrderID"}}],"post":{"operationId":"CompleteOrderDelivery","tags":["Заказы"],"summary":"Завершение доставки заказа","description":"Полностью завершает доставку заказа.\nПодходит для самовывоза и собственной доставки магазина, когда автоматизация доставки отключена.","responses":{"204":{"description":"Доставка успешно завершена."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/orders/{id}/delivery-labels":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/OrderID"}}],"get":{"operationId":"GetOrderDeliveryLabels","tags":["Заказы"],"summary":"Получение ярлыков доставки заказа","description":"Возвращает ярлыки доставки по частям заказа. Ярлык — это PDF‑файл с адресом, трек‑номером и штрихкодом. Его наклеивают на отправление.\n\nПри первом обращении ярлык запрашивают у службы доставки, потом его можно использовать повторно. Повторный запрос по той же части заказа и в том же формате вернет ранее сформированный документ.\n\nНекоторые части заказа не попадают в `delivery_labels`:\n\n* самовывоз;\n* собственная доставка магазина;\n* заказ еще не передан в службу доставки.\nОни перечисляются в `skipped` c указыванием причины.\n\nЕсли служба доставки отказала по одной части заказа, остальные не затрагиваются. Проблемную часть переносят в `skipped` с причиной `GENERATION_FAILED`, ярлыки для других частей возвращают как обычно.\nКод `500` означает, что запрос не удалось обработать целиком.\n\n{% note info %}\n\nСсылки на ярлыки подписаны и действуют ограниченное время. Момент истечения срока указан в поле `expires_at`.\nНе храните ссылку — получите новую сделав повторный запрос.\n\n{% endnote %}","parameters":[{"name":"label_format","in":"query","description":"Размер ярлыка задают в миллиметрах. Если размер не передан, служба доставки использует свой формат по умолчанию.\n\nРазмеры зависят от службы доставки. Список размеров получают запросом `GET /v1/delivery/label-formats`. Если служба работает в режиме mode: `EXPLICIT_FORMATS` и запрошенного размера нет в списке, часть заказа попадает в `skipped` с причиной `FORMAT_NOT_SUPPORTED`.\n\nСлужбы в режиме `mode: PROVIDER_DEFAULT` не учитывают размер. Они печатают ярлык в своем стандартном размере.\nДля таких частей в ответе поле `label_format` будет пустым.","required":false,"schema":{"$ref":"#/components/schemas/DeliveryLabelFormatType"}}],"responses":{"200":{"description":"Ярлыки доставки заказа.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderDeliveryLabelCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/orders/{id}/marking-codes":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/OrderID"}}],"post":{"operationId":"SetOrderMarkingCodes","tags":["Заказы"],"summary":"Запись кодов маркировки «Честный знак»","description":"Записывает коды маркировки «Честный знак» для позиций заказа.\n\nПравила и ограничения:\n\n- Каждая позиция заказа — это одна единица товара, поэтому позиции соответствует\nровно один код маркировки. Идентификаторы позиций возвращает `GET /v1/orders/{id}`\nв поле `delivery_chunks[].items[].id`.\n\n- Все переданные позиции должны принадлежать указанному заказу,\n`order_item_id` не должны повторяться.\n\n- Код передается целиком, вместе с криптохвостом.\n\n- Чтобы снять код, который вы записали ранее, передайте `\"marking_code\": null`.\n\n- Метод идемпотентен. Если любой код не проходит проверку, система отклоняет запрос и не записывает коды.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetOrderMarkingCodesRequest"}}}},"responses":{"204":{"description":"Коды маркировки успешно записаны."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/orders/{id}/payment-link":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/OrderID"}}],"get":{"operationId":"GetOrderPaymentLink","tags":["Заказы"],"summary":"Получение ссылки на оплату заказа","description":"Возвращает подписанную ссылку на страницу оплаты заказа.\n\nОтправьте ссылку покупателю — он сможет оплатить заказ без входа в аккаунт. Доступ к заказу обеспечивает подпись в параметре `signature`.\n\nСсылка постоянна — для одного заказа метод всегда выдает одинаковое значение. Ссылка доступна для заказа в любом статусе — в том числе для оплаченного или отмененного.\n\n{% note info %}\n\nУ ссылки нет срока действия, отозвать ее отдельно нельзя. Отзыв API‑токена не аннулирует ранее выданные ссылки.\n\n{% endnote %}","parameters":[{"name":"source","in":"query","description":"Метка источника перехода: попадает в параметр `from` итоговой ссылки,\nчтобы магазин мог отличать в аналитике переходы из разных интеграций.\nЕсли параметр не передан, используется `crm` для токена CRM-интеграции и `api` для остальных токенов.","required":false,"schema":{"type":"string","maxLength":32,"pattern":"^[a-z0-9_-]+$","example":"api"}}],"responses":{"200":{"description":"Ссылка на оплату заказа.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrderPaymentLink"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/promocodes/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/PromocodeID"}}],"get":{"operationId":"GetPromocodeById","tags":["Промокоды"],"summary":"Получение промокода по уникальному идентификатору","description":"Возвращает информацию о промокоде по его уникальному идентификатору.","responses":{"200":{"description":"Промокод.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Promocode"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdatePromocode","tags":["Промокоды"],"deprecated":true,"summary":"Обновление промокода","description":"Обновляет промокод по уникальному идентификатору.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromocodeRequest"}}}},"responses":{"200":{"description":"Промокод успешно обновлен.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Promocode"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/promocodes":{"get":{"operationId":"GetPromocodes","tags":["Промокоды"],"deprecated":true,"summary":"Получение списка промокодов","description":"Возвращает список промокодов магазина с пагинацией.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"status","in":"query","description":"Статус промокода.","required":true,"schema":{"$ref":"#/components/schemas/PromocodeStatus"}}],"responses":{"200":{"description":"Список промокодов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromocodeCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreatePromocode","tags":["Промокоды"],"deprecated":true,"summary":"Создание промокода","description":"Создает новый промокод.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromocodeRequest"}}}},"responses":{"201":{"description":"Промокод успешно создан.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Promocode"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/promocodes/{id}/categories":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/PromocodeID"}}],"get":{"operationId":"GetPromocodeCategoryIDs","tags":["Промокоды"],"deprecated":true,"summary":"Получение идентификаторов категорий, к которым применяется промокод","description":"Возвращает идентификаторы категорий, к которым применяется промокод (на основе его уникального идентификатора).\nРаботает только для промокодов с параметром `binding_mode = SELECTED_CATEGORIES_COLLECTIONS`.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID категорий промокода.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/promocodes/{id}/collections":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/PromocodeID"}}],"get":{"operationId":"GetPromocodeCollectionIDs","tags":["Промокоды"],"deprecated":true,"summary":"Получение идентификаторов коллекций, к которым применяется промокод","description":"Возвращает идентификаторы коллекций, к которым применяется промокод, по его уникальному идентификатору.\nИспользуется для промокодов с `binding_mode = SELECTED_CATEGORIES_COLLECTIONS`.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID коллекций промокода.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/promocodes/{id}/variants":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/PromocodeID"}}],"get":{"operationId":"GetPromocodeVariantIDs","tags":["Промокоды"],"deprecated":true,"summary":"Получение уникальных идентификаторов товаров промокода","description":"Возвращает уникальные идентификаторы товаров, к которым применяется промокод (на основе его уникального идентификатора).\nРаботает только для промокодов с параметром `binding_mode = SELECTED_VARIANTS`.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID товаров промокода.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/promocodes/{id}/objects/add":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/PromocodeID"}}],"post":{"operationId":"AddPromocodeObjects","tags":["Промокоды"],"deprecated":true,"summary":"Добавление объектов в промокод","description":"Добавляет товары, категории или коллекции в промокод. Максимальное количество объектов — 500.\n\nПромокод должен иметь параметр `binding_mode = SELECTED_VARIANTS` (для добавления товаров) или `SELECTED_CATEGORIES_COLLECTIONS` (для добавления категорий и коллекций).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromocodeObjects"}}}},"responses":{"204":{"description":"Объекты успешно добавлены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/promocodes/{id}/objects/remove":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/PromocodeID"}}],"post":{"operationId":"RemovePromocodeObjects","tags":["Промокоды"],"deprecated":true,"summary":"Удаление объектов из промокода","description":"Удаляет товары, категории или категории из промокода. Максимальное количество объектов — 500.\n\nПромокод должен иметь `binding_mode = SELECTED_VARIANTS` (для удаления товаров) или `SELECTED_CATEGORIES_COLLECTIONS` (для удаления категорий или коллекций).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromocodeObjects"}}}},"responses":{"204":{"description":"Объекты успешно удалены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/promocode_groups":{"get":{"operationId":"GetPromocodeGroups","tags":["Группы промокодов"],"summary":"Получение списка групп промокодов","description":"Возвращает список групп промокодов магазина с пагинацией.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"status","in":"query","description":"Фильтрация по статусу группы.","required":false,"schema":{"$ref":"#/components/schemas/PromocodeGroupStatus"}},{"name":"sort_by","in":"query","description":"Поле для сортировки.","required":false,"schema":{"type":"string","enum":["created_at","title","usage_count"],"default":"created_at"}},{"name":"sort_direction","in":"query","description":"Направление сортировки.","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"desc"}}],"responses":{"200":{"description":"Список групп промокодов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromocodeGroupCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreatePromocodeGroup","tags":["Группы промокодов"],"summary":"Создание группы промокодов","description":"Группа промокодов создается за один шаг — вместе с переданным набором кодов.\n\nПроцесс состоит из трех шагов:\n\n1. Создание группы.\n2. Добавление кодов.\n3. Сохранение группы как активной.\nЕсли на последнем шаге код конфликтует с кодом другой активной группы (в пересекающемся периоде действия), операция отменяется с ошибкой `409 Conflict`.\n\nВ группе должен быть хотя бы один код.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreatePromocodeGroupRequest"}}}},"responses":{"201":{"description":"Группа промокодов успешно создана.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromocodeGroup"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт — один или несколько кодов уже используются в другой активной группе с пересекающимся периодом действия.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/promocode_groups/{id}":{"parameters":[{"name":"id","in":"path","required":true,"description":"Уникальный идентификатор группы промокодов.","schema":{"$ref":"#/components/schemas/PromocodeGroupID"}}],"get":{"operationId":"GetPromocodeGroupByID","tags":["Группы промокодов"],"summary":"Получение группы промокодов по идентификатору","description":"Возвращает детальную информацию о группе промокодов по ее уникальному идентификатору.","responses":{"200":{"description":"Группа промокодов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromocodeGroup"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"UpdatePromocodeGroup","tags":["Группы промокодов"],"summary":"Обновление группы промокодов","description":"Обновляет параметры существующей группы промокодов.\n\nВозвращает `409 Conflict`, если изменение периода действия (`valid_from` / `valid_until`) приводит к конфликту кодов группы с кодами другой активной группы.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromocodeGroupRequest"}}}},"responses":{"200":{"description":"Группа промокодов успешно обновлена.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromocodeGroup"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт — новый период действия пересекается с периодом другой активной группы, содержащей одинаковые коды.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeletePromocodeGroup","tags":["Группы промокодов"],"summary":"Удаление группы промокодов","description":"Удаляет группу промокодов вместе со всеми ее кодами.","responses":{"204":{"description":"Группа промокодов успешно удалена."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/promocode_groups/{id}/objects/add":{"parameters":[{"name":"id","in":"path","required":true,"description":"Уникальный идентификатор группы промокодов.","schema":{"$ref":"#/components/schemas/PromocodeGroupID"}}],"post":{"operationId":"AddPromocodeGroupObjects","tags":["Группы промокодов"],"summary":"Привязка объектов к группе промокодов","description":"Привязывает товары, категории или коллекции к группе промокодов. Максимальное количество объектов — 500.\n\nВ одном запросе передавайте либо товары (`product_variant_ids`), либо категории и коллекции (`category_ids`, `collection_ids`) — не одновременно.\n\nПрименимо только для групп с `binding_mode = SELECTED_VARIANTS` (товары) или `SELECTED_CATEGORIES_COLLECTIONS` (категории и коллекции).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromocodeGroupObjects"}}}},"responses":{"204":{"description":"Объекты успешно привязаны к группе промокодов."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/promocode_groups/{id}/objects/remove":{"parameters":[{"name":"id","in":"path","required":true,"description":"Уникальный идентификатор группы промокодов.","schema":{"$ref":"#/components/schemas/PromocodeGroupID"}}],"post":{"operationId":"RemovePromocodeGroupObjects","tags":["Группы промокодов"],"summary":"Отвязка объектов от группы промокодов","description":"Отвязывает товары, категории или коллекции от группы промокодов. Максимальное количество объектов — 500.\n\nВ одном запросе передавайте либо товары (`product_variant_ids`), либо категории и коллекции (`category_ids`, `collection_ids`) — не одновременно.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromocodeGroupObjects"}}}},"responses":{"204":{"description":"Объекты успешно отвязаны от группы промокодов."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/promocode_groups/{group_id}/codes":{"parameters":[{"name":"group_id","in":"path","required":true,"description":"Уникальный идентификатор группы промокодов.","schema":{"$ref":"#/components/schemas/PromocodeGroupID"}}],"get":{"operationId":"GetPromocodeGroupCodes","tags":["Группы промокодов"],"summary":"Получение списка кодов в группе промокодов","description":"Возвращает список кодов в указанной группе промокодов с пагинацией.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"sort_by","in":"query","description":"Поле для сортировки.","required":false,"schema":{"type":"string","enum":["code","created_at","usage_count"],"default":"created_at"}},{"name":"sort_direction","in":"query","description":"Направление сортировки.","required":false,"schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"search","in":"query","description":"Поиск по коду (вхождение подстроки).","required":false,"schema":{"type":"string","example":"WELCOME"}}],"responses":{"200":{"description":"Список кодов группы промокодов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromocodeGroupCodeCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"AddPromocodeGroupCode","tags":["Группы промокодов"],"summary":"Добавление кода в группу промокодов","description":"Добавляет новый код в указанную группу промокодов.\n\nВозвращает `409 Conflict`, если код уже используется в другой активной группе с пересекающимся периодом действия.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddPromocodeGroupCodeRequest"}}}},"responses":{"201":{"description":"Код успешно добавлен в группу.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromocodeGroupCode"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт — код уже используется в другой активной группе с пересекающимся периодом действия.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/promocode_groups/{group_id}/codes/{code_id}":{"parameters":[{"name":"group_id","in":"path","required":true,"description":"Уникальный идентификатор группы промокодов.","schema":{"$ref":"#/components/schemas/PromocodeGroupID"}},{"name":"code_id","in":"path","required":true,"description":"Уникальный идентификатор кода промокода.","schema":{"$ref":"#/components/schemas/PromocodeGroupCodeID"}}],"patch":{"operationId":"UpdatePromocodeGroupCode","tags":["Группы промокодов"],"summary":"Обновление кода в группе промокодов","description":"Изменяет строковое значение кода в указанной группе промокодов.\n\nВозвращает `409 Conflict`, если новый код уже используется в другой активной группе с пересекающимся периодом действия.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdatePromocodeGroupCodeRequest"}}}},"responses":{"200":{"description":"Код успешно обновлен.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PromocodeGroupCode"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт — новый код уже используется в другой активной группе с пересекающимся периодом действия.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeletePromocodeGroupCode","tags":["Группы промокодов"],"summary":"Удаление кода из группы промокодов","description":"Удаляет код из указанной группы промокодов.","responses":{"204":{"description":"Код успешно удален из группы."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/discounts":{"get":{"operationId":"GetDiscounts","tags":["Скидки"],"summary":"Получение списка скидок","description":"Возвращает список скидок магазина с пагинацией.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"status","in":"query","description":"Статус скидки.","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/DiscountStatus"}}}],"responses":{"200":{"description":"Список скидок.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateDiscount","tags":["Скидки"],"summary":"Создание скидки","description":"Создает новую скидку.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateDiscountRequest"}}}},"responses":{"201":{"description":"Скидка успешно создана.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Discount"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/discounts/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/DiscountID"}}],"get":{"operationId":"GetDiscountById","tags":["Скидки"],"summary":"Получение скидки по ID","description":"Возвращает информацию о скидке по ее уникальному идентификатору.","responses":{"200":{"description":"Скидка.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Discount"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateDiscount","tags":["Скидки"],"summary":"Обновление скидки","description":"Обновляет скидку.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateDiscountRequest"}}}},"responses":{"200":{"description":"Скидка успешно обновлена.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Discount"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/discounts/{id}/categories":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/DiscountID"}}],"get":{"operationId":"GetDiscountCategoryIDs","tags":["Скидки"],"summary":"Получение идентификаторов категорий для которых применяется скидка","description":"Возвращает идентификаторы категорий для которых применяется скидка по ее уникальному идентификатору.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID категорий скидки.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/discounts/{id}/collections":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/DiscountID"}}],"get":{"operationId":"GetDiscountCollectionIDs","tags":["Скидки"],"summary":"Получение идентификаторов коллекций, к которым применяется скидка.","description":"Возвращает идентификаторы коллекций, к которым применяется скидка, по ее уникальному идентификатору.\nИспользуется для скидок с `binding_mode = SELECTED_CATEGORIES_COLLECTIONS`.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID коллекций скидки.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/discounts/{id}/variants":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/DiscountID"}}],"get":{"operationId":"GetDiscountVariantIDs","tags":["Скидки"],"summary":"Получение уникальных идентификаторов товаров скидки","description":"Возвращает уникальные идентификаторы товаров скидки по ее уникальному идентификатору.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID товаров скидки.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/discounts/{id}/archive":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/DiscountID"}}],"post":{"operationId":"ArchiveDiscount","tags":["Скидки"],"summary":"Архивация скидки","description":"Архивирует скидку.","responses":{"204":{"description":"Скидка успешно архивирована."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/discounts/{id}/unarchive":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/DiscountID"}}],"post":{"operationId":"UnarchiveDiscount","tags":["Скидки"],"summary":"Разархивация скидки","description":"Разархивирует скидку.","responses":{"204":{"description":"Скидка успешно разархивирована"},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/discounts/{id}/objects/add":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/DiscountID"}}],"post":{"operationId":"AddDiscountObjects","tags":["Скидки"],"summary":"Добавление объектов в скидку","description":"Добавляет товары или категории в скидку. Максимальное количество объектов — 500.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountObjects"}}}},"responses":{"204":{"description":"Объекты успешно добавлены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/discounts/{id}/objects/remove":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/DiscountID"}}],"post":{"operationId":"RemoveDiscountObjects","tags":["Скидки"],"summary":"Удаление объектов из скидки","description":"Удаляет товары или категории из скидки. Максимальное количество объектов — 500.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscountObjects"}}}},"responses":{"204":{"description":"Объекты успешно удалены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/gifts":{"get":{"operationId":"GetGifts","tags":["Подарки"],"summary":"Получение списка подарков","description":"Возвращает список подарков магазина с пагинацией.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"status","in":"query","description":"Фильтр по статусу подарка.","required":false,"schema":{"$ref":"#/components/schemas/GiftStatus"}}],"responses":{"200":{"description":"Список подарков.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateGift","tags":["Подарки"],"summary":"Создание подарка","description":"Создает новый подарок за покупку с товарами. Подарок создается в статусе `INACTIVE`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateGiftRequest"}}}},"responses":{"201":{"description":"Подарок успешно создан.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Gift"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/gifts/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/GiftID"}}],"get":{"operationId":"GetGiftById","tags":["Подарки"],"summary":"Получение подарка по ID","description":"Возвращает информацию о подарке по его уникальному идентификатору.","responses":{"200":{"description":"Подарок","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Gift"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateGift","tags":["Подарки"],"summary":"Обновление подарка","description":"Обновляет подарок. Передаются только изменяемые поля.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateGiftRequest"}}}},"responses":{"200":{"description":"Подарок успешно обновлен.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Gift"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeleteGift","tags":["Подарки"],"summary":"Удаление подарка","description":"Удаляет подарок.","responses":{"204":{"description":"Подарок успешно удален."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/gifts/{id}/variants":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/GiftID"}}],"get":{"operationId":"GetGiftVariants","tags":["Подарки"],"summary":"Получение идентификаторов товаров подарка","description":"Возвращает уникальные идентификаторы товаров подарка с пагинацией.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID товаров подарка.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"AddGiftVariants","tags":["Подарки"],"summary":"Добавление товаров в подарок","description":"Добавляет товары в подарок. В подарке может быть не более 50 товаров.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftVariantsRequest"}}}},"responses":{"204":{"description":"Товары успешно добавлены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"RemoveGiftVariants","tags":["Подарки"],"summary":"Удаление товаров из подарка","description":"Удаляет товары из подарка. В подарке должен остаться хотя бы один товар.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftVariantsRequest"}}}},"responses":{"204":{"description":"Товары успешно удалены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/gift_cards":{"get":{"operationId":"GetGiftCards","tags":["Подарочные карты"],"summary":"Получение списка подарочных карт","description":"Возвращает список подарочных карт магазина с пагинацией и фильтрами.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"status","in":"query","description":"Фильтр по статусу подарочной карты.","required":false,"schema":{"$ref":"#/components/schemas/GiftCardStatus"}},{"name":"purchased_date_from","in":"query","description":"Фильтр по дате покупки — начало диапазона (включительно).","required":false,"schema":{"type":"string","format":"date-time","example":"2026-01-01T00:00:00Z"}},{"name":"purchased_date_to","in":"query","description":"Фильтр по дате покупки — конец диапазона (включительно).","required":false,"schema":{"type":"string","format":"date-time","example":"2026-02-01T00:00:00Z"}}],"responses":{"200":{"description":"Список подарочных карт.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCardCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/gift_cards/{gift_card_id}":{"parameters":[{"name":"gift_card_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/GiftCardID"}}],"get":{"operationId":"GetGiftCardById","tags":["Подарочные карты"],"summary":"Получение подарочной карты по ID","description":"Возвращает информацию о подарочной карте по ее уникальному идентификатору.","responses":{"200":{"description":"Подарочная карта.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GiftCard"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/context-collections":{"get":{"operationId":"GetContextCollections","tags":["Контекстные коллекции"],"summary":"Получение списка контекстных коллекций","description":"Возвращает список контекстных коллекций магазина с пагинацией.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"Список контекстных коллекций.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextCollectionList"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateContextCollection","tags":["Контекстные коллекции"],"summary":"Создание контекстной коллекции","description":"Создает новую контекстную коллекцию с условиями подбора похожих товаров.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateContextCollectionRequest"}}}},"responses":{"201":{"description":"Контекстная коллекция успешно создана.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/context-collections/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ContextCollectionID"}}],"get":{"operationId":"GetContextCollectionById","tags":["Контекстные коллекции"],"summary":"Получение контекстной коллекции по ID","description":"Возвращает контекстную коллекцию по ее уникальному идентификатору.","responses":{"200":{"description":"Контекстная коллекция.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateContextCollection","tags":["Контекстные коллекции"],"summary":"Обновление контекстной коллекции","description":"Обновляет контекстную коллекцию по уникальному идентификатору.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateContextCollectionRequest"}}}},"responses":{"200":{"description":"Контекстная коллекция успешно обновлена.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContextCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeleteContextCollection","tags":["Контекстные коллекции"],"summary":"Удаление контекстной коллекции","description":"Удаляет контекстную коллекцию по уникальному идентификатору.","responses":{"204":{"description":"Контекстная коллекция успешно удалена."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/collections/{collection_id}":{"parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CollectionID"}}],"get":{"operationId":"GetCollectionById","tags":["Коллекции"],"summary":"Получение коллекции по ID","description":"Возвращает информацию о коллекции по ее уникальному идентификатору.","responses":{"200":{"description":"Коллекция.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Collection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateCollection","tags":["Коллекции"],"summary":"Обновление коллекции","description":"Обновляет информацию о коллекции.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateCollectionRequest"}}}},"responses":{"200":{"description":"Коллекция успешно обновлена.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Collection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeleteCollectionById","tags":["Коллекции"],"summary":"Удаление коллекции","description":"Удаляет коллекцию.","responses":{"204":{"description":"Коллекция успешно удалена."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/collections/{collection_id}/cards/add":{"parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CollectionID"}}],"post":{"operationId":"AddCardsToCollection","tags":["Коллекции"],"summary":"Добавление карточек в статическую коллекцию","description":"Добавляет карточки в статическую коллекцию.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddCardsToStaticCollectionRequest"}}}},"responses":{"204":{"description":"Карточки успешно добавлены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/collections/{collection_id}/cards/remove":{"parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CollectionID"}}],"post":{"operationId":"RemoveCardsFromCollection","tags":["Коллекции"],"summary":"Удаление карточек из статической коллекции","description":"Удаляет карточки из статической коллекции.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RemoveCardsFromStaticCollectionRequest"}}}},"responses":{"204":{"description":"Карточки успешно удалены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/collections/{collection_id}/cards/manual-order":{"parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CollectionID"}}],"get":{"operationId":"GetCollectionCardsManualOrder","tags":["Коллекции"],"summary":"Получение ручного порядка карточек коллекции","description":"Возвращает идентификаторы карточек статической коллекции. Порядок значений соответствует ручной сортировке коллекции.","parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"Идентификаторы карточек в сохраненном порядке ручной сортировки.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionCardsManualOrder"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/collections/{collection_id}/cards/move":{"parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CollectionID"}}],"post":{"operationId":"MoveCollectionCards","tags":["Коллекции"],"summary":"Перемещение карточек в статической коллекции","description":"Перемещает карточки на указанную позицию в ручном порядке сортировки статической коллекции. Заданный порядок применяется только при выбранном типе сортировки `MANUAL`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MoveCollectionCardsRequest"}}}},"responses":{"204":{"description":"Карточки успешно перемещены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/collections":{"get":{"operationId":"GetCollections","tags":["Коллекции"],"summary":"Получение списка коллекций","description":"Возвращает список коллекций магазина с пагинацией.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"status","in":"query","description":"Статус коллекции.","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/CollectionStatus"}}},{"name":"type","in":"query","description":"Тип коллекции.","required":false,"schema":{"type":"array","items":{"$ref":"#/components/schemas/CollectionType"}}}],"responses":{"200":{"description":"Список коллекций.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionList"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateCollection","tags":["Коллекции"],"summary":"Создание коллекции","description":"Создает новую коллекцию.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateCollectionRequest"}}}},"responses":{"201":{"description":"Коллекция успешно создана.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Collection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/collections/{collection_id}/variants":{"get":{"parameters":[{"name":"collection_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/CollectionID"}},{"name":"page","in":"query","required":false,"description":"Номер страницы.","schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","required":false,"description":"Количество элементов на странице.","schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"operationId":"GetVariantsByCollectionId","tags":["Коллекции"],"summary":"Получение ID товаров коллекции по ID","description":"Возвращает список ID товаров коллекции по ее уникальному идентификатору.","responses":{"200":{"description":"Список товаров.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/redirects":{"get":{"operationId":"GetRedirects","tags":["Редиректы"],"summary":"Получение списка редиректов","description":"Возвращает список редиректов магазина с пагинацией и поиском по url_from/url_to.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"url_from","in":"query","description":"Поиск по пути, с которого выполняется переадресация (подстрока).","required":false,"schema":{"type":"string","example":"/old"}},{"name":"url_to","in":"query","description":"Поиск по пути, на который выполняется переадресация (подстрока).","required":false,"schema":{"type":"string","example":"/new"}},{"name":"url_any","in":"query","description":"Поиск по любому из путей (url_from или url_to). Нельзя указывать вместе с url_from или url_to.","required":false,"schema":{"type":"string","example":"/page"}}],"responses":{"200":{"description":"Список редиректов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RedirectList"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateRedirect","tags":["Редиректы"],"summary":"Создание редиректа","description":"Создает новый редирект страницы витрины. Редирект всегда создается с HTTP-кодом 301 (Moved Permanently).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateRedirectRequest"}}}},"responses":{"201":{"description":"Редирект успешно создан.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Redirect"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт данных.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/redirects/{redirect_id}":{"parameters":[{"name":"redirect_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/RedirectID"}}],"get":{"operationId":"GetRedirectById","tags":["Редиректы"],"summary":"Получение редиректа по ID","description":"Возвращает редирект по его уникальному идентификатору.","responses":{"200":{"description":"Редирект.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Redirect"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateRedirect","tags":["Редиректы"],"summary":"Обновление редиректа","description":"Обновляет редирект. Передавать нужно только изменяемые поля.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateRedirectRequest"}}}},"responses":{"200":{"description":"Редирект успешно обновлен.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Redirect"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт данных.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeleteRedirectById","tags":["Редиректы"],"summary":"Удаление редиректа","description":"Удаляет редирект.","responses":{"204":{"description":"Редирект успешно удален."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/blogs/{blog_id}":{"parameters":[{"name":"blog_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/BlogID"}}],"get":{"operationId":"GetBlogById","tags":["Новости"],"summary":"Получение новости по уникальному идентификатору","description":"Возвращает новость по уникальному идентификатору.","responses":{"200":{"description":"Новость.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Blog"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateBlog","tags":["Новости"],"summary":"Обновление новости","description":"Обновляет информацию о новости.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBlogRequest"}}}},"responses":{"200":{"description":"Новость обновлена.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Blog"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeleteBlogById","tags":["Новости"],"summary":"Удаление новости","description":"Удаляет новость по уникальному идентификатору.","responses":{"204":{"description":"Новость удалена."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/blogs":{"get":{"operationId":"GetBlogs","tags":["Новости"],"summary":"Получение списка новостей","description":"Возвращает список новостей с пагинацией и фильтрацией по статусу.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"status","in":"query","description":"Статус новости.","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/BlogStatus"}}}],"responses":{"200":{"description":"Список новостей.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BlogCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateBlog","tags":["Новости"],"summary":"Создание новости","description":"Создает новость.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBlogRequest"}}}},"responses":{"201":{"description":"Новость создана.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Blog"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/webhooks":{"get":{"operationId":"GetWebhooks","tags":["Вебхуки"],"summary":"Получение списка вебхуков","description":"Получает список вебхуков.","responses":{"200":{"description":"Список вебхуков.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateWebhook","tags":["Вебхуки"],"summary":"Создание вебхука","description":"Создает новый вебхук.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateWebhookRequest"}}}},"responses":{"201":{"description":"Вебхук успешно создан.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookWithSecret"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/webhooks/{webhook_id}/validate":{"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/WebhookID"}}],"post":{"operationId":"ValidateWebhook","tags":["Вебхуки"],"summary":"Валидация вебхука","description":"Запускает процедуру валидации вебхука. Система отправит POST-запрос на URL вебхука с `\"event\": \"WEBHOOK_VALIDATE\"`.\n\nЕсли передан параметр `activate=true` и ваш сервер вернет HTTP 2xx с телом `{\"message\": \"validated_store_{store_id}\"}`,\nвебхук будет автоматически переведен в статус `ACTIVE`. Идентификатор магазина (`store_id`) доступен через `GET /v1/store`.","parameters":[{"name":"activate","in":"query","required":false,"description":"Активировать ли вебхук после успешной валидации.\nЕсли `true` и сервер вернул корректный ответ(`{\"message\": \"validated_store_{store_id}\"}`), вебхук переводится в статус `ACTIVE`.","schema":{"type":"boolean","default":false}}],"responses":{"204":{"description":"Начата валидация вебхука."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/webhooks/{webhook_id}":{"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/WebhookID"}}],"get":{"operationId":"GetWebhookById","tags":["Вебхуки"],"summary":"Получение вебхука по уникальному идентификатору","description":"Получает вебхук по уникальному идентификатору.","responses":{"200":{"description":"Вебхук","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateWebhook","tags":["Вебхуки"],"summary":"Обновление вебхука","description":"Обновляет информацию о вебхуке.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateWebhookRequest"}}}},"responses":{"200":{"description":"Вебхук обновлен.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeleteWebhook","tags":["Вебхуки"],"summary":"Удаление вебхука","description":"Удаляет вебхук по уникальному идентификатору.","responses":{"204":{"description":"Вебхук удален."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/badges/{badge_id}":{"parameters":[{"name":"badge_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/BadgeID"}}],"get":{"operationId":"GetBadgeById","tags":["Бейджи"],"summary":"Получение бейджа по уникальному идентификатору","description":"Получает бейдж по уникальному идентификатору.","responses":{"200":{"description":"Бейдж.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Badge"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateBadge","tags":["Бейджи"],"summary":"Обновление бейджа","description":"Обновляет информацию о бейдже.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateBadgeRequest"}}}},"responses":{"200":{"description":"Бейдж обновлен.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Badge"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeleteBadgeById","tags":["Бейджи"],"summary":"Удаление бейджа","description":"Удаляет бейдж.","responses":{"204":{"description":"Бейдж успешно удален."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/badges":{"get":{"operationId":"GetBadges","tags":["Бейджи"],"summary":"Получение списка бейджей","description":"Получает список бейджей.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"Список бейджей.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadgeCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateBadge","tags":["Бейджи"],"summary":"Создание бейджа","description":"Создает новый бейдж.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateBadgeRequest"}}}},"responses":{"201":{"description":"Бейдж создан.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Badge"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/badges/{badge_id}/variants":{"parameters":[{"name":"badge_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/BadgeID"}}],"get":{"operationId":"GetBadgeVariantIDs","tags":["Бейджи"],"summary":"Получение уникальных идентификаторов товаров бейджа","description":"Возвращает уникальные идентификаторы товаров бейджа по его уникальному идентификатору.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID товаров бейджа.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/badges/{badge_id}/categories":{"parameters":[{"name":"badge_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/BadgeID"}}],"get":{"operationId":"GetBadgeCategoryIDs","tags":["Бейджи"],"summary":"Получение идентификаторов категорий бейджа","description":"Возвращает идентификаторы категорий бейджа по его уникальному идентификатору.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID категорий бейджа.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/badges/{badge_id}/collections":{"parameters":[{"name":"badge_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/BadgeID"}}],"get":{"operationId":"GetBadgeCollectionIDs","tags":["Бейджи"],"summary":"Получение идентификаторов коллекций бейджа","description":"Возвращает идентификаторы коллекций бейджа по его уникальному идентификатору.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID коллекций бейджа","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/badges/{badge_id}/objects/add":{"parameters":[{"name":"badge_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/BadgeID"}}],"post":{"operationId":"AddBadgeObjects","tags":["Бейджи"],"summary":"Добавление объектов в бейдж","description":"Добавляет товары или категории в бейдж. Максимальное количество объектов — 500.\n\nБейдж должен иметь `binding_mode = SELECTED_VARIANTS` (для добавления товаров) или `SELECTED_CATEGORIES_COLLECTIONS` (для добавления категорий и коллекций).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadgeObjects"}}}},"responses":{"204":{"description":"Объекты успешно добавлены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/badges/{badge_id}/objects/remove":{"parameters":[{"name":"badge_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/BadgeID"}}],"post":{"operationId":"RemoveBadgeObjects","tags":["Бейджи"],"summary":"Удаление объектов из бейджа","description":"Удаляет товары или категории из бейджа. Максимальное количество объектов — 500.\n\nБейдж должен иметь `binding_mode = SELECTED_VARIANTS` (для удаления товаров) или `SELECTED_CATEGORIES_COLLECTIONS` (для удаления категорий и коллекций).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BadgeObjects"}}}},"responses":{"204":{"description":"Объекты успешно удалены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/geo/regions":{"get":{"operationId":"GetRegions","tags":["Гео"],"summary":"Получение списка регионов","description":"Получает список регионов. Регионы представляют собой иерархическую структуру географических областей (страны, регионы, города), где каждый регион имеет уникальный идентификатор, название и идентификатор родительского региона.","responses":{"200":{"description":"Список регионов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegionCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/delivery/label-formats":{"get":{"operationId":"GetDeliveryLabelFormats","tags":["Доставка"],"summary":"Получение поддерживаемых размеров ярлыков доставки","description":"Возвращает размеры ярлыков доставки, которые умеют печатать указанные службы доставки.\n\nЗначение поля `type` используют в `label_format` при запросе ярлыков через `GET /v1/orders/{id}/delivery-labels`.\n\nДубликаты служб во входном списке игнорируются. Порядок служб в ответе фиксирован платформой — он не алфавитный.\nЧтобы найти нужную службу, используйте поле `delivery_service`.","parameters":[{"name":"delivery_service","in":"query","description":"Службы доставки, для которых нужны размеры ярлыков.","required":true,"explode":true,"schema":{"type":"array","minItems":1,"items":{"$ref":"#/components/schemas/DeliveryServiceType"}}}],"responses":{"200":{"description":"Поддерживаемые размеры ярлыков доставки.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/DeliveryLabelFormatCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/addons":{"get":{"operationId":"GetAddons","tags":["Услуги"],"summary":"Получение списка услуг","description":"Возвращает список услуг магазина с пагинацией.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"Список услуг.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddonCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"post":{"operationId":"CreateAddon","tags":["Услуги"],"summary":"Создание услуги","description":"Создает новую услугу.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateAddonRequest"}}}},"responses":{"201":{"description":"Услуга успешно создана.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Addon"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/addons/{id}":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AddonID"}}],"get":{"operationId":"GetAddonById","tags":["Услуги"],"summary":"Получение услуги по ID","description":"Возвращает информацию об услуге по ее уникальному идентификатору.","responses":{"200":{"description":"Услуга.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Addon"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"patch":{"operationId":"UpdateAddon","tags":["Услуги"],"summary":"Обновление услуги","description":"Обновляет существующую услугу.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateAddonRequest"}}}},"responses":{"200":{"description":"Услуга успешно обновлена.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Addon"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeleteAddon","tags":["Услуги"],"summary":"Удаление услуги","description":"Удаляет существующую услугу.","responses":{"204":{"description":"Услуга успешно удалена."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/addons/{id}/variants":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AddonID"}}],"get":{"operationId":"GetAddonVariantIDs","tags":["Услуги"],"summary":"Получение уникальных идентификаторов товаров услуги","description":"Возвращает уникальные идентификаторы товаров услуги по ее уникальному идентификатору.\nИмеет смысл только для услуг с `binding_mode = SELECTED_VARIANTS`.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID товаров услуги.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VariantIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/addons/{id}/categories":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AddonID"}}],"get":{"operationId":"GetAddonCategoryIDs","tags":["Услуги"],"summary":"Получение идентификаторов категорий услуги","description":"Возвращает идентификаторы категорий услуги по ее уникальному идентификатору.\nИмеет смысл только для услуг с `binding_mode = SELECTED_CATEGORIES_COLLECTIONS`.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID категорий услуги.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/addons/{id}/collections":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AddonID"}}],"get":{"operationId":"GetAddonCollectionIDs","tags":["Услуги"],"summary":"Получение идентификаторов коллекций услуги.","description":"Возвращает идентификаторы коллекций услуги по ее уникальному идентификатору.\nИмеет смысл только для услуг с `binding_mode = SELECTED_CATEGORIES_COLLECTIONS`.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID коллекций услуги.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/addons/{id}/objects/add":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AddonID"}}],"post":{"operationId":"AddAddonObjects","tags":["Услуги"],"summary":"Добавление объектов в услугу","description":"Добавляет товары, категории или коллекции в услугу. Лимит на количество объектов — 500.\nУслуга должна иметь `binding_mode = SELECTED_VARIANTS` (для добавления товаров) или `SELECTED_CATEGORIES_COLLECTIONS` (для добавления категорий и коллекций).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddonObjects"}}}},"responses":{"204":{"description":"Объекты успешно добавлены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/addons/{id}/objects/remove":{"parameters":[{"name":"id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/AddonID"}}],"post":{"operationId":"RemoveAddonObjects","tags":["Услуги"],"summary":"Удаление объектов из услуги","description":"Удаляет товары, категории или коллекции из услуги. Лимит на количество объектов — 500.\nУслуга должна иметь `binding_mode = SELECTED_VARIANTS` (для удаления товаров) или `SELECTED_CATEGORIES_COLLECTIONS` (для удаления категорий и коллекций).","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AddonObjects"}}}},"responses":{"204":{"description":"Объекты успешно удалены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/similar-cards/{product_card_id}":{"parameters":[{"name":"product_card_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ProductCardID"}}],"post":{"operationId":"CreateSimilarCards","tags":["Товары"],"summary":"Создание настроек дополнительных товаров","description":"Создает настройки дополнительных товаров для указанной карточки товара.\nЕсли настройки для карточки уже существуют, возвращает `409`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateSimilarCardsRequest"}}}},"responses":{"201":{"description":"Настройки успешно созданы.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarCards"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"Конфликт данных.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"get":{"operationId":"GetSimilarCardsById","tags":["Товары"],"summary":"Получение настроек дополнительных товаров","description":"Возвращает настройки дополнительных товаров по идентификатору карточки товара.","responses":{"200":{"description":"Настройки дополнительных товаров.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarCards"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"put":{"operationId":"UpdateSimilarCards","tags":["Товары"],"summary":"Обновление настроек дополнительных товаров","description":"Обновляет режим подбора дополнительных товаров, переданный в `binding_mode`.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateSimilarCardsRequest"}}}},"responses":{"200":{"description":"Настройки успешно обновлены.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarCards"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"operationId":"DeleteSimilarCards","tags":["Товары"],"summary":"Удаление настроек дополнительных товаров","description":"Удаляет настройки дополнительных товаров по идентификатору карточки товара.","responses":{"204":{"description":"Настройки успешно удалены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/similar-cards/{product_card_id}/cards":{"parameters":[{"name":"product_card_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ProductCardID"}}],"get":{"operationId":"GetSimilarCardsCardIDs","tags":["Товары"],"summary":"Получение идентификаторов карточек выбранных дополнительных товаров","description":"Возвращает идентификаторы карточек товаров, выбранных в качестве дополнительных.\nРаботает только для настроек с `binding_mode = SELECTED_CARDS`.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"Идентификаторы карточек дополнительных товаров.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProductCardIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/similar-cards/{product_card_id}/categories":{"parameters":[{"name":"product_card_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ProductCardID"}}],"get":{"operationId":"GetSimilarCardsCategoryIDs","tags":["Товары"],"summary":"Получение идентификаторов категорий дополнительных товаров","description":"Возвращает идентификаторы категорий, заданных в настройках дополнительных товаров.\nРаботает только для настроек с `binding_mode = SELECTED_CATEGORIES_COLLECTIONS`.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID категорий.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CategoryIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/similar-cards/{product_card_id}/collections":{"parameters":[{"name":"product_card_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ProductCardID"}}],"get":{"operationId":"GetSimilarCardsCollectionIDs","tags":["Товары"],"summary":"Получение идентификаторов коллекций дополнительных товаров","description":"Возвращает идентификаторы коллекций, заданных в настройках дополнительных товаров.\nРаботает только для настроек с `binding_mode = SELECTED_CATEGORIES_COLLECTIONS`.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}}],"responses":{"200":{"description":"ID коллекций.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CollectionIDCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/similar-cards/{product_card_id}/objects/add":{"parameters":[{"name":"product_card_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ProductCardID"}}],"post":{"operationId":"AddSimilarCardsObjects","tags":["Товары"],"summary":"Добавление объектов в настройки дополнительных товаров","description":"Добавляет карточки, категории или коллекции в настройки дополнительных товаров. Лимит на количество объектов — 500.\nМетод работает с настройками, у которых `binding_mode = SELECTED_CARDS` (для карточек) или `SELECTED_CATEGORIES_COLLECTIONS` (для категорий и коллекций).\nВ одном запросе передавайте либо карточки, либо категории и коллекции.\nМетод изменяет только настройки карточки `product_card_id`. Обратные связи у карточек из запроса метод не создает.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarCardObjects"}}}},"responses":{"204":{"description":"Объекты успешно добавлены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/similar-cards/{product_card_id}/objects/remove":{"parameters":[{"name":"product_card_id","in":"path","required":true,"schema":{"$ref":"#/components/schemas/ProductCardID"}}],"post":{"operationId":"RemoveSimilarCardsObjects","tags":["Товары"],"summary":"Удаление объектов из настроек дополнительных товаров","description":"Удаляет карточки, категории или коллекции из настроек дополнительных товаров. Лимит на количество объектов — 500.\nМетод работает с настройками, у которых `binding_mode = SELECTED_CARDS` (для карточек) или `SELECTED_CATEGORIES_COLLECTIONS` (для категорий и коллекций).\nВ одном запросе передавайте либо карточки, либо категории и коллекции.\nМетод изменяет только настройки карточки `product_card_id`. Обратные связи у карточек из запроса метод не удаляет.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarCardObjects"}}}},"responses":{"204":{"description":"Объекты успешно удалены."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/alerts":{"get":{"operationId":"GetAlerts","tags":["Алерты"],"summary":"Получение списка алертов","description":"Возвращает системные алерты магазина. Фильтр по статусу обязателен.\n\nПорядок: сначала критичные алерты, внутри одной важности — новые сверху.","parameters":[{"name":"page","in":"query","description":"Номер страницы.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"default":1,"example":1}},{"name":"per_page","in":"query","description":"Количество элементов на странице.","required":false,"schema":{"type":"integer","format":"uint64","minimum":1,"maximum":100,"default":25,"example":25}},{"name":"status","in":"query","description":"Фильтр по статусу алерта.","required":true,"schema":{"type":"array","items":{"$ref":"#/components/schemas/AlertStatus"}}}],"responses":{"200":{"description":"Список алертов.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AlertCollection"}}}},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/alerts/{alert_id}/resolve":{"parameters":[{"name":"alert_id","in":"path","required":true,"description":"Идентификатор алерта из ответа `GET /v1/alerts`.","schema":{"$ref":"#/components/schemas/AlertID"}}],"post":{"operationId":"ResolveAlert","tags":["Алерты"],"summary":"Закрытие алерта","description":"Помечает алерт решенным. Если вы повторно вызовите закрытый алерт, то также вернется ошибка `204`.\n\nВы не сможете вручную закрыть активные алерты с важностью `CRITICAL` — метод вернет ошибку `400`.","responses":{"204":{"description":"Алерт закрыт."},"400":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"500":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"BearerAuth":{"type":"http","scheme":"Bearer"}},"responses":{"BadRequest":{"description":"Некорректный запрос.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Unauthorized":{"description":"Не авторизован.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"NotFound":{"description":"Ресурс не найден.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"Conflict":{"description":"Конфликт данных.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"InternalServerError":{"description":"Внутренняя ошибка сервера.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"schemas":{"Error":{"type":"object","required":["code","message","trace_id"],"properties":{"code":{"type":"string","example":"VALIDATION_ERROR"},"message":{"type":"string","example":"Invalid input"},"trace_id":{"type":"string","example":"00000000000000000000000000000000","description":"Уникальный идентификатор запроса для отладки."}}},"BulkOperationError":{"description":"Ошибка массовой операции. В дополнение к обычной ошибке содержит список невалидных элементов батча.\nДля каждого элемента передаются код и описание ошибки, а также идентификаторы товара, склада или карточки\nв зависимости от операции.","allOf":[{"$ref":"#/components/schemas/Error"},{"type":"object","properties":{"errors":{"type":"array","items":{"$ref":"#/components/schemas/BulkOperationItemError"}}}}]},"BulkOperationItemError":{"type":"object","description":"Ошибка обработки одного элемента массовой операции. Для обновления slug передается product_card_id, для обновления цен и остатков — variant_id.","required":["code","message"],"properties":{"product_card_id":{"$ref":"#/components/schemas/ProductCardID"},"variant_id":{"$ref":"#/components/schemas/VariantID"},"warehouse_id":{"$ref":"#/components/schemas/WarehouseID"},"code":{"type":"string","description":"Код ошибки элемента:\n- `VARIANT_NOT_FOUND` — товар не найден.\n- `WAREHOUSE_NOT_FOUND` — склад не найден.\n- `VARIANT_ARCHIVED` — товар архивирован.\n- `WAREHOUSE_ARCHIVED` — склад архивирован.\n- `DUPLICATE_ITEM` — элемент с таким идентификатором передан более одного раза.\n- `INVALID_QUANTITY` — некорректное количество.\n- `INVALID_PRICE` — некорректная цена.\n- `PRODUCT_CARD_NOT_FOUND` — карточка товара не найдена.\n- `DUPLICATE_SLUG` — ссылка передана более одного раза.\n- `INVALID_SLUG` — некорректная ссылка.\n- `SLUG_ALREADY_TAKEN` — ссылка занята другой карточкой.","example":"VARIANT_NOT_FOUND"},"message":{"type":"string","description":"Человекочитаемое описание ошибки.","example":"Товар с id 019b21d9-c5d9-777d-80bd-d67c664bc6d9 не найден"}}},"BulkStockItem":{"type":"object","description":"Элемент массового обновления остатков — новое количество товара на складе.","required":["variant_id","warehouse_id","quantity"],"properties":{"variant_id":{"$ref":"#/components/schemas/VariantID"},"warehouse_id":{"$ref":"#/components/schemas/WarehouseID"},"quantity":{"type":"integer","minimum":0,"description":"Новое количество товара на складе (абсолютное значение).","example":10}}},"BulkUpdateStocksRequest":{"type":"object","description":"Запрос массового обновления остатков.","required":["items"],"properties":{"items":{"type":"array","maxItems":5000,"description":"Элементы обновления. Пара товар + склад не может повторяться.","items":{"$ref":"#/components/schemas/BulkStockItem"}}}},"BulkPriceItem":{"type":"object","description":"Элемент массового обновления цен — новые цены товара","required":["variant_id"],"properties":{"variant_id":{"$ref":"#/components/schemas/VariantID"},"price":{"type":"string","format":"decimal","nullable":true,"x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Цена до скидки (поле опционально). Не передавайте ключ, чтобы\nне менять текущую цену; `null` — сбросить цену (только\nу неопубликованного товара).","example":1000},"manual_discount_price":{"type":"string","format":"decimal","nullable":true,"x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Цена со скидкой, установленная вручную (поле опционально).\nНе передавайте ключ, чтобы не менять текущую цену со скидкой;\n`null` — сбросить ее.","example":900}}},"BulkUpdatePricesRequest":{"type":"object","description":"Запрос массового обновления цен.","required":["items"],"properties":{"items":{"type":"array","minItems":1,"maxItems":5000,"description":"Элементы обновления. Товар не может повторяться.","items":{"$ref":"#/components/schemas/BulkPriceItem"}}}},"CategoryID":{"type":"string","format":"uuid","description":"Идентификатор категории.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"CategoryIDCollection":{"description":"Список идентификаторов категорий.","type":"object","required":["category_ids","total_count"],"properties":{"category_ids":{"type":"array","items":{"$ref":"#/components/schemas/CategoryID"}},"total_count":{"type":"integer","description":"Общее количество категорий.","format":"uint64","example":100}}},"CategoryCollection":{"description":"Список категорий товаров.","type":"object","required":["categories","total_count"],"properties":{"categories":{"type":"array","items":{"$ref":"#/components/schemas/Category"},"description":"Список категорий."},"total_count":{"type":"integer","description":"Общее количество категорий.","format":"uint64","example":100}}},"Category":{"type":"object","required":["id","title","slug","display_sequence","is_hidden_in_menu","seo_title","seo_h1","seo_description","status"],"properties":{"id":{"$ref":"#/components/schemas/CategoryID"},"title":{"type":"string","description":"Название категории.","example":"Смартфоны"},"slug":{"type":"string","description":"URL-идентификатор категории.","example":"smartphones"},"parent_id":{"type":"string","format":"uuid","description":"Идентификатор родительской категории.","example":"019b2202-543a-7fa1-b17c-2877cd7e57c0"},"display_sequence":{"type":"integer","format":"uint64","minimum":0,"description":"Порядок отображения в списке.","example":1},"is_hidden_in_menu":{"type":"boolean","description":"Скрыта ли категория в меню.","example":false},"file_id":{"type":"string","format":"uuid","description":"Идентификатор файла обложки для категории.","example":"019b2208-29c7-7cbc-9bc6-1f56a289bace"},"seo_title":{"type":"string","description":"Заголовок страницы категории в поиске.","example":"Смартфоны - купить в интернет-магазине"},"seo_h1":{"type":"string","description":"Заголовок H1 на странице категории.","example":"Смартфоны"},"seo_description":{"type":"string","description":"Описание страницы категории в поиске.","example":"Широкий выбор смартфонов по лучшим ценам. Доставка по всей стране."},"status":{"$ref":"#/components/schemas/CategoryStatus"}}},"CategoryStatus":{"type":"string","enum":["ACTIVE","ARCHIVED"],"description":"Статус категории."},"CreateCategoryRequest":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"Название категории.","example":"Смартфоны"},"slug":{"type":"string","description":"URL-идентификатор категории. Если не указан, генерируется автоматически из названия категории.","example":"smartphones"},"parent_id":{"type":"string","format":"uuid","description":"Идентификатор родительской категории.","example":"019b2202-543a-7fa1-b17c-2877cd7e57c0"},"display_sequence":{"type":"integer","format":"uint64","minimum":0,"description":"Порядок отображения в списке. Если не указан, добавляется в конец списка.","example":1},"is_hidden_in_menu":{"type":"boolean","default":false,"description":"Скрыта ли категория в меню.","example":false},"file_id":{"type":"string","format":"uuid","description":"Идентификатор файла обложки для категории.","example":"019b2208-29c7-7cbc-9bc6-1f56a289bace"},"seo_title":{"type":"string","description":"Заголовок страницы категории в поиске.","example":"Смартфоны - купить в интернет-магазине."},"seo_h1":{"type":"string","description":"Заголовок H1 на странице категории.","example":"Смартфоны"},"seo_description":{"type":"string","description":"Описание страницы категории в поиске.","example":"Широкий выбор смартфонов по лучшим ценам. Доставка по всей стране."}}},"UpdateCategoryRequest":{"type":"object","properties":{"title":{"type":"string","description":"Название категории.","example":"Смартфоны"},"slug":{"type":"string","description":"URL-идентификатор категории.","example":"smartphones"},"parent_id":{"type":"string","format":"uuid","nullable":true,"description":"Идентификатор родительской категории.","example":"019b2202-543a-7fa1-b17c-2877cd7e57c0"},"display_sequence":{"type":"integer","format":"uint64","minimum":0,"description":"Порядок отображения в списке.","example":1},"is_hidden_in_menu":{"type":"boolean","description":"Скрыта ли категория в меню.","example":false},"file_id":{"type":"string","format":"uuid","nullable":true,"description":"Идентификатор файла обложки для категории.","example":"019b2208-29c7-7cbc-9bc6-1f56a289bace"},"seo_title":{"type":"string","description":"Заголовок страницы категории в поиске.","example":"Смартфоны - купить в интернет-магазине."},"seo_h1":{"type":"string","description":"Заголовок H1 на странице категории.","example":"Смартфоны"},"seo_description":{"type":"string","description":"Описание страницы категории в поиске.","example":"Широкий выбор смартфонов по лучшим ценам. Доставка по всей стране."}}},"WarehouseID":{"type":"string","format":"uuid","description":"Идентификатор склада.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"WarehouseStatus":{"type":"string","enum":["ACTIVE","ARCHIVED"],"description":"Статус склада."},"Warehouse":{"type":"object","required":["id","slug","title","status"],"properties":{"id":{"$ref":"#/components/schemas/WarehouseID"},"slug":{"type":"string","description":"URL-идентификатор склада.","example":"main-warehouse"},"title":{"type":"string","description":"Название склада.","example":"Основной склад"},"status":{"$ref":"#/components/schemas/WarehouseStatus"}}},"WarehouseCollection":{"description":"Список складов.","type":"object","required":["warehouses","total_count"],"properties":{"warehouses":{"type":"array","items":{"$ref":"#/components/schemas/Warehouse"}},"total_count":{"type":"integer","description":"Общее количество складов.","format":"uint64","example":100}}},"CreateWarehouseRequest":{"type":"object","required":["title"],"properties":{"title":{"type":"string","description":"Название склада.","example":"Основной склад"}}},"UpdateWarehouseRequest":{"type":"object","properties":{"title":{"type":"string","description":"Название склада.","example":"Обновленное название склада"}}},"CharacteristicID":{"type":"string","format":"uuid","description":"Идентификатор категории.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"CharacteristicCollection":{"description":"Список характеристик.","type":"object","required":["characteristics","total_count"],"properties":{"characteristics":{"type":"array","items":{"$ref":"#/components/schemas/Characteristic"}},"total_count":{"type":"integer","description":"Общее количество характеристик.","format":"uint64","example":100}}},"Characteristic":{"type":"object","required":["id","title","slug","type","unit","select_mode","status","display_sequence","group_id","group_display_sequence"],"properties":{"id":{"$ref":"#/components/schemas/CharacteristicID"},"title":{"type":"string","description":"Название характеристики.","example":"Цвет"},"slug":{"type":"string","description":"URL-идентификатор характеристики.","example":"color"},"type":{"$ref":"#/components/schemas/CharacteristicType"},"unit":{"type":"string","description":"Единица измерения.","example":"см"},"select_mode":{"$ref":"#/components/schemas/CharacteristicSelectMode"},"status":{"$ref":"#/components/schemas/CharacteristicStatus"},"display_sequence":{"type":"integer","format":"uint64","description":"Порядок отображения.","example":1},"group_id":{"$ref":"#/components/schemas/CharacteristicGroupID"},"group_display_sequence":{"type":"integer","format":"uint64","description":"Порядок отображения характеристики внутри группы.","example":1}}},"CharacteristicGroupID":{"type":"string","format":"uuid","description":"Идентификатор группы характеристик.","example":"0196a577-b86c-7c8f-893d-2f1dfbc57f5d"},"CharacteristicGroup":{"type":"object","description":"Группа характеристик товаров.","required":["id","title","is_default","priority"],"properties":{"id":{"$ref":"#/components/schemas/CharacteristicGroupID"},"title":{"type":"string","description":"Название группы характеристик.","example":"Основные характеристики"},"is_default":{"type":"boolean","description":"Является ли группа группой по умолчанию.","example":false},"priority":{"type":"integer","format":"uint64","minimum":0,"description":"Приоритет отображения группы.","example":1}}},"CreateCharacteristicGroupRequest":{"type":"object","required":["title"],"properties":{"title":{"type":"string","minLength":1,"maxLength":1000,"description":"Название группы характеристик.","example":"Технические характеристики"}}},"CharacteristicGroupCollection":{"description":"Список групп характеристик.","type":"object","required":["characteristic_groups","total_count"],"properties":{"characteristic_groups":{"type":"array","items":{"$ref":"#/components/schemas/CharacteristicGroup"}},"total_count":{"type":"integer","format":"uint64","description":"Общее количество групп характеристик.","example":100}}},"UpdateCharacteristicGroupRequest":{"type":"object","description":"Поля для обновления группы характеристик. Передаются только изменяемые поля.","properties":{"title":{"type":"string","minLength":1,"maxLength":1000,"description":"Название группы характеристик.","example":"Дополнительные характеристики"}}},"CharacteristicColor":{"type":"object","required":["value","color_hex"],"properties":{"value":{"type":"string","description":"Значение характеристики.","example":"Красный"},"color_hex":{"type":"string","description":"Цвет в формате hex, `multicoloured` или `transparent`","example":"#FF0000"}}},"CharacteristicColorCollection":{"type":"object","description":"Список цветов значений характеристик.","required":["colors","total_count"],"properties":{"colors":{"type":"array","items":{"$ref":"#/components/schemas/CharacteristicColor"}},"total_count":{"type":"integer","format":"uint64","description":"Общее количество цветов.","example":42}}},"UpdateCharacteristicColorRequest":{"type":"object","required":["value","color_hex"],"properties":{"value":{"type":"string","description":"Значение характеристики.","example":"Красный"},"color_hex":{"type":"string","description":"Цвет в формате hex, `multicoloured` или `transparent`","example":"#FF0000"}}},"CharacteristicType":{"type":"string","enum":["INT","STRING","MULTIPLE_STRING"],"description":"Тип значения характеристики."},"CharacteristicSelectMode":{"type":"string","enum":["MULTIPLE","SINGLE","RANGE","MULTIPLE_STRICT"],"description":"Режим выбора значений характеристики:\n\n - `MULTIPLE` — множественный выбор.\n - `SINGLE` — одиночный выбор.\n - `RANGE` — диапазон (для числовых характеристик).\n - `MULTIPLE_STRICT` — множественный выбор по «И» (для характеристик с мультизначениями).\n"},"CharacteristicStatus":{"type":"string","enum":["ACTIVE","ARCHIVED"],"description":"Статус характеристики."},"CreateCharacteristicRequest":{"type":"object","required":["title","type","select_mode"],"properties":{"title":{"type":"string","description":"Название характеристики.","example":"Цвет"},"slug":{"type":"string","description":"URL-идентификатор характеристики (если не указан, генерируется автоматически из названия).","example":"color"},"type":{"$ref":"#/components/schemas/CharacteristicType"},"unit":{"type":"string","description":"Единица измерения.","example":"см"},"select_mode":{"$ref":"#/components/schemas/CharacteristicSelectMode"},"group_id":{"$ref":"#/components/schemas/CharacteristicGroupID"},"group_display_sequence":{"type":"integer","format":"uint64","minimum":1,"description":"Порядок отображения характеристики внутри группы, начиная с 1.\nОстальные характеристики группы сдвигаются вниз.\nЕсли не указан, характеристика добавляется в конец группы.","example":1}}},"UpdateCharacteristicRequest":{"type":"object","properties":{"title":{"type":"string","description":"Название характеристики.","example":"Цвет"},"slug":{"type":"string","description":"URL-идентификатор характеристики.","example":"color"},"type":{"$ref":"#/components/schemas/CharacteristicType"},"unit":{"type":"string","description":"Единица измерения.","example":"см"},"select_mode":{"$ref":"#/components/schemas/CharacteristicSelectMode"},"display_sequence":{"type":"integer","format":"uint64","description":"Порядок отображения.","example":1},"group_id":{"$ref":"#/components/schemas/CharacteristicGroupID"},"group_display_sequence":{"type":"integer","format":"uint64","minimum":1,"description":"Порядок отображения характеристики внутри группы, начиная с 1.\nОстальные характеристики группы сдвигаются вниз.\nЕсли указан только `group_id`, характеристика добавляется в конец целевой группы.","example":1}}},"FileID":{"type":"string","format":"uuid","description":"Идентификатор файла.","example":"019b30d4-3e28-7a98-ae46-cb66932d1936"},"FileType":{"type":"string","enum":["IMAGE","VIDEO","OTHER"],"description":"Тип файла."},"File":{"type":"object","required":["id","type","url"],"properties":{"id":{"$ref":"#/components/schemas/FileID"},"type":{"$ref":"#/components/schemas/FileType"},"url":{"type":"string","format":"uri","description":"Публичный URL для доступа к файлу.","example":"https://example.com/files/550e8400-e29b-41d4-a716-446655440000.png"}}},"FileCollection":{"description":"Список файлов.","type":"object","required":["files","total_count"],"properties":{"files":{"type":"array","items":{"$ref":"#/components/schemas/File"}},"total_count":{"type":"integer","description":"Общее количество файлов.","format":"uint64","example":100}}},"VideoID":{"type":"string","minLength":1,"description":"Идентификатор видео.","example":"vplvusemmooxmhpwiqli"},"VideoStatus":{"type":"string","description":"Статус обработки видео:\n- `UPLOADED` — видео загружено и поставлено в очередь на обработку.\n- `PROCESSING` — видео обрабатывается.\n- `READY` — видео готово к показу, заполнено поле `content`.\n- `ERROR` — обработка завершилась ошибкой, детали в поле `error`.","enum":["UPLOADED","PROCESSING","READY","ERROR"],"x-enum-varnames":["VideoStatusUploaded","VideoStatusProcessing","VideoStatusReady","VideoStatusError"]},"Video":{"type":"object","description":"Видео товара.","required":["id","status","title","created_at"],"properties":{"id":{"$ref":"#/components/schemas/VideoID"},"status":{"$ref":"#/components/schemas/VideoStatus"},"title":{"type":"string","description":"Название видео. Совпадает с именем загруженного файла.","example":"promo.mp4"},"created_at":{"type":"string","format":"date-time","description":"Дата загрузки видео","example":"2020-01-01T00:00:00Z"},"content":{"allOf":[{"$ref":"#/components/schemas/VideoContent"}],"description":"Ссылки на видео. Заполняется только в статусе `READY`."},"error":{"allOf":[{"$ref":"#/components/schemas/VideoError"}],"description":"Описание ошибки обработки. Заполняется только в статусе `ERROR`."}}},"VideoContent":{"type":"object","description":"Ссылки на готовое видео.","required":["player_url"],"properties":{"player_url":{"type":"string","format":"uri","description":"Ссылка на плеер видео.","example":"https://example.com/player/vplvusemmooxmhpwiqli"},"first_frame_url":{"type":"string","format":"uri","description":"Ссылка на превью — первый кадр видео.","example":"https://example.com/first-frame.jpg"},"duration_seconds":{"type":"integer","format":"uint64","description":"Длительность видео в секундах.","example":15}}},"VideoError":{"type":"object","description":"Ошибка обработки видео.","required":["message"],"properties":{"code":{"type":"string","description":"Код ошибки. Может отсутствовать — не используйте его как однозначный\nпризнак причины сбоя.","example":"TRANSCODING_FAILED"},"message":{"type":"string","description":"Описание ошибки.","example":"Не удалось обработать видео"}}},"VideoCollection":{"type":"object","description":"Список видео.","required":["videos","total_count"],"properties":{"videos":{"type":"array","items":{"$ref":"#/components/schemas/Video"}},"total_count":{"type":"integer","description":"Общее количество видео, которые подходят под фильтр.","format":"uint64","example":100}}},"UploadedVideo":{"type":"object","description":"Идентификатор загруженного видео.","required":["video_id"],"properties":{"video_id":{"$ref":"#/components/schemas/VideoID"}}},"UploadVideoFromUrlRequest":{"type":"object","description":"Ссылка на видео для загрузки.","required":["url"],"properties":{"url":{"type":"string","format":"uri","minLength":1,"description":"Публичная ссылка на видео: ссылка на видеофайл с Яндекс Диска, прямая ссылка\nна видеофайл или ссылка на плеер видеоплатформы Яндекс KITᵝ.","example":"https://disk.yandex.ru/i/abcdef123456"}}},"ProductSizeTable":{"type":"object","description":"Таблица размеров для товара. Содержит изображение с размерной сеткой\n(размеры одежды, обуви и т.д.). Применяется ко всем вариантам продукта.\n","required":["file_id","enabled"],"properties":{"file_id":{"type":"string","format":"uuid","description":"Уникальный идентификатор файла с таблицей размеров.\nФайл должен быть предварительно загружен через POST /v1/files.\n","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"enabled":{"type":"boolean","description":"Флаг включения/выключения отображения таблицы размеров.\n\n- `true` — таблица отображается на странице товара.\n- `false` — таблица скрыта от покупателей.\n","example":true}}},"ProductCardID":{"type":"string","format":"uuid","description":"Идентификатор карточки товара.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"ProductCardSlugUpdate":{"type":"object","required":["product_card_id","slug"],"properties":{"product_card_id":{"$ref":"#/components/schemas/ProductCardID"},"slug":{"type":"string","minLength":1,"maxLength":200,"pattern":"^[a-z0-9_-]+$","description":"URL-идентификатор карточки. Строчные латинские буквы, цифры, дефис и подчеркивание.","example":"iphone-15-pro-black"}}},"BulkUpdateProductCardSlugsRequest":{"type":"object","required":["items"],"properties":{"items":{"type":"array","minItems":1,"maxItems":100,"items":{"$ref":"#/components/schemas/ProductCardSlugUpdate"}}}},"ProductCardIDCollection":{"type":"object","description":"Список идентификаторов карточек.","required":["product_card_ids","total_count"],"properties":{"product_card_ids":{"type":"array","items":{"$ref":"#/components/schemas/ProductCardID"}},"total_count":{"type":"integer","description":"Общее количество карточек товара.","format":"uint64","example":100}}},"SimilarProductCardsRequest":{"description":"Запрос на получение похожих карточек.","type":"object","required":["similar_card_ids"],"properties":{"similar_card_ids":{"type":"array","items":{"$ref":"#/components/schemas/ProductCardID"}}}},"ProductID":{"type":"string","format":"uuid","description":"Идентификатор продукта.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"Product":{"type":"object","required":["id","category_ids","settings"],"properties":{"id":{"$ref":"#/components/schemas/ProductID"},"category_ids":{"type":"array","items":{"$ref":"#/components/schemas/CategoryID"},"minItems":1,"description":"Идентификаторы активных (неархивированных) категорий продукта.\nПродукт может быть привязан к нескольким категориям, в том числе к архивированным —\nтакие привязки сохраняются, но в этом поле не отображаются, пока категория имеет статус ARCHIVED.\nЕсли все привязанные категории архивированы, массив может быть пустым до разархивации\nкатегории или товара.","example":["019b21d9-c5d9-777d-80bd-d67c664bc6d9"]},"group_id":{"type":"string","description":"Идентификатор группы товаров в Excel.","example":"group-123"},"size_table":{"$ref":"#/components/schemas/ProductSizeTable"},"settings":{"$ref":"#/components/schemas/ProductSettings"}}},"ProductSettings":{"type":"object","required":["grouping_characteristic_ids","splitting_characteristic_ids"],"properties":{"grouping_characteristic_ids":{"type":"array","items":{"$ref":"#/components/schemas/CharacteristicID"},"description":"Массив идентификаторов характеристик для группировки.","example":["019b21d9-c5d9-777d-80bd-d67c664bc6d9"]},"splitting_characteristic_ids":{"type":"array","items":{"$ref":"#/components/schemas/CharacteristicID"},"description":"Массив идентификаторов характеристик для разбиения.","example":["019b21d9-c5d9-777d-80bd-d67c664bc6d9"]}}},"CreateProductRequest":{"type":"object","required":["category_ids"],"properties":{"category_ids":{"type":"array","items":{"$ref":"#/components/schemas/CategoryID"},"minItems":1,"description":"Массив идентификаторов категорий, обязательно только одна категория.","example":["019b21d9-c5d9-777d-80bd-d67c664bc6d9"]},"size_table":{"$ref":"#/components/schemas/ProductSizeTable"}}},"UpdateProductRequest":{"type":"object","properties":{"category_ids":{"type":"array","items":{"$ref":"#/components/schemas/CategoryID"},"minItems":1,"description":"Идентификаторы категорий для обновления (можно указать одну или несколько категорий).\nПри обновлении список категорий продукта полностью заменяется на переданный.\n\nПравила:\n- Продукт с неархивными товарами в статусе (`PUBLISHED/HIDDEN`) должен сохранить хотя бы одну активную категорию —\nпустой массив отклоняется.\n- Допускается передача идентификаторов архивированных категорий:\nони привяжутся к продукту, но останутся в статусе `ARCHIVED` и не будут отображаться в `Product.category_ids`, пока категория не разархивирована с помощью запроса `POST /v1/categories/{id}/unarchive`.","example":["019b21d9-c5d9-777d-80bd-d67c664bc6d9"]},"size_table":{"allOf":[{"$ref":"#/components/schemas/ProductSizeTable"}],"nullable":true},"settings":{"$ref":"#/components/schemas/ProductSettings"}}},"ProductCollection":{"description":"Список продуктов.","type":"object","required":["products"],"properties":{"products":{"type":"array","items":{"$ref":"#/components/schemas/Product"}}}},"VariantID":{"type":"string","format":"uuid","description":"Идентификатор товара.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"VariantActiveStatus":{"type":"string","enum":["PUBLISHED","HIDDEN"],"description":"Статус товара:\n- `PUBLISHED` — опубликован, доступен для покупки.\n- `HIDDEN` — скрыт, не отображается в каталоге."},"VariantStatus":{"type":"string","enum":["PUBLISHED","HIDDEN","ARCHIVED"],"description":"Статус товара:\n- `PUBLISHED` — опубликован, доступен для покупки.\n- `HIDDEN` — скрыт, не отображается в каталоге.\n- `ARCHIVED` — архивирован, недоступен."},"VariantPricing":{"type":"object","description":"Цена товара.","properties":{"price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Цена до скидки. Базовая цена товара от которой считается цена со скидкой.","example":1000},"manual_discount_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Цена со скидкой (установлена вручную).","example":900},"promotion_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Цена по акции.","example":850},"final_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Итоговая цена.","example":850}}},"VariantPricingRequest":{"type":"object","description":"Цена товара для создания или обновления. Цена по акции и итоговая цена рассчитываются автоматически.","properties":{"price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Цена до скидки. Базовая цена товара от которой считается цена со скидкой.","example":1000},"manual_discount_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Цена со скидкой (установлена вручную).","example":900}}},"VariantStock":{"type":"object","description":"Остатки товара на складе.","required":["warehouse_id","quantity","reserved"],"properties":{"warehouse_id":{"$ref":"#/components/schemas/WarehouseID"},"quantity":{"type":"integer","description":"Количество на складе.","example":10},"reserved":{"type":"integer","description":"Зарезервированное количество.","example":2}}},"VariantMedia":{"type":"object","description":"Медиафайлы товара (изображения и видео).","required":["type","display_sequence"],"properties":{"type":{"$ref":"#/components/schemas/FileType"},"display_sequence":{"type":"integer","description":"Порядок отображения.","example":1},"image_id":{"$ref":"#/components/schemas/FileID"},"video_id":{"type":"string","description":"Идентификатор видео (для `type: VIDEO`). Видео нужно предварительно загрузить\nчерез `POST /v1/videos` или `POST /v1/videos/from_url`.\n\n\nМаксимум одно видео на товар. В `media` требуется минимум одно изображение:\nпри отсутствии элемента `type: IMAGE` запрос завершится с ошибкой.\n\nПривязанное видео может быть в любом статусе, но покупателям оно доступно\nдля просмотра только после перехода в статус `READY`.","example":"vplvusemmooxmhpwiqli"}}},"VariantCharacteristic":{"type":"object","description":"Значение характеристики товара.","required":["characteristic_id","value","values"],"properties":{"characteristic_id":{"$ref":"#/components/schemas/CharacteristicID"},"value":{"type":"string","description":"Значение характеристики.","example":"Черный","deprecated":true},"values":{"type":"array","description":"Значения характеристик.","items":{"type":"string"},"example":["Желтый","Красный"]}}},"VariantCargoBox":{"type":"object","required":["display_sequence"],"properties":{"length":{"type":"integer","format":"int32","minimum":0,"description":"Длина (см).","example":20},"width":{"type":"integer","format":"int32","minimum":0,"description":"Ширина (см).","example":15},"height":{"type":"integer","format":"int32","minimum":0,"description":"Высота (см).","example":10},"weight":{"type":"integer","format":"int32","minimum":0,"description":"Вес (г).","example":500},"display_sequence":{"type":"integer","description":"Порядок отображения.","example":1}}},"ExternalSystemType":{"type":"string","description":"Внешняя система идентификатора.","enum":["moysklad","1C","wildberries","ozon","yml","yandex_market","external_store","external_store_api"]},"VariantExternalIDsCollection":{"type":"object","description":"Список внешних идентификаторов товара.","required":["external_ids"],"properties":{"external_ids":{"type":"array","items":{"$ref":"#/components/schemas/VariantExternalID"},"description":"Список внешних идентификаторов товара."}}},"VariantExternalID":{"type":"object","required":["system_type","external_id"],"description":"Внешний идентификатор товара.","properties":{"system_type":{"$ref":"#/components/schemas/ExternalSystemType"},"external_id":{"type":"string","description":"Внешний идентификатор.","example":1234567890123}}},"SetVariantExternalIdRequest":{"type":"object","required":["external_id"],"properties":{"external_id":{"type":"string","description":"Внешний идентификатор товара в указанной системе.","example":"prostyni-ISEO#a94c555e-5c48-40ae-afe8-28197f3246a6"}}},"VariantAttachment":{"type":"object","description":"Документ товара (инструкция, сертификат, паспорт).","required":["file_id","title","extension","display_sequence"],"properties":{"file_id":{"type":"string","format":"uuid","description":"Идентификатор файла.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"title":{"type":"string","description":"Название документа.","example":"Инструкция по установке"},"extension":{"type":"string","description":"Расширение файла.","example":"pdf"},"display_sequence":{"type":"integer","format":"uint","description":"Порядок отображения.","example":1}}},"VariantAttachmentCollection":{"type":"object","description":"Список документов товара.","required":["attachments"],"properties":{"attachments":{"type":"array","items":{"$ref":"#/components/schemas/VariantAttachment"},"description":"Список документов товара."}}},"VariantAttachmentCreateRequest":{"type":"object","description":"Запрос на прикрепление документа к товару.","required":["file_id","title"],"properties":{"file_id":{"type":"string","format":"uuid","description":"Идентификатор файла.\nФайл должен быть предварительно загружен с помощью запроса `POST /v1/files`.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"title":{"type":"string","description":"Название документа. Не должно содержать символы ':' и '/'.","example":"Инструкция по установке"},"display_sequence":{"type":"integer","format":"uint","description":"Порядок отображения. Должен быть уникален среди документов товара.\nЕсли не задан — используется следующий свободный.","example":1}}},"VariantAttachmentUpdateRequest":{"type":"object","description":"Запрос на обновление документа товара.","properties":{"title":{"type":"string","description":"Новое название документа. Не должно содержать символы ':' и '/'.","example":"Инструкция по установке"},"display_sequence":{"type":"integer","format":"uint","description":"Новый порядок отображения. Должен быть свободен среди документов\nтовара, иначе возвращается ошибка 409. Остальные документы автоматически не переупорядочиваются.","example":2}}},"Variant":{"type":"object","required":["id","kit_id","sku","barcode","slug","name","description","brand","created_at","updated_at","status","product_id","product_card_id","relative_link_url","characteristics","stocks","media","pricing","sort_weight","cargo_boxes","seo_title","seo_h1","seo_description","vat","requires_marking"],"properties":{"id":{"$ref":"#/components/schemas/VariantID"},"kit_id":{"type":"integer","format":"uint","description":"Уникальный идентификатор товара в системе, отображаемый в B2B кабинете."},"sku":{"type":"string","description":"Артикул товара.","example":"SKU-12345"},"barcode":{"type":"string","description":"Штрих-код.","example":"1234567890123"},"slug":{"type":"string","description":"URL-идентификатор товара.","example":"iphone-15-pro-black"},"name":{"type":"string","description":"Название товара.","example":"iPhone 15 Pro Черный"},"description":{"type":"string","description":"Описание товара.","example":"Флагманский смартфон с титановым корпусом"},"brand":{"type":"string","description":"Бренд товара.","example":"Apple"},"created_at":{"type":"string","format":"date-time","description":"Дата создания.","example":"2024-01-15T10:30:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата последнего обновления.","example":"2024-01-16T14:20:00Z"},"status":{"$ref":"#/components/schemas/VariantStatus"},"product_id":{"$ref":"#/components/schemas/ProductID"},"product_card_id":{"$ref":"#/components/schemas/ProductCardID"},"relative_link_url":{"type":"string","description":"Относительная ссылка (товар на витрине).","example":"/products/iphone-15-pro-100000?variant=100001"},"characteristics":{"type":"array","items":{"$ref":"#/components/schemas/VariantCharacteristic"},"description":"Характеристики товара."},"stocks":{"type":"array","items":{"$ref":"#/components/schemas/VariantStock"},"description":"Остатки на складах."},"media":{"type":"array","items":{"$ref":"#/components/schemas/VariantMedia"},"description":"Изображения и видео."},"pricing":{"$ref":"#/components/schemas/VariantPricing"},"sort_weight":{"type":"integer","minimum":1,"maximum":1000,"description":"Приоритет в каталоге.","example":100},"cargo_boxes":{"type":"array","items":{"$ref":"#/components/schemas/VariantCargoBox"},"description":"Вес и габариты с упаковкой."},"seo_title":{"type":"string","description":"Заголовок страницы в поиске (Title).","example":"iPhone 15 Pro Черный - купить в интернет-магазине"},"seo_h1":{"type":"string","description":"Заголовок на странице товара (H1).","example":"iPhone 15 Pro Черный"},"seo_description":{"type":"string","description":"Описание страницы в поиске (Description).","example":"Купить iPhone 15 Pro Черный по выгодной цене"},"vat":{"type":"integer","description":"НДС в процентах. Специальное значение -1 означает, что товар не облагается НДС.","example":20},"requires_marking":{"type":"boolean","description":"Признак обязательной маркировки товара в системе «Честный знак». Если параметр не передан, используется значение по умолчанию `false`. `true` — товар подлежит обязательной маркировке, `false` — не подлежит.","example":false}}},"CreateVariantRequest":{"type":"object","required":["name","product_id"],"properties":{"sku":{"type":"string","description":"Артикул товара.","example":"SKU-12345"},"barcode":{"type":"string","description":"Штрих-код.","example":"1234567890123"},"name":{"type":"string","description":"Название товара.","example":"iPhone 15 Pro Черный"},"description":{"type":"string","description":"Описание товара.","example":"Флагманский смартфон с титановым корпусом."},"brand":{"type":"string","description":"Бренд товара","example":"Apple"},"status":{"$ref":"#/components/schemas/VariantStatus"},"product_id":{"$ref":"#/components/schemas/ProductID"},"characteristics":{"type":"array","items":{"$ref":"#/components/schemas/VariantCharacteristic"},"description":"Характеристики товара."},"stocks":{"type":"array","items":{"$ref":"#/components/schemas/VariantStock"},"description":"Остатки на складах."},"media":{"type":"array","items":{"$ref":"#/components/schemas/VariantMedia"},"description":"Изображения и видео. Видео можно передать, только если в списке есть\nхотя бы одно изображение. При обновлении товара список заменяется целиком,\nпоэтому в `PATCH /v1/variants/{id}` изображения нужно передавать вместе с видео."},"pricing":{"$ref":"#/components/schemas/VariantPricingRequest"},"sort_weight":{"type":"integer","minimum":1,"maximum":1000,"description":"Приоритет в каталоге.","example":100},"cargo_boxes":{"type":"array","items":{"$ref":"#/components/schemas/VariantCargoBox"},"description":"Вес и габариты с упаковкой."},"seo_title":{"type":"string","description":"Заголовок страницы в поиске (Title).","example":"iPhone 15 Pro Черный - купить в интернет-магазине"},"seo_h1":{"type":"string","description":"Заголовок на странице товара (H1).","example":"iPhone 15 Pro Черный"},"seo_description":{"type":"string","description":"Описание страницы в поиске (Description).","example":"Купить iPhone 15 Pro Черный по выгодной цене"},"vat":{"type":"integer","description":"НДС в процентах. Специальное значение -1 означает, что товар не облагается НДС","example":20},"requires_marking":{"type":"boolean","description":"Признак обязательной маркировки товара в системе «Честный знак». Если параметр не передан, используется значение по умолчанию `false`. `true` — товар подлежит обязательной маркировке, `false` — не подлежит.","example":false}}},"UpdateVariantRequest":{"type":"object","properties":{"sku":{"type":"string","description":"Артикул товара.","example":"SKU-12345"},"barcode":{"type":"string","description":"Штрих-код.","example":"1234567890123"},"name":{"type":"string","description":"Название товара.","example":"iPhone 15 Pro Черный"},"description":{"type":"string","description":"Описание товара.","example":"Флагманский смартфон с титановым корпусом"},"brand":{"type":"string","description":"Бренд товара.","example":"Apple"},"status":{"$ref":"#/components/schemas/VariantActiveStatus"},"characteristics":{"type":"array","items":{"$ref":"#/components/schemas/VariantCharacteristic"},"description":"Характеристики товара. При обновлении заменяет все существующие значения."},"stocks":{"type":"array","items":{"$ref":"#/components/schemas/VariantStock"},"description":"Изображения и видео. При обновлении все старые данные заменяются.\nЧтобы добавить видео, сначала загрузите хотя бы одно изображение и включите его в тот же запрос — иначе система выдаст ошибку."},"media":{"type":"array","items":{"$ref":"#/components/schemas/VariantMedia"},"description":"Изображения и видео. При обновлении заменяет все существующие значения."},"pricing":{"$ref":"#/components/schemas/VariantPricingRequest"},"sort_weight":{"type":"integer","minimum":1,"maximum":1000,"description":"Приоритет в каталоге.","example":100},"cargo_boxes":{"type":"array","items":{"$ref":"#/components/schemas/VariantCargoBox"},"description":"Вес и габариты с упаковкой. При обновлении заменяет все существующие значения."},"seo_title":{"type":"string","description":"Заголовок страницы в поиске (Title)","example":"iPhone 15 Pro Черный - купить в интернет-магазине"},"seo_h1":{"type":"string","description":"Заголовок на странице товара (H1).","example":"iPhone 15 Pro Черный"},"seo_description":{"type":"string","description":"Описание страницы в поиске (Description).","example":"Купить iPhone 15 Pro Черный по выгодной цене"},"vat":{"type":"integer","description":"НДС в процентах. Специальное значение -1 означает, что товар не облагается НДС.","example":20},"requires_marking":{"type":"boolean","description":"Признак обязательной маркировки товара в системе «Честный знак». Если параметр не передан, используется значение по умолчанию `false`. `true` — товар подлежит обязательной маркировке, `false` — не подлежит.","example":false},"product_id":{"$ref":"#/components/schemas/ProductID"}}},"VariantIDCollection":{"description":"Список идентификаторов товаров.","type":"object","required":["variant_ids","total_count"],"properties":{"variant_ids":{"type":"array","items":{"$ref":"#/components/schemas/VariantID"}},"total_count":{"type":"integer","description":"Общее количество товаров.","format":"uint64","example":100}}},"VariantCollection":{"description":"Список товаров.","type":"object","required":["variants","total_count"],"properties":{"variants":{"type":"array","items":{"$ref":"#/components/schemas/Variant"},"description":"Список товаров."},"total_count":{"type":"integer","description":"Общее количество товаров.","format":"uint64","example":100}}},"User":{"type":"object","required":["role_name"],"properties":{"email":{"type":"string","format":"email","x-go-type":"string","description":"Email пользователя.","example":"user@example.com"},"role_name":{"type":"string","description":"Название роли пользователя.","example":"owner"}}},"StoreID":{"type":"string","format":"uuid","description":"Идентификатор магазина.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"Store":{"type":"object","required":["id","slug","b2c_url"],"properties":{"id":{"$ref":"#/components/schemas/StoreID"},"slug":{"type":"string","description":"URL-идентификатор магазина.","example":"kit1234"},"b2c_url":{"type":"string","format":"uri","description":"URL главной страницы магазина для покупателей.","example":"https://kit1234.kit.yandex.ru"}}},"FeedCollection":{"type":"object","description":"Список фидов каталога.","required":["feeds"],"properties":{"feeds":{"type":"array","items":{"$ref":"#/components/schemas/Feed"},"description":"Список фидов каталога."}}},"Feed":{"type":"object","description":"Фид каталога.","required":["type","url"],"properties":{"type":{"$ref":"#/components/schemas/FeedType"},"url":{"type":"string","format":"uri","description":"Постоянная ссылка на фид.","example":"https://yastore-prod-persist.s3.yandex.net/feeds/icml/019b21d9-c5d9-777d-80bd-d67c664bc6d9.xml"}}},"FeedType":{"type":"string","description":"Тип фида:\n- `ICML` — для RetailCRM;\n- `YML` — для Яндекс Директа;\n- `YML_GOODS` — для Яндекс Товаров.","enum":["ICML","YML","YML_GOODS"],"example":"ICML"},"OrderIDCollection":{"description":"Список идентификаторов заказов.","type":"object","required":["order_ids","total_count"],"properties":{"order_ids":{"type":"array","items":{"$ref":"#/components/schemas/OrderID"},"description":"Список идентификаторов заказов."},"total_count":{"type":"integer","description":"Общее количество заказов.","format":"uint64","example":100}}},"OrderCollection":{"description":"Список заказов.","type":"object","required":["orders","total_count"],"properties":{"orders":{"type":"array","items":{"$ref":"#/components/schemas/Order"},"description":"Список заказов."},"total_count":{"type":"integer","description":"Общее количество заказов.","format":"uint64","example":100}}},"OrderAddonCollection":{"description":"Список услуг заказа.","type":"object","required":["order_addons"],"properties":{"order_addons":{"type":"array","items":{"$ref":"#/components/schemas/OrderAddon"}}}},"OrderAddon":{"type":"object","description":"Услуга, связанная с позицией заказа, и ее статус в заказе.","required":["id","delivery_chunk_id","order_item_id","status"],"properties":{"id":{"type":"string","format":"uuid","description":"Идентификатор услуги.","example":"019b56d1-5ef0-7ed2-a155-7110d25ca5ce"},"delivery_chunk_id":{"type":"integer","description":"Идентификатор чанка заказа.","format":"int","example":1},"order_item_id":{"type":"string","format":"uuid","description":"Идентификатор позиции заказа.","example":"019b56d1-5ef0-7ed2-a155-7110d25ca5ce"},"status":{"$ref":"#/components/schemas/OrderItemAddonStatus"}}},"OrderID":{"type":"string","format":"uuid","description":"Идентификатор заказа.","example":"019b56d1-5ef0-7ed2-a155-7110d25ca5ce"},"OrderPaymentLink":{"type":"object","description":"Ссылка на оплату за каза.","required":["payment_url"],"properties":{"payment_url":{"type":"string","format":"uri","description":"Подписанная ссылка на страницу оплаты заказа.","example":"https://checkout.kit.yandex.ru/orders/my-store/019b56d1-5ef0-7ed2-a155-7110d25ca5ce?signature=c2lnbmF0dXJl&from=api"}}},"OrderDeliveryChunkRef":{"type":"object","description":"Ссылка на часть заказа.","required":["order_id","delivery_chunk_id"],"properties":{"order_id":{"$ref":"#/components/schemas/OrderID"},"delivery_chunk_id":{"type":"integer","description":"Идентификатор чанка заказа.","format":"int","example":1}}},"GenerateOrderWaybillsRequest":{"type":"object","description":"Запрос накладных для частей заказов.","required":["items"],"properties":{"items":{"type":"array","minItems":1,"maxItems":100,"description":"Части заказов, для которых нужны накладные. Пара заказ + чанк не может повторяться.","items":{"$ref":"#/components/schemas/OrderDeliveryChunkRef"}}}},"OrderWaybillCollection":{"type":"object","description":"Накладные для частей заказов.","required":["waybills","skipped"],"properties":{"waybills":{"type":"array","description":"Сформированные накладные.","items":{"$ref":"#/components/schemas/OrderWaybill"}},"skipped":{"type":"array","description":"Части заказов, для которых накладная не сформирована.","items":{"$ref":"#/components/schemas/SkippedOrderWaybill"}}}},"OrderWaybill":{"type":"object","description":"Накладная на партию отправлений одного склада, отправляемых одной службой доставки.","required":["warehouse_id","delivery_service","url","expires_at","delivery_chunks"],"properties":{"warehouse_id":{"$ref":"#/components/schemas/WarehouseID"},"delivery_service":{"$ref":"#/components/schemas/DeliveryServiceType"},"url":{"type":"string","format":"uri","description":"Подписанная ссылка на PDF-файл с накладной.","example":"https://example.com/waybills/550e8400-e29b-41d4-a716-446655440000.pdf?X-Amz-Signature=1234567890"},"expires_at":{"type":"string","format":"date-time","description":"Момент, после которого ссылка перестает работать.","example":"2026-08-18T12:00:00Z"},"delivery_chunks":{"type":"array","description":"Части заказов, вошедшие в накладную.","items":{"$ref":"#/components/schemas/OrderDeliveryChunkRef"}}}},"SkippedOrderWaybill":{"type":"object","description":"Часть заказа, для которой накладная не сформирована.","required":["order_id","delivery_chunk_id","reason"],"properties":{"order_id":{"$ref":"#/components/schemas/OrderID"},"delivery_chunk_id":{"type":"integer","description":"Идентификатор чанка заказа.","format":"int","example":1},"reason":{"$ref":"#/components/schemas/SkippedOrderWaybillReason"}}},"SkippedOrderWaybillReason":{"type":"string","description":"Причина, по которой накладная не сформирована:\n- `SELF_PICKUP` — самовывоз, отправления нет и накладная не нужна.\n- `DELIVERY_NOT_CREATED` — доставка еще не создана в службе доставки, трек-номера нет.\n- `NO_WAREHOUSE` — у части заказа не указан склад отправления.\n- `SERVICE_NOT_SUPPORTED` — служба доставки не выдает накладные\n  (собственная доставка магазина и часть служб).","enum":["SELF_PICKUP","DELIVERY_NOT_CREATED","NO_WAREHOUSE","SERVICE_NOT_SUPPORTED"]},"OrderDeliveryLabelCollection":{"type":"object","description":"Ярлыки доставки по частям заказа.","required":["delivery_labels","skipped"],"properties":{"delivery_labels":{"type":"array","description":"Сформированные ярлыки доставки.","items":{"$ref":"#/components/schemas/OrderDeliveryLabel"}},"skipped":{"type":"array","description":"Части заказа, для которых ярлык не сформирован.","items":{"$ref":"#/components/schemas/SkippedOrderDeliveryLabel"}}}},"OrderDeliveryLabel":{"type":"object","description":"Ярлык доставки одной части заказа.","required":["delivery_chunk_id","delivery_service","url","expires_at"],"properties":{"delivery_chunk_id":{"type":"integer","description":"Идентификатор чанка заказа.","format":"int","example":1},"delivery_service":{"$ref":"#/components/schemas/DeliveryServiceType"},"url":{"type":"string","format":"uri","description":"Подписанная ссылка на PDF-файл с ярлыком.","example":"https://example.com/order-labels/550e8400-e29b-41d4-a716-446655440000.pdf?X-Amz-Signature=1234567890"},"expires_at":{"type":"string","format":"date-time","description":"Момент, после которого ссылка перестает работать.","example":"2026-08-18T12:00:00Z"},"label_format":{"$ref":"#/components/schemas/DeliveryLabelFormatType"}}},"SkippedOrderDeliveryLabel":{"type":"object","description":"Часть заказа, для которой ярлык не сформирован.","required":["delivery_chunk_id","reason"],"properties":{"delivery_chunk_id":{"type":"integer","description":"Идентификатор чанка заказа.","format":"int","example":1},"reason":{"$ref":"#/components/schemas/SkippedOrderDeliveryLabelReason"}}},"SkippedOrderDeliveryLabelReason":{"type":"string","description":"Причина, по которой ярлык не сформирован:\n- `SELF_PICKUP` — самовывоз, отправления нет и ярлык не нужен.\n\n- `DELIVERY_NOT_CREATED` — доставка еще не создана в службе доставки, трек-номера нет.\n\n- `SERVICE_NOT_SUPPORTED` — служба доставки не печатает ярлыки\n  (собственная доставка магазина и часть служб).\n\n- `FORMAT_NOT_SUPPORTED` — служба доставки печатает по списку размеров и запрошенного\n  `label_format` среди них нет. Службы с `mode: PROVIDER_DEFAULT` этой причины не дают:\n  они игнорируют `label_format` и печатают в своем размере.\n\n- `GENERATION_FAILED` — служба доставки не отдала ярлык (ошибка или таймаут на ее\n  стороне). Причина временная: повторите запрос позже. Остальные части заказа\n  при этом возвращаются в `delivery_labels`.","enum":["SELF_PICKUP","DELIVERY_NOT_CREATED","SERVICE_NOT_SUPPORTED","FORMAT_NOT_SUPPORTED","GENERATION_FAILED"]},"DeliveryLabelFormatType":{"type":"string","description":"Размер ярлыка доставки в миллиметрах.","enum":["210x297","148x210","105x148","100x150","74x105","75x120","120x75","58x60","58x40"]},"DeliveryLabelFormatMode":{"type":"string","description":"Как служба доставки работает с размерами ярлыков:\n- `EXPLICIT_FORMATS` — размер можно выбрать из `formats`.\n- `PROVIDER_DEFAULT` — служба печатает в собственном размере, `formats` пуст.\n- `NOT_SUPPORTED` — служба не печатает ярлыки, `formats` пуст.","enum":["EXPLICIT_FORMATS","PROVIDER_DEFAULT","NOT_SUPPORTED"]},"DeliveryLabelFormat":{"type":"object","description":"Размер ярлыка доставки.","required":["type","title","preselected"],"properties":{"type":{"$ref":"#/components/schemas/DeliveryLabelFormatType"},"title":{"type":"string","description":"Название размера для показа пользователю.","example":"A4, 210×297 мм"},"preselected":{"type":"boolean","description":"Размер, предвыбранный в интерфейсе Яндекс KITᵝ, — подсказка для UI.\n\nЕсли `label_format` не указан, предвыбранный размер не повлияет на печать.\nСлужба доставки использует свой формат по умолчанию — он может отличаться от предвыбранного.\nЧтобы получить ярлык конкретного размера, передайте параметр `label_format`.","example":true}}},"DeliveryServiceLabelFormats":{"type":"object","description":"Размеры ярлыков одной службы доставки.","required":["delivery_service","mode","formats"],"properties":{"delivery_service":{"$ref":"#/components/schemas/DeliveryServiceType"},"mode":{"$ref":"#/components/schemas/DeliveryLabelFormatMode"},"formats":{"type":"array","description":"Доступные размеры ярлыка. Пуст, если `mode` не `EXPLICIT_FORMATS`.","items":{"$ref":"#/components/schemas/DeliveryLabelFormat"}}}},"DeliveryLabelFormatCollection":{"type":"object","description":"Поддерживаемые размеры ярлыков доставки по службам.","required":["services"],"properties":{"services":{"type":"array","description":"Службы доставки в фиксированном порядке отображения, заданном платформой.\nПорядок не алфавитный и меняется при добавлении новых служб — поиск службы выполняйте по полю `delivery_service`.","items":{"$ref":"#/components/schemas/DeliveryServiceLabelFormats"}}}},"Order":{"type":"object","description":"Заказ.","required":["id","order_number","created_at","updated_at","status","customer_id","client","delivery_chunks","total_price","total_final_price","purchased_price","gift_card_discount"],"properties":{"id":{"$ref":"#/components/schemas/OrderID"},"order_number":{"type":"integer","description":"Номер заказа, отображаемый покупателю.","example":1234567},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания заказа.","example":"2020-01-01T00:00:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего обновления заказа.","example":"2020-01-02T00:00:00Z"},"status":{"$ref":"#/components/schemas/OrderStatus"},"customer_id":{"allOf":[{"$ref":"#/components/schemas/CustomerID"}],"description":"Идентификатор покупателя, оформившего заказ. Данные покупателя — `GET /v1/customers/{customer_id}`."},"client":{"$ref":"#/components/schemas/OrderClientInfo"},"payment":{"$ref":"#/components/schemas/OrderPaymentInfo"},"delivery_chunks":{"type":"array","description":"Части заказа с информацией о доставке. Каждый чанк содержит товары, отправляемые с одного склада.","items":{"$ref":"#/components/schemas/OrderDeliveryChunk"}},"total_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Общая стоимость заказа до скидок.","example":"1200.00"},"total_final_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Итоговая стоимость заказа после всех скидок.","example":"1200.00"},"purchased_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Итоговая стоимость после возвратов."},"acquiring_id":{"type":"string","description":"Идентификатор платежа в эквайринге.","example":"019b56d1-89a5-7a78-849f-4e8b174d0c77"},"acquiring_type":{"$ref":"#/components/schemas/AcquiringType"},"promocode":{"$ref":"#/components/schemas/OrderPromocodeInfo"},"gift_card_discount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Скидка по подарочной карте.","example":"0.00"},"gift_card_id":{"type":"string","format":"uuid","description":"Идентификатор использованной подарочной карты.","example":"019b56d1-a80d-7afe-a2ae-09047912f03e"}}},"OrderDeliveryChunk":{"type":"object","description":"Часть заказа, отправляемая с одного склада.","required":["id","items","delivery_info","total_price","total_final_price","purchased_price"],"properties":{"id":{"type":"integer","description":"Идентификатор чанка внутри заказа.","example":0},"items":{"type":"array","description":"Товары в данной части заказа.","items":{"$ref":"#/components/schemas/OrderItem"}},"delivery_info":{"$ref":"#/components/schemas/OrderDeliveryInfo"},"total_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Стоимость товаров в чанке до скидок.","example":"1200.00"},"total_final_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Итоговая стоимость товаров в чанке после всех скидок.","example":"1100.00"},"purchased_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Итоговая стоимость после возвратов.","example":"1100.00"}}},"OrderStatus":{"type":"string","description":"Статус заказа:\n- `NEW` — новый заказ.\n- `PENDING_PAYMENT` — ожидает оплаты.\n- `ORDER_PLACED` — заказ оформлен.\n- `WAIT_FOR_CONFIRMATION` — ожидает подтверждения продавцом.\n- `CREATING_INITIAL_RECEIPT` — создание чека.\n- `SETUP_DELIVERY` — настройка доставки.\n- `WAIT_FOR_DELIVERY` — ожидает доставки.\n- `CANCELLATION_IN_PROGRESS` — отмена в процессе.\n- `DELIVERY_CANCELLED` — доставка отменена.\n- `FULL_REFUND` — полный возврат.\n- `PARTIAL_REFUND` — частичный возврат.\n- `CREATING_FINAL_RECEIPTS` — создание финальных чеков.\n- `DELIVERED` — доставлен.\n- `CANCELLED` — отменен.\n- `COMPLETED` — завершен.\n- `FROZEN` — заморожен: обработка заказа остановлена, требуется вмешательство продавца.\n","enum":["NEW","PENDING_PAYMENT","ORDER_PLACED","WAIT_FOR_CONFIRMATION","CREATING_INITIAL_RECEIPT","SETUP_DELIVERY","WAIT_FOR_DELIVERY","CANCELLATION_IN_PROGRESS","DELIVERY_CANCELLED","FULL_REFUND","PARTIAL_REFUND","CREATING_FINAL_RECEIPTS","DELIVERED","CANCELLED","COMPLETED","FROZEN"]},"OrderClientInfo":{"type":"object","required":["is_notify"],"properties":{"last_name":{"type":"string","description":"Фамилия клиента.","example":"Иванов"},"first_name":{"type":"string","description":"Имя клиента.","example":"Иван"},"patronymic":{"type":"string","description":"Отчество клиента.","example":"Иванович"},"phone":{"type":"string","description":"Телефон клиента.","example":"+79991234567"},"email":{"type":"string","format":"email","x-go-type":"string","description":"Email клиента."},"is_notify":{"type":"boolean","description":"Нужно ли уведомлять клиента о статусах заказа.","example":true}}},"OrderDeliveryInfo":{"type":"object","description":"Информация о доставке заказа.","required":["address","raw_status","human_status"],"properties":{"delivered_at":{"type":"string","format":"date-time","description":"Дата и время доставки."},"method":{"$ref":"#/components/schemas/DeliveryMethod"},"raw_status":{"type":"string","description":"Статус доставки от службы доставки."},"human_status":{"type":"string","description":"Человекочитаемый статус доставки."},"address":{"$ref":"#/components/schemas/OrderAddressInfo"},"interval":{"$ref":"#/components/schemas/TimeInterval"},"courier_interval":{"$ref":"#/components/schemas/TimeInterval"},"pickup_point_interval":{"$ref":"#/components/schemas/TimeInterval"},"seller_costs":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Стоимость доставки для продавца.","example":"1200.00"},"customer_costs":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Стоимость доставки для покупателя.","example":"1200.00"},"tracking_number":{"type":"string","description":"Трек-номер отправления."},"tracking_url":{"type":"string","description":"Ссылка для отслеживания отправления."},"delivery_notes":{"type":"string","description":"Комментарий к доставке."},"delivery_service_type":{"allOf":[{"$ref":"#/components/schemas/DeliveryServiceType"}],"description":"Служба доставки для этой части заказа. Соответствует `method`.\n\nНе заполняется для `method` = `SELF_PICK_UP` и `POSTAL_SERVICE` — доставка службой в них не участвует."},"courier_delivery_service_type":{"allOf":[{"$ref":"#/components/schemas/DeliveryServiceType"}],"deprecated":true,"description":"Устарело, используйте `delivery_service_type`.\n\nВозвращает то же значение, что и `delivery_service_type`, если поле заполнено."},"pickup_point_delivery_service_type":{"allOf":[{"$ref":"#/components/schemas/DeliveryServiceType"}],"deprecated":true,"description":"Устарело, используйте `delivery_service_type`.\n\nВозвращает то же значение, что и `delivery_service_type`, если поле заполнено."},"warehouse_id":{"$ref":"#/components/schemas/WarehouseID"}}},"OrderPaymentInfo":{"type":"object","required":["amount"],"properties":{"method":{"$ref":"#/components/schemas/PaymentMethod"},"status":{"$ref":"#/components/schemas/PaymentStatus"},"amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Сумма оплаты заказа с учетом скидок и доставки, включая оплату сервисов магазина\nи покупаемого подарочного сертификата. Дополнительные услуги позиций в сумму не входят.\nЭто полная сумма оплаты, а не остаток долга; возвраты ее не уменьшают.","example":"1350.00"}}},"OrderItemID":{"type":"string","format":"uuid","description":"Идентификатор позиции заказа.","example":"00000000-0000-0000-0000-000000000001"},"OrderMarkingCode":{"type":"object","description":"Код маркировки «Честный знак» для позиции заказа.","required":["order_item_id","marking_code"],"properties":{"order_item_id":{"$ref":"#/components/schemas/OrderItemID"},"marking_code":{"type":"string","nullable":true,"description":"Код маркировки «Честный знак» целиком, вместе с криптохвостом.\n`null` — снять ранее записанный код с позиции.","example":"0104670147122765215Fx_t42mlIYny91EE1192Z5CcNr9XGy6luZHI79Fy20sQtEva56kNkxAPI5eGiIw="}}},"SetOrderMarkingCodesRequest":{"type":"object","description":"Запрос на запись кодов маркировки для позиций заказа.","required":["items"],"properties":{"items":{"type":"array","minItems":1,"maxItems":100,"description":"Позиции заказа с кодами маркировки. Позиция не может повторяться.","items":{"$ref":"#/components/schemas/OrderMarkingCode"}}}},"OrderItem":{"type":"object","description":"Товар в заказе.","required":["id","product_variant_id","name","is_product_variant_deleted","quantity","price","final_price","vat","loyalty_discount","promocode_discount","gift_card_discount"],"properties":{"id":{"type":"string","format":"uuid","description":"Уникальный идентификатор позиции в заказе.","example":"00000000-0000-0000-0000-000000000001"},"product_variant_id":{"type":"string","format":"uuid","description":"Идентификатор товара.","example":"00000000-0000-0000-0000-000000000001"},"name":{"type":"string","description":"Название товара.","example":"Футболка белая, размер M"},"is_product_variant_deleted":{"type":"boolean","description":"Является ли товар на данный момент удаленным.","example":false},"quantity":{"type":"integer","format":"int32","description":"Количество товара.","example":2},"price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Цена товара за единицу до скидок.","example":"1200.00"},"final_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Итоговая цена товара за единицу после всех скидок.","example":"1100.00"},"vat":{"type":"integer","description":"НДС в процентах. Специальное значение -1 означает, что товар не облагается НДС.","example":20},"truthful_label":{"type":"string","description":"Код маркировки «Честный знак» этой позиции без криптохвоста.\nПоле отсутствует, если код для позиции не записан.\nЗаписать или снять код — `POST /v1/orders/{id}/marking-codes`.","example":"0104670147122765215Fx_t42mlIYny"},"refused_count":{"type":"integer","format":"int32","description":"Количество отказов по данной позиции."},"loyalty_discount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Скидка по программе лояльности.","example":"0.00"},"promocode_discount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Скидка по промокоду.","example":"100.00"},"gift_card_discount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Скидка по подарочной карте.","example":"0.00"}}},"OrderItemAddonStatus":{"type":"string","description":"Статус услуги:\n- `NEW` — новая.\n- `ACTIVE` — в работе.\n- `DONE` — выполнена.\n- `CANCELLED` — отменена.","enum":["NEW","ACTIVE","DONE","CANCELLED"],"x-enum-varnames":["OrderItemAddonStatusNew","OrderItemAddonStatusActive","OrderItemAddonStatusDone","OrderItemAddonStatusCancelled"]},"OrderAddressInfo":{"type":"object","description":"Адрес доставки заказа.\n\nПоля `courier_*`, `pickup_point_*` и `self_pick_up_*` относятся каждое к своему способу доставки\nи заполняются только для способа, который указан в `method`. Группы полей для остальных\nспособов доставки не возвращаются. Поля `locality` и `address` соответствуют выбранному способу доставки.","properties":{"locality":{"type":"string","description":"Населенный пункт доставки, соответствующий `method`.\n\nЕсли для выбранного способа доставки населенный пункт не задан, отдается тот,\nкоторый покупатель указал в оформлении.","example":"Санкт-Петербург"},"address":{"type":"string","description":"Адрес доставки, соответствующий `method`.","example":"проспект Пархоменко, 12"},"pickup_point_id":{"type":"string","description":"Идентификатор пункта выдачи. Актуален только при `method` = `PICKUP_POINT`."},"courier_locality":{"type":"string","description":"Населенный пункт курьерской доставки. Актуален только при `method` = `COURIER`."},"courier_address":{"type":"string","description":"Адрес курьерской доставки. Актуален только при `method` = `COURIER`."},"pickup_point_locality":{"type":"string","description":"Населенный пункт пункта выдачи. Актуален только при `method` = `PICKUP_POINT`."},"pickup_point_address":{"type":"string","description":"Адрес пункта выдачи. Актуален только при `method` = `PICKUP_POINT`."},"self_pick_up_warehouse_id":{"allOf":[{"$ref":"#/components/schemas/WarehouseID"}],"description":"Склад самовывоза. Актуален только при `method` = `SELF_PICK_UP`."},"self_pick_up_locality":{"type":"string","description":"Населенный пункт склада самовывоза. Актуален только при `method` = `SELF_PICK_UP`."},"self_pick_up_address":{"type":"string","description":"Адрес склада самовывоза. Актуален только при `method` = `SELF_PICK_UP`."},"floor":{"type":"string","description":"Этаж. Заполняется только для курьерской доставки."},"apartment":{"type":"string","description":"Квартира или офис. Заполняется только для курьерской доставки."},"appartment":{"type":"string","deprecated":true,"description":"Устарело, используйте `apartment`."},"entrance":{"type":"string","description":"Подъезд. Заполняется только для курьерской доставки."},"intercom":{"type":"string","description":"Домофон. Заполняется только для курьерской доставки."}}},"TimeInterval":{"type":"object","properties":{"from":{"type":"string","format":"date-time","example":"2020-01-01T00:00:00Z"},"to":{"type":"string","format":"date-time","example":"2020-01-01T00:00:00Z"}}},"OrderPromocodeInfo":{"type":"object","description":"Информация о примененном промокоде.","required":["code","discount"],"properties":{"code":{"type":"string","description":"Код промокода.","example":"HELLO5"},"discount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Сумма скидки по промокоду.","example":"1200.00"}}},"PaymentMethod":{"type":"string","enum":["CARD_ONLINE","CARD_ON_DELIVERY","CASH_ON_DELIVERY"]},"PaymentStatus":{"type":"string","description":"Статус оплаты заказа:\n- `PAYMENT_PENDING_OR_UNPAID` — заказ не оплачен.\n- `PAYMENT_PAID` — оплата получена, но итоговая сумма может измениться. Позже статус меняется:\n  после окончательного расчета на `PAYMENT_FINALLY_PAID`, при полном возврате на `PAYMENT_REFUNDED`.\n- `PAYMENT_REFUNDED` — выполнен полный возврат оплаты.\n- `PAYMENT_FINALLY_PAID` — окончательный успешный статус оплаты после возможной корректировки суммы.\n","enum":["PAYMENT_PENDING_OR_UNPAID","PAYMENT_PAID","PAYMENT_REFUNDED","PAYMENT_FINALLY_PAID"]},"DeliveryMethod":{"type":"string","enum":["COURIER","POSTAL_SERVICE","PICKUP_POINT","SELF_PICK_UP"]},"DeliveryServiceType":{"type":"string","description":"Служба доставки:\n- `YANDEX_DELIVERY` — Яндекс Доставка.\n- `CDEK` — СДЭК.\n- `META_SHIP_DALLI` — Dalli через MetaShip.\n- `META_SHIP_RUSSIAN_POST` — Почта России через MetaShip.\n- `META_SHIP_PECOM` — ПЭК через MetaShip.\n- `OZON` — Ozon Доставка.\n- `MERCHANT_SHIP` — собственная служба доставки магазина.\n- `YANDEX_MARKET_FBO` — Фулфилмент Яндекс Маркета.\n- `UNIVERSAL_DELIVERY_CSE` — КСЭ.\n","enum":["YANDEX_DELIVERY","CDEK","META_SHIP_DALLI","META_SHIP_RUSSIAN_POST","META_SHIP_PECOM","OZON","MERCHANT_SHIP","YANDEX_MARKET_FBO","UNIVERSAL_DELIVERY_CSE"]},"AcquiringType":{"type":"string","description":"Тип платежной системы.","enum":["CLOUD_PAY","YANDEX_PAY"]},"CustomerID":{"type":"string","format":"uuid","description":"Идентификатор клиента.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"Customer":{"type":"object","required":["customer_id","first_name","last_name","is_registered","is_admin","phone","registered_at","created_at","updated_at","order_count","order_sum","number","note","agreement_for_promo"],"properties":{"customer_id":{"$ref":"#/components/schemas/CustomerID"},"first_name":{"type":"string","description":"Имя клиента.","example":"Иван"},"last_name":{"type":"string","description":"Фамилия клиента.","example":"Иванов"},"is_registered":{"type":"boolean","description":"Зарегистрирован ли клиент.","example":true},"phone":{"type":"string","description":"Телефон клиента.","example":"+79991234567"},"email":{"type":"string","format":"email","x-go-type":"string","description":"Email клиента."},"registered_at":{"type":"string","format":"date-time","description":"Дата регистрации клиента.","example":"2020-01-01T00:00:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего обновления клиента.","example":"2020-01-02T00:00:00Z"},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания клиента в магазине. Может быть раньше `registered_at`.","example":"2019-12-31T00:00:00Z"},"order_count":{"type":"integer","description":"Количество завершенных заказов клиента.","example":10},"order_sum":{"type":"string","description":"Сумма завершенных заказов клиента.","example":"10000.00"},"number":{"type":"integer","description":"Номер клиента.","example":10000},"note":{"type":"string","description":"Примечание к клиенту.","example":"Клиент часто покупает товары в нашем магазине"},"agreement_for_promo":{"type":"boolean","description":"Согласие клиента на получение рекламных материалов.","example":true},"agreement_at":{"type":"string","format":"date-time","description":"Дата и время получения последнего согласия на рекламные материалы.\nОтсутствует, если клиент никогда не давал согласия. Поле не обнуляется при отзыве согласия —\nактуальность согласия определяется полем `agreement_for_promo`.","example":"2024-05-20T12:30:00Z"},"birth_date":{"type":"string","format":"date","description":"Дата рождения клиента.","example":"2003-02-04"}}},"CustomerCollection":{"type":"object","required":["customers","total_count"],"properties":{"customers":{"type":"array","items":{"$ref":"#/components/schemas/Customer"}},"total_count":{"type":"integer","description":"Общее количество клиентов."}}},"Cart":{"type":"object","description":"Корзина клиента.","required":["items","total_price","total_final_price"],"properties":{"items":{"type":"array","items":{"$ref":"#/components/schemas/CartItem"},"description":"Позиции корзины."},"total_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Общая стоимость корзины до скидок.","example":"2400.00"},"total_final_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Итоговая стоимость корзины после скидок на товары и наборы. Скидка по промокоду\nкорзины в нее не входит — в отличие от `Order.total_final_price`.","example":"2200.00"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения корзины. Отсутствует, если корзины у клиента еще не было.","example":"2024-05-20T12:30:00Z"}}},"CartItem":{"type":"object","description":"Позиция в корзине клиента.","required":["product_variant_id","name","quantity","price","final_price","total_price","total_final_price"],"properties":{"product_variant_id":{"type":"string","format":"uuid","description":"Идентификатор товара. Не является уникальным ключом позиции. Один товар попадает\nв несколько позиций, если он:\n- является частью набора;\n- добавлен с разными дополнительными услугами;\n- выбран подарком.\nКоличества по таким позициям нужно суммировать.","example":"00000000-0000-0000-0000-000000000001"},"name":{"type":"string","description":"Название товара.","example":"Футболка, размер M"},"quantity":{"type":"integer","format":"int32","description":"Количество товара, которое клиент положил в корзину. Может превышать остаток на складе.\nПриводится к доступному значению, когда клиент открывает корзину или оформляет заказ.","example":2},"price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Цена товара за единицу до скидок.","example":"1200.00"},"final_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Цена товара за единицу после скидок на товар и наборы. Скидка по промокоду корзины\nв нее не входит — в отличие от `OrderItem.final_price`.","example":"1100.00"},"total_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Стоимость позиции до скидок — `price`, умноженная на `quantity`.","example":"2400.00"},"total_final_price":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Итоговая стоимость позиции — `final_price`, умноженная на `quantity`.","example":"2200.00"}}},"UpdateCustomerRequest":{"type":"object","properties":{"note":{"type":"string","description":"Примечание к клиенту.","example":"Клиент часто покупает товары в нашем магазине"},"first_name":{"type":"string","description":"Имя клиента.","example":"Иван"},"last_name":{"type":"string","description":"Фамилия клиента.","example":"Иванов"},"email":{"type":"string","format":"email","description":"Email клиента.","example":"ivan@example.com"}}},"DiscountStatus":{"type":"string","description":"Статус скидки:\n- `ACTIVE` — активная скидка.\n- `INACTIVE` — неактивная скидка.\n- `ARCHIVED` — архивированная скидка.","enum":["ACTIVE","INACTIVE","ARCHIVED"]},"DiscountNotArchivedStatus":{"type":"string","description":"Статус скидки:\n- `ACTIVE` — активная скидка.\n- `INACTIVE` — неактивная скидка.","enum":["ACTIVE","INACTIVE"]},"DiscountID":{"type":"string","format":"uuid","description":"Идентификатор скидки.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"DiscountValue":{"description":"Информация о значении скидки и о типе скидки.","type":"object","required":["value","type"],"properties":{"value":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"example":"10.00","description":"- Для типа `PERCENT` — значение от 0 до 100 (например, 10.5).\n\n- Для типа `VALUE` — сумма в рублях (например, 500.00)."},"type":{"type":"string","enum":["PERCENT","VALUE"],"description":"Тип скидки:\n- `PERCENT` — скидка в процентах от цены товара.\n- `VALUE` — скидка в абсолютном значении (в рублях)."}}},"DiscountDates":{"description":"Информация о датах действия скидки.","type":"object","required":["start_date"],"properties":{"start_date":{"type":"string","format":"date-time","example":"2020-01-01T00:00:00Z","description":"Дата начала действия скидки."},"end_date":{"type":"string","format":"date-time","example":"2020-01-01T00:00:00Z","description":"Дата окончания действия скидки. Если не указана, то скидка действует бесконечно."}}},"DiscountObjects":{"type":"object","description":"Объекты, привязываемые к скидке. Передается только один из типов за раз:\n- `product_variant_ids` — для привязки конкретных вариантов товаров.\n- `category_ids` — для привязки категорий.\n- `collection_ids` — для привязки коллекций.\nВ одном запросе нужно передавать либо товары, либо категории и коллекции.","properties":{"product_variant_ids":{"type":"array","description":"Идентификаторы товаров.","items":{"type":"string","format":"uuid","description":"Идентификатор товара.","example":"00000000-0000-0000-0000-000000000001"}},"category_ids":{"type":"array","items":{"type":"string","format":"uuid","description":"Идентификатор категории.","example":"00000000-0000-0000-0000-000000000001"}},"collection_ids":{"type":"array","description":"Идентификаторы коллекций.","items":{"type":"string","format":"uuid","description":"Идентификатор коллекции.","example":"00000000-0000-0000-0000-000000000001"}}}},"PromocodeObjects":{"type":"object","description":"Объекты, привязываемые к промокоду:\n- `product_variant_ids` — для привязки конкретных товаров.\n- `category_ids` — для привязки категорий.\n- `collection_ids` — для привязки коллекций.\nВ одном запросе нужно передавать либо товары, либо категории и коллекции.","properties":{"product_variant_ids":{"type":"array","description":"Идентификаторы товаров.","items":{"$ref":"#/components/schemas/VariantID"}},"category_ids":{"type":"array","description":"Идентификаторы категорий.","items":{"$ref":"#/components/schemas/CategoryID"}},"collection_ids":{"type":"array","description":"Идентификаторы коллекций.","items":{"$ref":"#/components/schemas/CollectionID"}}}},"UpdateDiscountRequest":{"type":"object","properties":{"title":{"type":"string","description":"Название скидки.","example":"Скидка 10%"},"discount_value":{"$ref":"#/components/schemas/DiscountValue"},"discount_dates":{"$ref":"#/components/schemas/DiscountDates"},"status":{"$ref":"#/components/schemas/DiscountNotArchivedStatus"},"binding_mode":{"$ref":"#/components/schemas/DiscountBindingModeForUpdate"}}},"CreateDiscountRequest":{"type":"object","required":["title","discount_value","discount_dates","status","binding_mode"],"properties":{"title":{"type":"string","description":"Название скидки.","example":"Скидка 10%"},"discount_value":{"$ref":"#/components/schemas/DiscountValue"},"discount_dates":{"$ref":"#/components/schemas/DiscountDates"},"status":{"$ref":"#/components/schemas/DiscountNotArchivedStatus"},"binding_mode":{"$ref":"#/components/schemas/DiscountBindingModeForUpdate"}}},"DiscountBindingMode":{"type":"string","description":"Режим применения скидки:\n- `ALL_VARIANTS` — скидка применяется ко всем товарам магазина.\n- `SELECTED_VARIANTS` — скидка применяется к выбранным товарам.\n- `SELECTED_CATEGORIES_COLLECTIONS` — скидка применяется к товарам из выбранных категорий и коллекций.","enum":["ALL_VARIANTS","SELECTED_VARIANTS","SELECTED_CATEGORIES_COLLECTIONS"]},"DiscountBindingModeForUpdate":{"type":"string","description":"Изменение режима применения скидки:\n- `ALL_VARIANTS` — скидка применяется ко всем товарам магазина.\n- `SELECTED_VARIANTS` — скидка применяется к определенным объектам.\n\nЧтобы выбрать режим `SELECTED_CATEGORIES_COLLECTIONS`, добавьте к скидке сущности категорий или коллекций. При этом скидка не должна иметь привязанных товаров.","enum":["ALL_VARIANTS","SELECTED_VARIANTS"]},"Discount":{"type":"object","description":"Скидка.","required":["id","title","discount_value","discount_dates","created_at","updated_at","status","binding_mode"],"properties":{"id":{"$ref":"#/components/schemas/DiscountID"},"title":{"type":"string","description":"Название скидки.","example":"Скидка 10%"},"discount_value":{"$ref":"#/components/schemas/DiscountValue"},"discount_dates":{"$ref":"#/components/schemas/DiscountDates"},"status":{"$ref":"#/components/schemas/DiscountStatus"},"created_at":{"type":"string","format":"date-time","description":"Дата создания скидки.","example":"2020-01-01T00:00:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата последнего обновления скидки.","example":"2020-01-01T00:00:00Z"},"binding_mode":{"$ref":"#/components/schemas/DiscountBindingMode"}}},"BlogID":{"type":"string","format":"uuid","description":"Идентификатор новости.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"BlogStatus":{"type":"string","enum":["ACTIVE","INACTIVE"],"description":"Статус публикации новости."},"BlogAttachment":{"type":"object","required":["type","id"],"properties":{"type":{"$ref":"#/components/schemas/BlogAttachmentType"},"id":{"description":"Идентификатор сущности привязанной к новости.","oneOf":[{"$ref":"#/components/schemas/CategoryID"},{"$ref":"#/components/schemas/CollectionID"}]}}},"BlogAttachmentType":{"type":"string","description":"Тип сущности привязанной к новости (категория или коллекция).\nК новости можно привязать только одну сущность.","enum":["CATEGORY","COLLECTION"]},"BlogDates":{"type":"object","description":"Даты действия новости.","required":["start_date"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Дата публикации новости."},"end_date":{"type":"string","format":"date-time"}}},"Blog":{"type":"object","required":["id","slug","title","content","blog_dates","tags","seo_title","seo_h1","seo_description","status"],"properties":{"id":{"$ref":"#/components/schemas/BlogID"},"slug":{"type":"string","description":"URL-идентификатор новости."},"title":{"type":"string","description":"Заголовок новости."},"short_description":{"type":"string","description":"Краткое описание."},"is_short_description_auto_generated":{"type":"boolean","description":"Флаг, указывающий, что краткое описание было сгенерировано автоматически."},"content":{"type":"string","description":"Содержимое новости."},"blog_dates":{"$ref":"#/components/schemas/BlogDates"},"tags":{"type":"array","items":{"type":"string"},"description":"Теги новости."},"seo_title":{"type":"string","description":"SEO заголовок новости."},"seo_h1":{"type":"string","description":"SEO H1 новости."},"seo_description":{"type":"string","description":"SEO описание новости."},"desktop_media":{"type":"array","description":"Медиа для отображения на версии для компьютера.","items":{"$ref":"#/components/schemas/VariantMedia"}},"mobile_media":{"type":"array","description":"Медиа для отображения на мобильном устройстве.","items":{"$ref":"#/components/schemas/VariantMedia"}},"preview_media":{"type":"array","description":"Медиа для отображения в превью.","items":{"$ref":"#/components/schemas/VariantMedia"}},"attachment":{"description":"Связанная сущность.","$ref":"#/components/schemas/BlogAttachment"},"status":{"description":"Статус новости.","$ref":"#/components/schemas/BlogStatus"}}},"CreateBlogRequest":{"type":"object","required":["title","content","blog_dates","tags","status"],"properties":{"slug":{"type":"string","description":"URL-идентификатор новости."},"title":{"type":"string","description":"Заголовок новости."},"short_description":{"type":"string","description":"Краткое описание."},"is_short_description_auto_generated":{"type":"boolean","description":"Сгенерировать краткое описание автоматически."},"content":{"type":"string","description":"Содержимое новости."},"blog_dates":{"$ref":"#/components/schemas/BlogDates"},"tags":{"type":"array","items":{"type":"string"},"description":"Теги новости."},"seo_title":{"type":"string","description":"SEO заголовок новости."},"seo_h1":{"type":"string","description":"SEO H1 новости."},"seo_description":{"type":"string","description":"SEO описание новости."},"desktop_media":{"type":"array","description":"Медиа для отображения в версии для компьютера.","items":{"$ref":"#/components/schemas/VariantMedia"}},"mobile_media":{"type":"array","description":"Медиа для отображения на мобильном устройстве.","items":{"$ref":"#/components/schemas/VariantMedia"}},"preview_media":{"type":"array","description":"Медиа для отображения в превью.","items":{"$ref":"#/components/schemas/VariantMedia"}},"attachment":{"description":"Связанная сущность.","$ref":"#/components/schemas/BlogAttachment"},"status":{"description":"Статус публикации новости.","$ref":"#/components/schemas/BlogStatus"}}},"UpdateBlogRequest":{"type":"object","properties":{"slug":{"type":"string","description":"URL-идентификатор новости."},"title":{"type":"string","description":"Заголовок новости."},"short_description":{"type":"string","description":"Краткое описание."},"is_short_description_auto_generated":{"type":"boolean","description":"Сгенерировать краткое описание автоматически."},"content":{"type":"string","description":"Содержимое новости."},"blog_dates":{"$ref":"#/components/schemas/BlogDates"},"tags":{"type":"array","description":"Теги новости.","items":{"type":"string"}},"seo_title":{"type":"string","description":"SEO заголовок новости."},"seo_h1":{"type":"string","description":"SEO H1 новости."},"seo_description":{"type":"string","description":"SEO описание новости."},"desktop_media":{"type":"array","description":"Медиа для отображения в версии для компьютера.","items":{"$ref":"#/components/schemas/VariantMedia"}},"mobile_media":{"type":"array","description":"Медиа для отображения на мобильном устройстве.","items":{"$ref":"#/components/schemas/VariantMedia"}},"preview_media":{"type":"array","description":"Медиа для отображения в превью.","items":{"$ref":"#/components/schemas/VariantMedia"}},"attachment":{"description":"Связанная сущность. Можно очистить, передав `null`.","nullable":true,"allOf":[{"$ref":"#/components/schemas/BlogAttachment"}]},"status":{"description":"Статус публикации новости.","$ref":"#/components/schemas/BlogStatus"}}},"BlogCollection":{"type":"object","required":["blogs","total_count"],"properties":{"blogs":{"type":"array","items":{"$ref":"#/components/schemas/Blog"}},"total_count":{"type":"integer","format":"uint64","description":"Общее количество новостей по текущему фильтру."}}},"DiscountCollection":{"type":"object","required":["discounts","total_count"],"properties":{"discounts":{"type":"array","items":{"$ref":"#/components/schemas/Discount"}},"total_count":{"type":"integer","description":"Общее количество скидок.","format":"uint64","example":100}}},"GiftID":{"type":"string","format":"uuid","description":"Идентификатор подарка.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"GiftStatus":{"type":"string","description":"Статус подарка:\n- `ACTIVE` — активный подарок (доступен покупателям).\n- `INACTIVE` — неактивный подарок.","enum":["ACTIVE","INACTIVE"]},"GiftDefaultSort":{"type":"string","description":"Сортировка товаров подарка по умолчанию:\n- `POPULARITY` — по популярности.\n- `CHEAPEST` — сначала дешевые.\n- `EXPENSIVE` — сначала дорогие.\n- `NEWEST` — сначала новые.\n- `OLDEST` — сначала старые.","enum":["POPULARITY","CHEAPEST","EXPENSIVE","NEWEST","OLDEST"],"default":"POPULARITY"},"Gift":{"type":"object","description":"Подарок за покупку.","required":["id","title","min_cart_total","status","default_sort","created_at","updated_at"],"properties":{"id":{"$ref":"#/components/schemas/GiftID"},"title":{"type":"string","description":"Название подарка.","example":"Подарок при заказе от 1000 рублей"},"min_cart_total":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Минимальная сумма корзины для получения подарка.","example":"1000.00"},"status":{"$ref":"#/components/schemas/GiftStatus"},"default_sort":{"$ref":"#/components/schemas/GiftDefaultSort"},"created_at":{"type":"string","format":"date-time","description":"Дата создания подарка.","example":"2020-01-01T00:00:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата последнего обновления подарка.","example":"2020-01-01T00:00:00Z"}}},"CreateGiftRequest":{"type":"object","required":["title","min_cart_total","variant_ids"],"properties":{"title":{"type":"string","maxLength":2000,"description":"Название подарка.","example":"Подарок при заказе от 1000 рублей"},"min_cart_total":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Минимальная сумма корзины для получения подарка.","example":"1000.00"},"default_sort":{"$ref":"#/components/schemas/GiftDefaultSort"},"variant_ids":{"type":"array","minItems":1,"maxItems":50,"description":"Идентификаторы товаров-подарков (от 1 до 50).","items":{"$ref":"#/components/schemas/VariantID"}}}},"GiftCollection":{"description":"Список подарков.","type":"object","required":["gifts","total_count"],"properties":{"gifts":{"type":"array","items":{"$ref":"#/components/schemas/Gift"}},"total_count":{"type":"integer","description":"Общее количество подарков.","format":"uint64","example":100}}},"GiftCardID":{"type":"string","format":"uuid","description":"Идентификатор подарочной карты","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"GiftCardStatus":{"type":"string","description":"Статус подарочной карты:\n- `ACTIVATED` — активен.\n- `DEACTIVATED` — деактивирован.\n- `REFUND_IN_PROGRESS` — в процессе возврата.\n- `REFUNDED` — возвращен.\n- `CANCELLED` — отменен.","enum":["ACTIVATED","DEACTIVATED","REFUND_IN_PROGRESS","REFUNDED","CANCELLED"]},"GiftCard":{"type":"object","description":"Подарочная карта.","required":["id","code","initial_amount","spent_amount","status","buyer_name","buyer_email","buyer_phone","holder_email"],"properties":{"id":{"$ref":"#/components/schemas/GiftCardID"},"code":{"type":"string","description":"Код подарочной карты.","example":"GIFTCARD-****-1234"},"initial_amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Номинал подарочной карты.","example":"1000.00"},"spent_amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Потраченная сумма.","example":"300.00"},"status":{"$ref":"#/components/schemas/GiftCardStatus"},"expires_at":{"type":"string","format":"date-time","description":"Срок действия подарочной карты.","example":"2026-12-31T23:59:59Z"},"buyer_name":{"type":"string","description":"Имя покупателя.","example":"Иван Иванов"},"buyer_email":{"type":"string","description":"Email покупателя.","example":"buyer@example.com"},"buyer_phone":{"type":"string","description":"Телефон покупателя.","example":"+79998887766"},"holder_email":{"type":"string","description":"Email получателя.","example":"holder@example.com"},"sending_date":{"type":"string","format":"date-time","description":"Дата отправки подарочной карты получателю.","example":"2026-01-01T10:30:00Z"},"purchased_date":{"type":"string","format":"date-time","description":"Дата покупки подарочной карты.","example":"2026-01-01T10:30:00Z"},"message":{"type":"string","description":"Сообщение получателю.","example":"С днем рождения!"}}},"GiftCardCollection":{"description":"Список подарочных карт.","type":"object","required":["gift_cards","total_count"],"properties":{"gift_cards":{"type":"array","items":{"$ref":"#/components/schemas/GiftCard"}},"total_count":{"type":"integer","description":"Общее количество подарочных карт.","format":"uint64","example":100}}},"UpdateGiftRequest":{"type":"object","description":"Поля для обновления подарка. Передаются только изменяемые поля.","properties":{"title":{"type":"string","maxLength":2000,"description":"Название подарка.","example":"Подарок при заказе от 1000 рублей"},"min_cart_total":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Минимальная сумма корзины для получения подарка.","example":"1000.00"},"status":{"$ref":"#/components/schemas/GiftStatus"},"default_sort":{"$ref":"#/components/schemas/GiftDefaultSort"}}},"GiftVariantsRequest":{"type":"object","required":["variant_ids"],"properties":{"variant_ids":{"type":"array","minItems":1,"maxItems":50,"description":"Идентификаторы товаров подарка.","items":{"$ref":"#/components/schemas/VariantID"}}}},"ContextCollectionID":{"type":"string","format":"uuid","description":"Идентификатор контекстной коллекции.","example":"0196a577-b86c-7c8f-893d-2f1dfbc57f5d"},"ContextCollectionDefaultSort":{"type":"string","description":"Сортировка подобранных товаров по умолчанию:\n- `POPULARITY` — по популярности.\n- `CHEAPEST` — сначала дешевые.\n- `EXPENSIVE` — сначала дорогие.\n- `NEWEST` — сначала новые.\n- `OLDEST` — сначала старые.","enum":["POPULARITY","CHEAPEST","EXPENSIVE","NEWEST","OLDEST"],"default":"POPULARITY"},"ContextCollectionConditionType":{"type":"string","description":"Тип условия подбора:\n- `CHARACTERISTIC` — сравнение по характеристике.\n- `CATEGORY` — сравнение по категории.\n- `COLLECTION` — сравнение по коллекции.\n- `BRAND` — сравнение по бренду.\n- `BADGE` — сравнение по бейджу.","enum":["CHARACTERISTIC","CATEGORY","COLLECTION","BRAND","BADGE"]},"ContextCollectionConditionOperator":{"type":"string","description":"Оператор условия подбора. В External API поддерживается только равенство.","enum":["EQ"]},"ContextCollectionCondition":{"type":"object","required":["type","operator"],"properties":{"type":{"$ref":"#/components/schemas/ContextCollectionConditionType"},"operator":{"$ref":"#/components/schemas/ContextCollectionConditionOperator"},"characteristic_slug":{"type":"string","description":"Слаг характеристики для сравнения. Обязателен, если type = `CHARACTERISTIC`.","example":"color"}}},"ContextCollection":{"type":"object","description":"Контекстная коллекция — набор условий для подбора похожих товаров.","required":["id","title","comment","conditions","default_sort","created_at","updated_at"],"properties":{"id":{"$ref":"#/components/schemas/ContextCollectionID"},"title":{"type":"string","description":"Название контекстной коллекции.","example":"Похожие по цвету"},"comment":{"type":"string","description":"Внутренний комментарий.","example":"Показывает товары того же цвета"},"conditions":{"type":"array","minItems":1,"description":"Список условий подбора.","items":{"$ref":"#/components/schemas/ContextCollectionCondition"}},"default_sort":{"$ref":"#/components/schemas/ContextCollectionDefaultSort"},"created_at":{"type":"string","format":"date-time","description":"Дата создания контекстной коллекции.","example":"2020-01-01T00:00:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата последнего обновления контекстной коллекции.","example":"2020-01-01T00:00:00Z"}}},"CreateContextCollectionRequest":{"type":"object","required":["title","conditions"],"properties":{"title":{"type":"string","maxLength":2000,"minLength":1,"description":"Название контекстной коллекции.","example":"Похожие по цвету"},"comment":{"type":"string","maxLength":5000,"description":"Внутренний комментарий.","example":"Показывает товары того же цвета"},"conditions":{"type":"array","minItems":1,"description":"Список условий подбора.","items":{"$ref":"#/components/schemas/ContextCollectionCondition"}},"default_sort":{"$ref":"#/components/schemas/ContextCollectionDefaultSort"}}},"ContextCollectionList":{"description":"Список контекстных коллекций.","type":"object","required":["context_collections","total_count"],"properties":{"context_collections":{"type":"array","items":{"$ref":"#/components/schemas/ContextCollection"}},"total_count":{"type":"integer","format":"uint64","description":"Общее количество контекстных коллекций.","example":100}}},"UpdateContextCollectionRequest":{"type":"object","description":"Поля для обновления контекстной коллекции. Передаются только изменяемые поля.","properties":{"title":{"type":"string","maxLength":2000,"minLength":1,"description":"Название контекстной коллекции.","example":"Похожие по цвету"},"comment":{"type":"string","maxLength":5000,"description":"Внутренний комментарий.","example":"Показывает товары того же цвета"},"conditions":{"type":"array","minItems":1,"description":"Список условий подбора.","items":{"$ref":"#/components/schemas/ContextCollectionCondition"}},"default_sort":{"$ref":"#/components/schemas/ContextCollectionDefaultSort"}}},"PromocodeDates":{"type":"object","required":["start_date"],"properties":{"start_date":{"type":"string","format":"date-time","description":"Дата начала действия промокода."},"end_date":{"type":"string","format":"date-time","description":"Дата окончания действия промокода. Если не указана, то промокод действует бесконечно."}}},"PromocodeID":{"type":"string","format":"uuid","description":"Идентификатор промокода.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"PromocodeBindingMode":{"type":"string","description":"Режим применения промокода. Применим только для промокодов типа `PRODUCTS`:\n- `ALL_VARIANTS` — промокод применяется ко всем товарам магазина.\n- `SELECTED_VARIANTS` — промокод применяется к выбранным товарам.\n- `SELECTED_CATEGORIES_COLLECTIONS` — промокод применяется к товарам из выбранных категорий и коллекций.","enum":["ALL_VARIANTS","SELECTED_VARIANTS","SELECTED_CATEGORIES_COLLECTIONS"]},"PromocodeStatus":{"type":"string","description":"Статус промокода:\n- `ACTIVE` — активный.\n- `INACTIVE` — неактивный.","enum":["ACTIVE","INACTIVE"]},"PromocodeType":{"type":"string","description":"Тип промокода:\n- `ORDER` — промокод на заказ.\n- `PRODUCTS` — промокод на товары.","enum":["ORDER","PRODUCTS"]},"Promocode":{"type":"object","required":["id","code","title","discount_value","first_order_only","one_time_use","promocode_dates","status","created_at","updated_at","usage_count","type"],"properties":{"id":{"$ref":"#/components/schemas/PromocodeID"},"code":{"type":"string","description":"Код промокода.","example":"HELLO5"},"title":{"type":"string","description":"Название промокода.","example":"Скидка 5% на все товары"},"discount_value":{"$ref":"#/components/schemas/DiscountValue"},"minimum_order_amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Минимальная сумма заказа для использования промокода.","example":"1000.00"},"max_usage":{"type":"integer","description":"Максимальное количество использований промокода.","example":100},"max_discount_amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Максимальная сумма скидки по промокоду.","example":1000},"one_time_use":{"type":"boolean","description":"Можно ли использовать промокод только один раз.","example":true},"first_order_only":{"type":"boolean","description":"Можно ли использовать промокод только для первого заказа.","example":true},"promocode_dates":{"$ref":"#/components/schemas/PromocodeDates"},"binding_mode":{"$ref":"#/components/schemas/PromocodeBindingMode"},"status":{"$ref":"#/components/schemas/PromocodeStatus"},"usage_count":{"type":"integer","description":"Количество использований промокода.","example":100},"created_at":{"type":"string","format":"date-time","description":"Дата создания промокода.","example":"2020-01-01T00:00:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата обновления промокода.","example":"2020-01-01T00:00:00Z"},"type":{"$ref":"#/components/schemas/PromocodeType"},"show_in_pdp":{"type":"boolean","description":"Показывать ли промокод на странице товара. Применим только для промокодов типа `PRODUCTS`.","example":true}}},"PromocodeCollection":{"type":"object","required":["promocodes","total_count"],"properties":{"promocodes":{"type":"array","items":{"$ref":"#/components/schemas/Promocode"}},"total_count":{"type":"integer","description":"Общее количество промокодов.","format":"uint64","example":100}}},"SingleValueFilterOperator":{"type":"string","description":"Оператор фильтрации для одного значения:\n- `EQ` — равно.\n- `NE` — не равно.\n- `GT` — больше.\n- `LT` — меньше.\n- `GE` — больше или равно.\n- `LE` — меньше или равно.\n","enum":["EQ","NE","GT","LT","GE","LE"]},"MultiValueFilterOperator":{"type":"string","description":"Оператор фильтрации для нескольких значений:\n- `IN` — входит в массив.\n- `NOT_IN` — не входит в массив.\n","enum":["IN","NOT_IN"]},"ProductVariantSingleValueFilter":{"type":"object","required":["field","operator"],"properties":{"field":{"type":"string","example":"price","description":"Поле для фильтрации.\n"},"operator":{"$ref":"#/components/schemas/SingleValueFilterOperator"},"value":{"type":"string"}}},"ProductVariantMultiValueFilter":{"type":"object","required":["field","operator","values"],"properties":{"field":{"type":"string"},"operator":{"$ref":"#/components/schemas/MultiValueFilterOperator"},"values":{"type":"array","description":"Массив значений для фильтрации.","items":{"type":"string"},"minItems":1}}},"ProductVariantRequestFilter":{"oneOf":[{"$ref":"#/components/schemas/ProductVariantSingleValueFilter"},{"$ref":"#/components/schemas/ProductVariantMultiValueFilter"}]},"DynamicCollectionFilter":{"type":"object","description":"Конфигурация фильтра для динамических коллекций. Задает критерии автоматического\nнаполнения коллекции товарами, удовлетворяющими указанным условиям.\n\n**Использование:**\n- Обязателен для динамических коллекций.\n- Запрещен для статических коллекций.\n- Несколько фильтров объединяются по логике AND.\n- URL идендификаторы категорий ограничивают выборку товарами из заданных категорий.\n- В `main_filter` допустим только перечень полей `field`, указанный в описании этого поля.\n- В `characteristic_filters` поле `field` — URL идентификатор характеристики (правила значений и операторов см. в описании `characteristic_filters`).\n","properties":{"category_slugs":{"type":"array","description":"Массив URL идентификаторов категорий для фильтрации товаров. Товар должен принадлежать\nхотя бы одной из этих категорий, чтобы попасть в коллекцию.\n### Пример: [\"vsye-dlya-sna\", \"smartphones\", \"accessories\"]\n","items":{"type":"string","example":"vsye-dlya-sna"}},"main_filter":{"type":"array","description":"Массив дополнительных условий фильтрации (в JSON — **массив** объектов `[{...}, ...]`, не один объект).\nВсе условия должны выполняться одновременно, чтобы товар попал в коллекцию (логика AND).\n\nДопустимые значения `field` (остальные поля в `main_filter` не поддерживаются):\n- `total_quantity` — общее количество на складе (одно целочисленное значение в `value`).\n- `price` — цена до скидки (одно целочисленное значение в `value`).\n- `manual_discount_price` — цена с ручной скидкой (одно целочисленное значение в `value`).\n- `promotion_price` — цена по акции (одно целочисленное значение в `value`).\n- `final_price` — финальная цена (одно целочисленное значение в `value`).\n- `sort_weight` — приоритет в каталоге (одно целочисленное значение в `value`).\n- `vat` — НДС (одно или несколько целочисленных значений в `values`).\n- `badge_slugs` — URL идентификаторы бейджей (строки в `values`).\n- `has_characteristics` — наличие характеристик (URL идентификаторы характеристик в `value` или `values`).\n\nОператоры — см. схемы SingleValueFilterOperator и MultiValueFilterOperator.\n### Пример:\n- field: \"final_price\"\n  operator: \"LT\"\n  value: \"1000\"\n- field: \"badge_slugs\"\n  operator: \"IN\"\n  values: [\"sale\", \"discount\"]\n","items":{"$ref":"#/components/schemas/ProductVariantRequestFilter"}},"characteristic_filters":{"type":"array","description":"В `field` указывается **URL идентификатор характеристики**.\nВсе условия объединяются по логике AND.\n\n**Числовая характеристика:** укажите одно число в `value` (строкой, например, `\"42.5\"`).\nДоступные операторы: `EQ`, `NE`, `GE`, `GT`, `LT`, `LE` (равно, не равно, больше или равно,\nбольше, меньше, меньше или равно).\n\n**Строковая характеристика:** укажите одно или несколько значений в `values`.\nДоступны только операторы  `IN` и `NOT_IN` (входит в массив / не входит в массив ни одному из перечисленных).\n\nПоля `value` и `values` взаимоисключающие: для числовой характеристики заполняется `value`,\nдля строковой — `values`.\n\nИдентификаторы полей основного фильтра (`price`, `weight`, `brand` и другие поля из `main_filter`)\nв `characteristic_filters` не принимаются — такие условия передавайте в `main_filter`.\n\n### Пример (строковая характеристика):\n- field: \"tsvet\"\n  operator: \"IN\"\n  values: [\"red\", \"blue\"]\n### Пример (числовая характеристика):\n- field: \"ves-kg\"\n  operator: \"LE\"\n  value: \"10\"\n","items":{"$ref":"#/components/schemas/ProductVariantRequestFilter"}}}},"CollectionSort":{"type":"string","description":"Сортировка карточек в коллекции:\n- `OLDEST` — старые.\n- `NEWEST` — новые.\n- `SORT_WEIGHT` — приоритет в каталоге.\n- `CHEAPEST` — дешевые.\n- `EXPENSIVE` — дорогие.\n- `MANUAL` — ручная сортировка.","enum":["OLDEST","NEWEST","SORT_WEIGHT","CHEAPEST","EXPENSIVE","MANUAL"]},"CollectionID":{"type":"string","format":"uuid","description":"Идентификатор коллекции.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"CollectionStatus":{"type":"string","description":"Статус коллекции:\n- `ACTIVE` — активна, отображается в каталоге.\n- `INACTIVE` — неактивна, не отображается в каталоге.","enum":["ACTIVE","INACTIVE"]},"CollectionType":{"type":"string","description":"Тип коллекции:\n- `STATIC` — статическая коллекция. Контент заполняется вручную.\n- `DYNAMIC` — динамическая коллекция. Контент заполняется автоматически на основе фильтров.","enum":["STATIC","DYNAMIC"]},"Collection":{"type":"object","required":["id","title","description","seo_title","seo_h1","seo_description","is_available_in_ad_feed","slug","status","created_at","updated_at","cards_count","hidden_cards_count","collection_type","collection_sort","is_automatic"],"properties":{"id":{"$ref":"#/components/schemas/CollectionID"},"title":{"type":"string","description":"Название коллекции.","example":"Коллекция 1"},"description":{"type":"string","description":"Описание коллекции.","example":"Коллекция 1"},"seo_title":{"type":"string","description":"SEO заголовок коллекции.","example":"Коллекция 1"},"seo_h1":{"type":"string","description":"SEO H1 коллекции."},"seo_description":{"type":"string","description":"SEO описание коллекции.","example":"Коллекция 1"},"is_available_in_ad_feed":{"type":"boolean","description":"Доступна ли коллекция в рекламном фиде.","example":true},"slug":{"type":"string","description":"URL идентификатор коллекции.","example":"kollektsiya-1"},"status":{"$ref":"#/components/schemas/CollectionStatus"},"collection_type":{"$ref":"#/components/schemas/CollectionType"},"dynamic_filter":{"$ref":"#/components/schemas/DynamicCollectionFilter"},"created_at":{"type":"string","format":"date-time","description":"Дата создания коллекции.","example":"2020-01-01T00:00:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата обновления коллекции.","example":"2020-01-01T00:00:00Z"},"cards_count":{"type":"integer","example":10,"description":"Общее количество карточек в коллекции."},"hidden_cards_count":{"type":"integer","description":"Количество скрытых карточек в коллекции.","example":10},"image_path":{"type":"string","description":"Путь к изображению коллекции.","example":"https://example.com/kollektsiya-1.jpg"},"collection_sort":{"$ref":"#/components/schemas/CollectionSort"},"is_automatic":{"type":"boolean","description":"Автоматическая коллекция. Создается и наполняется автоматически, ее нельзя изменить или удалить.","example":false}}},"CollectionList":{"type":"object","required":["collections","total_count"],"properties":{"collections":{"type":"array","items":{"$ref":"#/components/schemas/Collection"}},"total_count":{"type":"integer","format":"uint64","description":"Общее количество коллекций.","example":100}}},"CollectionIDCollection":{"type":"object","required":["collection_ids","total_count"],"properties":{"collection_ids":{"type":"array","items":{"$ref":"#/components/schemas/CollectionID"}},"total_count":{"type":"integer","format":"uint64","description":"Общее количество идентификаторов коллекций.","example":100}}},"UpdateCollectionRequest":{"type":"object","properties":{"title":{"type":"string","example":"Коллекция 1","description":"Название коллекции."},"slug":{"type":"string","example":"kollektsiya-1","description":"URL идентификатор коллекции."},"status":{"$ref":"#/components/schemas/CollectionStatus"},"description":{"type":"string","example":"Коллекция 1","description":"Описание коллекции."},"seo_title":{"type":"string","example":"Коллекция 1","description":"SEO заголовок коллекции."},"seo_h1":{"type":"string","example":"Коллекция 1","description":"SEO H1 коллекции."},"seo_description":{"type":"string","example":"Коллекция 1","description":"SEO описание коллекции."},"is_available_in_ad_feed":{"type":"boolean","example":true,"description":"Доступна ли коллекция в рекламном фиде."},"dynamic_filter":{"$ref":"#/components/schemas/DynamicCollectionFilter"},"file_id":{"type":"string","format":"uuid","description":"ID файла изображения коллекции.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"collection_sort":{"$ref":"#/components/schemas/CollectionSort"}}},"CreateCollectionRequest":{"type":"object","required":["title","status","collection_type"],"properties":{"title":{"type":"string","description":"Название коллекции.","example":"Коллекция 1"},"slug":{"type":"string","description":"URL идентификатор коллекции.","example":"kollektsiya-1"},"status":{"$ref":"#/components/schemas/CollectionStatus"},"description":{"type":"string","description":"Описание коллекции.","example":"Коллекция 1"},"seo_title":{"type":"string","description":"SEO заголовок коллекции.","example":"Коллекция 1"},"seo_h1":{"type":"string","description":"SEO H1 коллекции.","example":"Коллекция 1"},"seo_description":{"type":"string","description":"SEO описание коллекции.","example":"Коллекция 1"},"is_available_in_ad_feed":{"type":"boolean","description":"Доступна ли коллекция в рекламном фиде.","example":true},"collection_type":{"$ref":"#/components/schemas/CollectionType"},"dynamic_filter":{"$ref":"#/components/schemas/DynamicCollectionFilter"},"file_id":{"type":"string","format":"uuid","description":"ID файла изображения коллекции.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"collection_sort":{"$ref":"#/components/schemas/CollectionSort"}}},"AddCardsToStaticCollectionRequest":{"type":"object","required":["product_card_ids"],"properties":{"product_card_ids":{"type":"array","maxItems":100,"items":{"type":"string","format":"uuid"},"description":"IDs карточек для добавления в коллекцию.","example":["019b21d9-c5d9-777d-80bd-d67c664bc6d9","019b21d9-c5d9-777d-80bd-d67c664bc6d9"]}}},"RemoveCardsFromStaticCollectionRequest":{"type":"object","required":["product_card_ids"],"properties":{"product_card_ids":{"type":"array","maxItems":100,"items":{"type":"string","format":"uuid"},"description":"IDs карточек для удаления из коллекции.","example":["019b21d9-c5d9-777d-80bd-d67c664bc6d9","019b21d9-c5d9-777d-80bd-d67c664bc6d9"]}}},"CollectionCardsManualOrder":{"type":"object","required":["product_card_ids","total_count"],"properties":{"product_card_ids":{"type":"array","items":{"type":"string","format":"uuid"},"description":"Список ID карточек статической коллекции в порядке ручной сортировки.","example":["019b21d9-c5d9-777d-80bd-d67c664bc6d9","019b21d9-c5d9-777d-80bd-d67c664bc6d8"]},"total_count":{"type":"integer","format":"uint64","minimum":0,"description":"Общее количество карточек в коллекции.","example":2}}},"MoveCollectionCardsRequest":{"type":"object","required":["card_ids","position"],"properties":{"card_ids":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","format":"uuid"},"description":"Список ID карточек, принадлежащих коллекции, которые будут последовательно вставлены на указанную позицию.","example":["019b21d9-c5d9-777d-80bd-d67c664bc6d9","019b21d9-c5d9-777d-80bd-d67c664bc6d8"]},"position":{"type":"integer","format":"uint64","minimum":1,"example":1}}},"UpdatePromocodeRequest":{"type":"object","properties":{"code":{"type":"string","description":"Код промокода.","example":"HELLO5"},"title":{"type":"string","description":"Название промокода.","example":"Скидка 5% на все товары"},"discount_value":{"$ref":"#/components/schemas/DiscountValue"},"promocode_dates":{"$ref":"#/components/schemas/PromocodeDates"},"status":{"$ref":"#/components/schemas/PromocodeStatus"},"binding_mode":{"$ref":"#/components/schemas/PromocodeBindingMode"},"minimum_order_amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Минимальная сумма заказа для использования промокода.","example":"1000.00","default":"0.00"},"max_usage":{"type":"integer","description":"Максимальное количество использований промокода (поле опционально).\nНе передавайте ключ, чтобы не менять значение (`null` — без ограничения на количество использований).","example":100,"nullable":true},"max_discount_amount":{"type":"string","format":"decimal","nullable":true,"x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Максимальная сумма скидки по промокоду (поле опционально).\nНе передавайте ключ, чтобы не менять значение (`null` — без ограничения на сумму скидки).","example":1000},"one_time_use":{"type":"boolean","description":"Можно ли использовать промокод только один раз.","example":true,"default":false},"first_order_only":{"type":"boolean","description":"Можно ли использовать промокод только для первого заказа.","example":true,"default":false},"show_in_pdp":{"type":"boolean","description":"Показывать ли промокод на странице товара.","example":true,"default":false}}},"CreatePromocodeRequest":{"type":"object","required":["code","title","discount_value","promocode_dates","type"],"properties":{"code":{"type":"string","description":"Код промокода.","example":"HELLO5"},"title":{"type":"string","description":"Название промокода.","example":"Скидка 5% на все товары"},"discount_value":{"$ref":"#/components/schemas/DiscountValue"},"promocode_dates":{"$ref":"#/components/schemas/PromocodeDates"},"binding_mode":{"$ref":"#/components/schemas/PromocodeBindingMode"},"type":{"$ref":"#/components/schemas/PromocodeType"},"minimum_order_amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Минимальная сумма заказа для использования промокода.","example":"1000.00","default":"0.00"},"max_usage":{"type":"integer","description":"Максимальное количество использований промокода. Чтобы не ограничивать количество использований, не передавайте это поле.","example":100},"max_discount_amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Максимальная сумма скидки по промокоду. Чтобы не ограничивать сумму скидки, не передавайте это поле.","example":1000},"one_time_use":{"type":"boolean","description":"Можно ли использовать промокод только один раз.","example":true,"default":false},"first_order_only":{"type":"boolean","description":"Можно ли использовать промокод только для первого заказа.","example":true,"default":false},"show_in_pdp":{"type":"boolean","description":"Показывать ли промокод на странице товара. Применим только для промокодов типа `PRODUCTS`.","example":true,"default":false}}},"PromocodeGroupID":{"type":"string","format":"uuid","description":"Уникальный идентификатор группы промокодов.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"PromocodeGroupCodeID":{"type":"string","format":"uuid","description":"Уникальный идентификатор кода промокода.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d0"},"PromocodeGroupStatus":{"type":"string","description":"Статус группы промокодов:\n- `ACTIVE` — группа активна, коды применяются при оформлении заказа.\n- `INACTIVE` — группа неактивна, коды не применяются.","enum":["ACTIVE","INACTIVE"]},"PromocodeGroupType":{"type":"string","description":"Тип группы промокодов:\n- `SINGLE` — группа с одним кодом (традиционный промокод), один код на всех покупателей.\n- `MULTIPLE` — группа с набором кодов (каждый код предназначен для одного использования — купоны).","enum":["SINGLE","MULTIPLE"]},"PromocodeGroupPromocodeType":{"type":"string","description":"Тип промокода — к чему применяется скидка:\n- `ORDER` — скидка на всю сумму заказа.\n- `PRODUCTS` — скидка на конкретные товары (или все товары, в зависимости от `binding_mode`).","enum":["ORDER","PRODUCTS"]},"PromocodeGroupBindingMode":{"type":"string","description":"Режим применения скидки к товарам. Учитывается только для промокодов типа `PRODUCTS`:\n- `ALL_VARIANTS` — скидка применяется ко всем товарам магазина.\n- `SELECTED_VARIANTS` — скидка применяется к выбранным товарам.\n- `SELECTED_CATEGORIES_COLLECTIONS` — скидка применяется к товарам из выбранных категорий и коллекций.","enum":["ALL_VARIANTS","SELECTED_VARIANTS","SELECTED_CATEGORIES_COLLECTIONS"]},"PromocodeGroup":{"type":"object","description":"Группа промокодов с правилами применения скидки и агрегированной статистикой.","required":["id","title","discount_value","one_time_use","first_order_only","valid_from","status","type","group_type","binding_mode","show_in_pdp","usage_count","code_count","created_at","updated_at"],"properties":{"id":{"$ref":"#/components/schemas/PromocodeGroupID"},"title":{"type":"string","maxLength":100,"description":"Название группы промокодов.","example":"Скидка для новых клиентов"},"discount_value":{"$ref":"#/components/schemas/DiscountValue"},"minimum_order_amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Минимальная сумма заказа для применения промокода. Если не указана — ограничений нет.","example":"1000.00"},"max_usage":{"type":"integer","format":"uint64","description":"Максимальное суммарное количество использований кодов группы. Если не указано — ограничений нет.","minimum":1,"example":1000},"max_discount_amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Максимальная сумма скидки за одно применение промокода. Если не указана — ограничений нет.","example":"500.00"},"one_time_use":{"type":"boolean","description":"Ограничение одноразового использования — каждый код может быть использован не более одного раза.","example":true},"first_order_only":{"type":"boolean","description":"Промокод применяется только к первому заказу покупателя.","example":false},"valid_from":{"type":"string","format":"date-time","description":"Дата и время начала действия промокодов группы (RFC 3339).","example":"2024-01-01T00:00:00Z"},"valid_until":{"type":"string","format":"date-time","description":"Дата и время окончания действия промокодов группы (RFC 3339). Если не указана — промокоды действуют бессрочно.","example":"2024-12-31T23:59:59Z"},"binding_mode":{"$ref":"#/components/schemas/PromocodeGroupBindingMode"},"type":{"$ref":"#/components/schemas/PromocodeGroupPromocodeType"},"group_type":{"$ref":"#/components/schemas/PromocodeGroupType"},"show_in_pdp":{"type":"boolean","description":"Показывать ли промокоды группы на странице товара. Применимо только для промокодов типа `PRODUCTS`.","example":false},"status":{"$ref":"#/components/schemas/PromocodeGroupStatus"},"usage_count":{"type":"integer","format":"uint64","description":"Суммарное количество использований всех кодов группы.","example":42},"code_count":{"type":"integer","format":"uint64","description":"Количество кодов в группе.","example":100},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания группы (RFC 3339).","example":"2024-01-01T00:00:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего обновления группы (RFC 3339).","example":"2024-06-01T12:00:00Z"}}},"PromocodeGroupCollection":{"type":"object","required":["promocode_groups","total_count"],"properties":{"promocode_groups":{"type":"array","description":"Список групп промокодов.","items":{"$ref":"#/components/schemas/PromocodeGroup"}},"total_count":{"type":"integer","format":"uint64","description":"Общее количество групп промокодов (без учета пагинации).","example":50}}},"CreatePromocodeGroupRequest":{"type":"object","description":"Запрос на создание группы промокодов.\n\nОперация выполняется за один шаг: если создание группы или добавление кодов завершается ошибкой — изменения не применяются.\n\nПоле `codes` обязательно и должно содержать хотя бы один код.","required":["title","discount_value","one_time_use","first_order_only","valid_from","type","group_type","binding_mode","show_in_pdp","codes"],"properties":{"title":{"type":"string","maxLength":100,"description":"Название группы промокодов.","example":"Скидка для новых клиентов"},"discount_value":{"$ref":"#/components/schemas/DiscountValue"},"minimum_order_amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Минимальная сумма заказа для применения промокода. Не передавайте поле, чтобы не устанавливать ограничение.","example":"1000.00"},"max_usage":{"type":"integer","format":"uint64","description":"Максимальное суммарное количество использований кодов группы. Не передавайте поле, чтобы не ограничивать.","minimum":1,"example":1000},"max_discount_amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Максимальная сумма скидки за одно применение. Не передавайте поле, чтобы не ограничивать.","example":"500.00"},"one_time_use":{"type":"boolean","description":"Ограничение одноразового использования — каждый код может быть использован не более одного раза.","example":true,"default":false},"first_order_only":{"type":"boolean","description":"Промокод применяется только к первому заказу покупателя.","example":false,"default":false},"valid_from":{"type":"string","format":"date-time","description":"Дата и время начала действия промокодов группы (RFC 3339).","example":"2024-01-01T00:00:00Z"},"valid_until":{"type":"string","format":"date-time","description":"Дата и время окончания действия промокодов группы (RFC 3339). Не передавайте поле для бессрочного действия.","example":"2024-12-31T23:59:59Z"},"binding_mode":{"$ref":"#/components/schemas/PromocodeGroupBindingMode"},"type":{"$ref":"#/components/schemas/PromocodeGroupPromocodeType"},"group_type":{"$ref":"#/components/schemas/PromocodeGroupType"},"show_in_pdp":{"type":"boolean","description":"Показывать ли промокоды группы на странице товара. Применимо только для промокодов типа `PRODUCTS`.","example":false,"default":false},"codes":{"type":"array","description":"Список кодов промокодов. Должен содержать хотя бы один код.\nКаждый код — уникальная строка длиной от 3 до 20 символов (заглавные латинские буквы, цифры и спецсимволы `!@#$%^&*()_-=+`).","minItems":1,"items":{"type":"string","pattern":"^[A-ZА-ЯЁ0-9!@#$%^&*()_\\-=+]{3,20}$","example":"WELCOME10"}}}},"PromocodeGroupCode":{"type":"object","description":"Код промокода внутри группы.","required":["id","code","usage_count","created_at","updated_at"],"properties":{"id":{"$ref":"#/components/schemas/PromocodeGroupCodeID"},"code":{"type":"string","description":"Строковое значение кода промокода.","example":"WELCOME10"},"usage_count":{"type":"integer","format":"uint64","description":"Количество использований данного кода.","example":3},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания кода (RFC 3339).","example":"2024-01-01T00:00:00Z"},"updated_at":{"type":"string","format":"date-time","description":"Дата и время последнего изменения кода (RFC 3339).","example":"2024-06-01T12:00:00Z"}}},"PromocodeGroupCodeCollection":{"type":"object","required":["codes","total_count"],"properties":{"codes":{"type":"array","description":"Список кодов промокодов в группе.","items":{"$ref":"#/components/schemas/PromocodeGroupCode"}},"total_count":{"type":"integer","format":"uint64","description":"Общее количество кодов в группе (без учета пагинации).","example":500}}},"AddPromocodeGroupCodeRequest":{"type":"object","description":"Запрос на добавление кода в группу промокодов.","required":["code"],"properties":{"code":{"type":"string","description":"Уникальный код промокода. Длина от 3 до 20 символов.\nДопустимые символы:\n- заглавные латинские буквы;\n- цифры;\n- `!@#$%^&*()_-=+`.","pattern":"^[A-ZА-ЯЁ0-9!@#$%^&*()_\\-=+]{3,20}$","example":"SUMMER20"}}},"UpdatePromocodeGroupCodeRequest":{"type":"object","description":"Запрос на изменение строкового значения кода промокода.","required":["code"],"properties":{"code":{"type":"string","description":"Новое значение кода. Длина от 3 до 20 символов.\nДопустимые символы:\n- заглавные латинские буквы;\n- цифры;\n- `!@#$%^&*()_-=+`.","pattern":"^[A-ZА-ЯЁ0-9!@#$%^&*()_\\-=+]{3,20}$","example":"SUMMER25"}}},"UpdatePromocodeGroupRequest":{"type":"object","description":"Запрос на обновление группы промокодов. Все поля обязательны — передайте текущие значения для полей, которые не изменяются.\n\nПривязку объектов (товаров, категорий, коллекций) выполняйте через отдельные методы\n`POST /v1/promocode_groups/{id}/objects/add` и `POST /v1/promocode_groups/{id}/objects/remove`.","required":["title","discount_value","one_time_use","first_order_only","valid_from","type","group_type","binding_mode","show_in_pdp"],"properties":{"title":{"type":"string","maxLength":100,"description":"Название группы промокодов.","example":"Скидка для новых клиентов"},"discount_value":{"$ref":"#/components/schemas/DiscountValue"},"minimum_order_amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Минимальная сумма заказа для применения промокода. Не передавайте поле, чтобы снять ограничение.","example":"1000.00"},"max_usage":{"type":"integer","format":"uint64","description":"Максимальное суммарное количество использований кодов группы. Не передавайте поле, чтобы снять ограничение.","minimum":1,"example":1000},"max_discount_amount":{"type":"string","format":"decimal","x-go-type":"decimal.Decimal","x-go-type-import":{"path":"github.com/shopspring/decimal"},"description":"Максимальная сумма скидки за одно применение. Не передавайте поле, чтобы снять ограничение.","example":"500.00"},"one_time_use":{"type":"boolean","description":"Ограничение одноразового использования — каждый код может быть использован не более одного раза.","example":true},"first_order_only":{"type":"boolean","description":"Промокод применяется только к первому заказу покупателя.","example":false},"valid_from":{"type":"string","format":"date-time","description":"Дата и время начала действия промокодов группы (RFC 3339).","example":"2024-01-01T00:00:00Z"},"valid_until":{"type":"string","format":"date-time","description":"Дата и время окончания действия промокодов группы (RFC 3339). Не передавайте поле для бессрочного действия.","example":"2024-12-31T23:59:59Z"},"binding_mode":{"$ref":"#/components/schemas/PromocodeGroupBindingMode"},"type":{"$ref":"#/components/schemas/PromocodeGroupPromocodeType"},"group_type":{"$ref":"#/components/schemas/PromocodeGroupType"},"show_in_pdp":{"type":"boolean","description":"Показывать ли промокоды группы на странице товара. Применимо только для промокодов типа `PRODUCTS`.","example":false}}},"PromocodeGroupObjects":{"type":"object","description":"Объекты, привязываемые к группе промокодов:\n- `product_variant_ids` — для привязки конкретных товаров.\n- `category_ids` — для привязки категорий.\n- `collection_ids` — для привязки коллекций.\n\nВ одном запросе передавайте либо товары, либо категории и коллекции — не одновременно.","properties":{"product_variant_ids":{"type":"array","description":"Идентификаторы товаров.","items":{"$ref":"#/components/schemas/VariantID"}},"category_ids":{"type":"array","description":"Идентификаторы категорий.","items":{"$ref":"#/components/schemas/CategoryID"}},"collection_ids":{"type":"array","description":"Идентификаторы коллекций.","items":{"$ref":"#/components/schemas/CollectionID"}}}},"WebhookEventTypes":{"type":"string","description":"Тип события:\n- `ORDER_STATUS_CHANGED` — изменился статус заказа.\n- `ORDER_PAYMENT_STATUS_CHANGED` — изменился статус оплаты заказа.\n- `ORDER_DELIVERY_STATUS_CHANGED` — изменился статус доставки заказа.\n- `CUSTOMER_CHANGED` — изменились данные клиента.\n- `CART_UPDATED` — изменилась корзина клиента (события по одной корзине схлопываются).","enum":["ORDER_STATUS_CHANGED","ORDER_PAYMENT_STATUS_CHANGED","ORDER_DELIVERY_STATUS_CHANGED","CUSTOMER_CHANGED","CART_UPDATED"]},"CreateWebhookRequest":{"type":"object","required":["url","events"],"properties":{"url":{"type":"string","description":"URL вебхука. Поддерживается только HTTPS протокол.","example":"https://example.com/webhook"},"events":{"type":"array","description":"Список типов событий, на которые подписывается вебхук.","items":{"$ref":"#/components/schemas/WebhookEventTypes"}}}},"UpdateWebhookRequest":{"type":"object","properties":{"url":{"type":"string","description":"URL вебхука. Поддерживается только HTTPS протокол.","example":"https://example.com/webhook"},"events":{"type":"array","description":"Список типов событий, на которые подписывается вебхук.","items":{"$ref":"#/components/schemas/WebhookEventTypes"}},"deactivate":{"type":"boolean","description":"Деактивировать вебхук, переведя его в статус `INACTIVE`.","example":true}}},"WebhookID":{"type":"string","format":"uuid","description":"ID вебхука.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"WebhookStatus":{"type":"string","description":"Статус вебхука:\n- `ACTIVE` — активный.\n- `INACTIVE` — неактивный.","enum":["ACTIVE","INACTIVE"]},"Webhook":{"type":"object","required":["id","url","events","status"],"properties":{"id":{"$ref":"#/components/schemas/WebhookID"},"url":{"type":"string","description":"URL вебхука.","example":"https://example.com/webhook"},"events":{"type":"array","description":"Список типов событий, на которые подписан вебхук.","items":{"$ref":"#/components/schemas/WebhookEventTypes"}},"status":{"$ref":"#/components/schemas/WebhookStatus"}}},"WebhookWithSecret":{"allOf":[{"$ref":"#/components/schemas/Webhook"},{"type":"object","required":["secret"],"properties":{"secret":{"type":"string","description":"Секретный ключ для верификации подлинности входящих запросов от вебхука.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"}}}]},"WebhookCollection":{"type":"object","required":["webhooks","total_count"],"properties":{"webhooks":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}},"total_count":{"type":"integer","description":"Общее количество вебхуков.","format":"uint64","example":100}}},"BadgeID":{"type":"string","format":"uuid","description":"ID бейджа.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"Badge":{"type":"object","required":["id","slug","label","color","caption","tooltip","priority","is_system","status","is_objects_locked","is_label_locked","binding_mode"],"properties":{"id":{"$ref":"#/components/schemas/BadgeID"},"slug":{"type":"string","description":"URL-идентификатор бейджа.","example":"sale"},"label":{"type":"string","description":"Название бейджа.","example":"Акция"},"color":{"type":"string","description":"Цвет бейджа в формате hex.","example":"#FFFFFFFF"},"caption":{"type":"string","description":"Описание системных бейджей в b2b кабинете. Нельзя выставить или обновить вручную.","example":"Отображается при наличии скидки"},"tooltip":{"type":"string","description":"Текст описания по клику.","example":"Отображается при наличии скидки"},"priority":{"type":"integer","format":"uint","description":"Приоритет бейджа.","example":1},"is_system":{"type":"boolean","description":"Является ли бейдж системным. Системные бейджи предсозданы и их нельзя обновлять.","example":true},"status":{"$ref":"#/components/schemas/BadgeStatus"},"is_objects_locked":{"type":"boolean","description":"Заблокировано ли изменение списка товаров, категорий и коллекций бейджа.","example":false},"is_label_locked":{"type":"boolean","description":"Заблокировано ли изменение названия бейджа.","example":false},"binding_mode":{"$ref":"#/components/schemas/BadgeBindingMode"}}},"BadgeStatus":{"type":"string","description":"Статус бейджа:\n- `ACTIVE` — активен, отображается на витрине.\n- `INACTIVE` — неактивен, не отображается на витрине.","enum":["ACTIVE","INACTIVE"],"x-enum-varnames":["BadgeStatusACTIVE","BadgeStatusINACTIVE"]},"BadgeCollection":{"type":"object","required":["badges","total_count"],"properties":{"badges":{"type":"array","items":{"$ref":"#/components/schemas/Badge"}},"total_count":{"type":"integer","description":"Общее количество бейджей.","format":"uint64","example":100}}},"BadgeBindingMode":{"type":"string","description":"Режим привязки бейджа:\n- `SELECTED_VARIANTS` — привязка к товарам.\n- `SELECTED_CATEGORIES_COLLECTIONS` — привязка к категориям и коллекциям.","enum":["SELECTED_VARIANTS","SELECTED_CATEGORIES_COLLECTIONS"]},"UpdateBadgeRequest":{"type":"object","properties":{"label":{"type":"string","minLength":1,"maxLength":16,"description":"Название бейджа.","example":"Новинка"},"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{8}$","description":"Цвет бейджа в формате hex.","example":"#FF0000FF"},"tooltip":{"type":"string","maxLength":140,"description":"Текст описания по клику.","example":"Отображается для новых товаров"},"binding_mode":{"$ref":"#/components/schemas/BadgeBindingMode"}}},"CreateBadgeRequest":{"type":"object","required":["label","color","tooltip","binding_mode"],"properties":{"label":{"type":"string","minLength":1,"maxLength":16,"description":"Название бейджа.","example":"Новинка"},"color":{"type":"string","pattern":"^#[0-9A-Fa-f]{8}$","description":"Цвет бейджа в формате hex.","example":"#FF0000FF"},"tooltip":{"type":"string","maxLength":140,"description":"Текст описания по клику.","example":"Отображается для новых товаров"},"binding_mode":{"$ref":"#/components/schemas/BadgeBindingMode"}}},"BadgeObjects":{"type":"object","description":"Объекты, привязываемые к бейджу:\n- `product_variant_ids` — для привязки конкретных товаров.\n- `category_ids` — для привязки категорий.\n- `collection_ids` — для привязки коллекций.\nВ одном запросе нужно передавать либо товары, либо категории и коллекции.","properties":{"product_variant_ids":{"type":"array","description":"Идентификаторы товаров.","items":{"type":"string","format":"uuid","description":"Идентификатор товара.","example":"00000000-0000-0000-0000-000000000001"}},"category_ids":{"type":"array","description":"Идентификаторы категорий.","items":{"type":"string","format":"uuid","description":"Идентификатор категории.","example":"00000000-0000-0000-0000-000000000001"}},"collection_ids":{"type":"array","description":"Идентификаторы коллекций.","items":{"type":"string","format":"uuid","description":"Идентификатор коллекции.","example":"00000000-0000-0000-0000-000000000001"}}}},"RegionNode":{"type":"object","required":["id","name","parent_id"],"properties":{"id":{"type":"integer","format":"int32","description":"Уникальный идентификатор региона.","example":225},"name":{"type":"string","description":"Название региона.","example":"Москва"},"parent_id":{"type":"integer","format":"int32","description":"Уникальный идентификатор родительского региона.\nЗначение **0** означает, что регион является корневым.","example":1}}},"RegionCollection":{"type":"object","required":["regions"],"properties":{"regions":{"type":"array","items":{"$ref":"#/components/schemas/RegionNode"}}}},"AddonID":{"type":"string","format":"uuid","description":"Идентификатор услуги.","example":"123e4567-e89b-12d3-a456-426614174000"},"AddonBindingMode":{"type":"string","description":"Режим привязки услуги:\n- `ALL_VARIANTS` — услуга доступна для всех товаров.\n- `SELECTED_VARIANTS` — услуга доступна для выбранных товаров.\n- `SELECTED_CATEGORIES_COLLECTIONS` — услуга доступна для товаров из выбранных категорий и коллекций.","enum":["ALL_VARIANTS","SELECTED_VARIANTS","SELECTED_CATEGORIES_COLLECTIONS"]},"AddonGeography":{"type":"object","description":"География доступности услуги.","required":["included_region_ids","excluded_region_ids"],"properties":{"included_region_ids":{"type":"array","items":{"type":"integer","format":"int32"},"minItems":1,"description":"Идентификаторы регионов, в которых услуга доступна.","example":[225,1]},"excluded_region_ids":{"type":"array","items":{"type":"integer","format":"int32"},"description":"Идентификаторы регионов, в которых услуга недоступна.","example":[213]}}},"AddonGeographyNullable":{"allOf":[{"$ref":"#/components/schemas/AddonGeography"}],"nullable":true},"AddonAttachment":{"type":"object","description":"Приложение к услуге.","required":["file_id","title","extension","display_sequence","public_path"],"properties":{"file_id":{"type":"string","format":"uuid","description":"Идентификатор файла."},"title":{"type":"string","description":"Название вложения.","example":"Инструкция по установке"},"display_sequence":{"type":"integer","format":"uint","description":"Порядок отображения.","example":1},"extension":{"type":"string","description":"Расширение файла.","example":"pdf"},"public_path":{"type":"string","description":"Публичный URL файла.","example":"https://storage.example.com/documents/instruction.pdf"}}},"AddonAttachmentCreateCommand":{"type":"object","required":["file_id","title","extension","display_sequence"],"properties":{"file_id":{"type":"string","format":"uuid","description":"Идентификатор файла."},"title":{"type":"string","description":"Название вложения.","example":"Инструкция по установке"},"display_sequence":{"type":"integer","format":"uint","description":"Порядок отображения.","example":1},"extension":{"type":"string","description":"Расширение файла.","example":"pdf"}}},"Addon":{"type":"object","required":["id","number","title","description","price","final_price","is_price_enabled","vat","binding_mode","attachments","geography","status","created_at"],"properties":{"id":{"$ref":"#/components/schemas/AddonID"},"number":{"type":"integer","format":"int64","description":"Уникальный числовой идентификатор услуги.","example":12345},"title":{"type":"string","description":"Название услуги.","example":"Установка и настройка"},"description":{"type":"string","description":"Описание услуги.","example":"Полная установка оборудования"},"price":{"type":"string","format":"decimal","description":"Цена до скидки.","example":"2000.00"},"final_price":{"type":"string","format":"decimal","description":"Цена со скидкой.","example":"1500.00"},"is_price_enabled":{"type":"boolean","description":"Отображать ли цену услуги.","example":false},"vat":{"type":"integer","description":"НДС в процентах. Специальное значение -1 означает, что товар не облагается НДС.","example":20},"binding_mode":{"$ref":"#/components/schemas/AddonBindingMode"},"attachments":{"type":"array","items":{"$ref":"#/components/schemas/AddonAttachment"},"description":"Вложения услуги."},"geography":{"$ref":"#/components/schemas/AddonGeography"},"created_at":{"type":"string","format":"date-time","description":"Дата создания.","example":"2023-01-15T10:30:00Z"}}},"AddonListItem":{"type":"object","required":["id","number","title","price","final_price","is_price_enabled","status","created_at"],"properties":{"id":{"$ref":"#/components/schemas/AddonID"},"number":{"type":"integer","format":"int64","description":"Числовой идентификатор услуги.","example":12345},"title":{"type":"string","description":"Название услуги.","example":"Доставка курьером"},"price":{"type":"string","format":"decimal","description":"Цена без скидки.","example":"500.00"},"final_price":{"type":"string","format":"decimal","description":"Цена со скидкой.","example":"450.00"},"is_price_enabled":{"type":"boolean","description":"Отображать ли цену услуги.","example":false},"created_at":{"type":"string","format":"date-time","description":"Дата создания.","example":"2023-01-15T10:30:00Z"}}},"AddonCollection":{"type":"object","required":["addons","total_count"],"properties":{"addons":{"type":"array","items":{"$ref":"#/components/schemas/AddonListItem"},"description":"Список услуг."},"total_count":{"type":"integer","format":"uint64","description":"Общее количество услуг.","example":42}}},"CreateAddonRequest":{"type":"object","required":["title","description","binding_mode","attachments","geography"],"properties":{"title":{"type":"string","minLength":1,"maxLength":255,"description":"Название услуги.","example":"Установка и настройка"},"description":{"type":"string","maxLength":5000,"description":"Описание услуги.","example":"Полная установка оборудования"},"price":{"type":"string","format":"decimal","description":"Цена без скидки.","example":"2000.00"},"final_price":{"type":"string","format":"decimal","description":"Цена со скидкой.","example":"1500.00"},"is_price_enabled":{"type":"boolean","default":false,"description":"Отображать ли цену услуги."},"vat":{"type":"integer","description":"НДС в процентах. Специальное значение -1 означает, что товар не облагается НДС.","example":20},"binding_mode":{"$ref":"#/components/schemas/AddonBindingMode"},"attachments":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/AddonAttachmentCreateCommand"},"description":"Вложения услуги."},"geography":{"$ref":"#/components/schemas/AddonGeography"}}},"UpdateAddonRequest":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":255,"description":"Название услуги.","example":"Установка и настройка"},"description":{"type":"string","maxLength":5000,"description":"Описание услуги.","example":"Полная установка оборудования"},"price":{"type":"string","format":"decimal","description":"Цена без скидки.","example":"2000.00"},"final_price":{"type":"string","format":"decimal","description":"Цена со скидкой.","example":"1500.00"},"is_price_enabled":{"type":"boolean","description":"Отображать ли цену услуги."},"vat":{"type":"integer","description":"НДС в процентах. Специальное значение -1 означает, что товар не облагается НДС.","example":20},"binding_mode":{"$ref":"#/components/schemas/AddonBindingMode"},"attachments":{"type":"array","maxItems":10,"items":{"$ref":"#/components/schemas/AddonAttachmentCreateCommand"},"description":"Вложения услуги."},"geography":{"$ref":"#/components/schemas/AddonGeographyNullable"}}},"AddonObjects":{"type":"object","description":"Объекты, привязываемые к услуге:\n- `product_variant_ids` — для привязки конкретных товаров.\n- `category_ids` — для привязки категорий.\n- `collection_ids` — для привязки коллекций.\nВ одном запросе нужно передавать либо товары, либо категории и коллекции.","properties":{"product_variant_ids":{"type":"array","description":"Идентификаторы товаров.","items":{"type":"string","format":"uuid","description":"Идентификатор товара.","example":"00000000-0000-0000-0000-000000000001"}},"category_ids":{"type":"array","description":"Идентификаторы категорий.","items":{"type":"string","format":"uuid","description":"Идентификатор категории.","example":"00000000-0000-0000-0000-000000000001"}},"collection_ids":{"type":"array","description":"Идентификаторы коллекций.","items":{"type":"string","format":"uuid","description":"Идентификатор коллекции.","example":"00000000-0000-0000-0000-000000000001"}}}},"SimilarCardBindingMode":{"type":"string","description":"Режим подбора дополнительных товаров:\n- `ALL_VARIANTS` — дополнительные товары подбираются из всех товаров магазина.\n- `SELECTED_CARDS` — дополнительные товары подбираются из выбранных карточек товара.\n- `SELECTED_CATEGORIES_COLLECTIONS` — дополнительные товары подбираются из выбранных категорий и коллекций.","enum":["ALL_VARIANTS","SELECTED_CARDS","SELECTED_CATEGORIES_COLLECTIONS"]},"SimilarCards":{"type":"object","required":["product_card_id","binding_mode"],"properties":{"product_card_id":{"$ref":"#/components/schemas/ProductCardID"},"binding_mode":{"$ref":"#/components/schemas/SimilarCardBindingMode"}}},"CreateSimilarCardsRequest":{"type":"object","required":["binding_mode"],"properties":{"binding_mode":{"$ref":"#/components/schemas/SimilarCardBindingMode"}}},"UpdateSimilarCardsRequest":{"type":"object","required":["binding_mode"],"properties":{"binding_mode":{"$ref":"#/components/schemas/SimilarCardBindingMode"}}},"SimilarCardObjects":{"type":"object","description":"Объекты, привязываемые к настройкам дополнительных товаров:\n- `product_card_ids` — для привязки конкретных карточек.\n- `category_ids` — для привязки категорий.\n- `collection_ids` — для привязки коллекций.\nВ одном запросе передавайте либо карточки, либо категории и коллекции.","properties":{"product_card_ids":{"type":"array","description":"Идентификаторы карточек товара.","items":{"$ref":"#/components/schemas/ProductCardID"}},"category_ids":{"type":"array","description":"Идентификаторы категорий.","items":{"type":"string","format":"uuid","description":"Идентификатор категории.","example":"00000000-0000-0000-0000-000000000001"}},"collection_ids":{"type":"array","description":"Идентификаторы коллекций.","items":{"type":"string","format":"uuid","description":"Идентификатор коллекции.","example":"00000000-0000-0000-0000-000000000001"}}}},"RedirectID":{"type":"string","format":"uuid","description":"Идентификатор редиректа.","example":"019b21d9-c5d9-777d-80bd-d67c664bc6d9"},"Redirect":{"type":"object","required":["id","url_from","url_to","is_automatic"],"properties":{"id":{"$ref":"#/components/schemas/RedirectID"},"url_from":{"type":"string","description":"Путь, с которого выполняется переадресация.","example":"/old-page"},"url_to":{"type":"string","description":"Путь, на который выполняется переадресация.","example":"/new-page"},"is_automatic":{"type":"boolean","description":"true — если редирект создан автоматически (например, при смене slug категории/коллекции), false — если вручную.","example":false}}},"CreateRedirectRequest":{"type":"object","required":["url_from","url_to"],"properties":{"url_from":{"type":"string","description":"Путь, с которого выполняется переадресация.","example":"/old-page"},"url_to":{"type":"string","description":"Путь, на который выполняется переадресация.","example":"/new-page"}}},"UpdateRedirectRequest":{"type":"object","properties":{"url_from":{"type":"string","description":"Путь, с которого выполняется переадресация.","example":"/old-page"},"url_to":{"type":"string","description":"Путь, на который выполняется переадресация.","example":"/new-page"}}},"RedirectList":{"type":"object","required":["redirects","total_count"],"properties":{"redirects":{"type":"array","items":{"$ref":"#/components/schemas/Redirect"}},"total_count":{"type":"integer","format":"uint64","description":"Общее количество редиректов.","example":100}}},"AlertID":{"type":"string","minLength":1,"description":"Идентификатор алерта.","example":"certificateExpiry"},"AlertStatus":{"type":"string","description":"Статус алерта:\n- `ACTIVE` — проблема актуальна.\n- `RESOLVED` — алерт закрыт.","enum":["ACTIVE","RESOLVED"]},"AlertSeverity":{"type":"string","description":"Важность алерта:\n- `WARNING` — предупреждение, можно закрыть вручную.\n- `CRITICAL` — критичная проблема, закрывается только автоматически.","enum":["WARNING","CRITICAL"]},"Alert":{"type":"object","required":["id","message","severity","created_at"],"properties":{"id":{"$ref":"#/components/schemas/AlertID"},"message":{"type":"string","description":"Текст алерта.","example":"Срок действия SSL-сертификата истекает через 7 дней"},"severity":{"$ref":"#/components/schemas/AlertSeverity"},"created_at":{"type":"string","format":"date-time","description":"Дата и время создания алерта.","example":"2026-01-15T10:30:00Z"},"resolved_at":{"type":"string","format":"date-time","description":"Дата и время закрытия алерта. Отсутствует у активных алертов.","example":"2026-01-16T09:00:00Z"}}},"AlertCollection":{"type":"object","description":"Список алертов.","required":["alerts","total_count"],"properties":{"alerts":{"type":"array","items":{"$ref":"#/components/schemas/Alert"},"description":"Список алертов."},"total_count":{"type":"integer","format":"uint64","description":"Общее количество алертов.","example":3}}}}}}