# https://swagger.io/docs/specification/about/
openapi: 3.0.0

info:
  title: 'Shop Script API'
  version: 1.0.0
  contact:
    name: Webasyst LLC

externalDocs:
  description: API Shop-Script
  url: https://developers.webasyst.ru/api/explorer/shop/

servers:
  - url: /api.php
    description: Адрес API

paths:
#CATEGORY
  /shop.category.add:
    post:
      summary: Добавляет новую категорию товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.category.add
        url: https://developers.webasyst.ru/api/explorer/shop/shop.category.add/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Название
                parent_id:
                  type: integer
                  description: ID родительской категории
                  default: 0
                  minimum: 0
                meta_title:
                  type: string
                  description: Элемент TITLE страницы категории
                meta_keywords:
                  type: string
                  description: Значение атрибута META keywords
                meta_description:
                  type: string
                  format: text
                  description: Значение атрибута META description
                url:
                  type: string
                  format: uri
                  description: Редактируемая часть URL страницы категории
                description:
                  type: string
                  format: text
                  description: Описание
                conditions:
                  type: string
                  description: |
                    Параметры подбора товаров для динамической категории, разделенные символом «&».

                    Примеры:
                    + **create_datetime>=2022-10-13**: начало периода для проверки даты создания товаров.
                    + **create_datetime<=2022-10-15**: конец периода для проверки даты создания товаров.
                    + **price>=100**: начало диапазона цен.
                    + **price<=200**: конец диапазона цены.
                    + **compare_price>=200**: начало диапазона зачеркнутых цен.
                    + **compare_price<=300**: конец диапазона зачеркнутых цен.
                    + **purchase_price>=50**: начало диапазона закупочных цен.
                    + **purchase_price<=70**: конец диапазона закупочных цен.
                    + **edit_datetime>=2022-10-01**: начало периода дат последнего редактирования.
                    + **edit_datetime<=2022-10-10**: конец периода дат последнего редактирования.
                    + **rating>=3**: начало диапазона рейтинга.
                    + **rating<=5**: конец диапазона рейтинга.
                    + **type=14||13**: ID типов товаров.
                    + **count>=5**: начало диапазона количества на складе.
                    + **count<=100**: конец диапазона количества на складе.
                    + **badge=lowprice||bestseller**: идентификаторы наклеек.
                    + **brand.value_id=159,190**: ID значений характеристики с указанным идентификатором (на примере идентификатора '*brand*').
                filter:
                  type: string
                  description: Параметры фильтров в категории
                sort_products:
                  type: string
                  description: |
                    Правило сортировки товаров (по умолчанию для статических категорий применяется сортировка, заданная вручную в панели управления магазина).
                    + **name ASC**: по названию
                    + **price DESC**: самые дорогие
                    + **price ASC**: самые дешевые
                    + **rating DESC**: с высокой оценкой
                    + **rating ASC**: с низкой оценкой
                    + **total_sales DESC**: хиты по сумме продаж
                    + **total_sales ASC**: низкие продажи
                    + **count DESC**: в наличии
                    + **create_datetime DESC**: дата добавления
                    + **stock_worth DESC**: стоимость активов после реализации
                  enum:
                    - name ASC
                    - price DESC
                    - price ASC
                    - rating DESC
                    - rating ASC
                    - total_sales DESC
                    - total_sales ASC
                    - count DESC
                    - create_datetime DESC
                    - stock_worth DESC
                include_sub_categories:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: Флаг, требующий отображение товаров из подкатегорий
                status:
                  type: integer
                  description: |
                    Статус категории: 0 (скрытая), 1 (доступная на витрине)
                  enum:
                    - 0
                    - 1
              required:
                - name
      responses:
        200:
          description: Свойства добавленной категории.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductCategoryInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        500:
          description: Внутренняя ошибка сервера.

  /shop.category.delete:
    post:
      summary: Удаляет категорию товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.category.delete
        url: https://developers.webasyst.ru/api/explorer/shop/shop.category.delete/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID категории, которую нужно удалить
              required:
                - id
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: boolean
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        500:
          description: Внутренняя ошибка сервера.

  /shop.category.getInfo:
    get:
      summary: Возвращает информацию об указанной категории.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.category.getInfo
        url: https://developers.webasyst.ru/api/explorer/shop/shop.category.getInfo/
      parameters:
        - in: query
          name: id
          description: ID категории
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о категории.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductCategoryInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.category.getParents:
    get:
      summary: Возвращает список категорий всех уровней, являющихся родительскими по отношению к указанной категории.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.category.getParents
        url: https://developers.webasyst.ru/api/explorer/shop/shop.category.getParents/
      parameters:
        - in: query
          name: id
          description: ID категории, родительские категории которой нужно получить
          required: true
          schema:
            type: integer
        - in: query
          name: reverse
          description: |
            Флаг, обозначающий требование вернуть список родительских категорий в нисходящем порядке: начиная от корневой и вглубь иерархии категорий.
          required: false
          schema:
            type: integer
            enum:
              - 0
              - 1
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список родительских категорий.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductCategoryInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.category.getTree:
    get:
      summary: Возвращает дерево категорий товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.category.getTree
        url: https://developers.webasyst.ru/api/explorer/shop/shop.category.getTree/
      parameters:
        - in: query
          name: parent_id
          description: ID категории, которая должна считаться корнем возвращаемого дерева
          required: true
          schema:
            type: integer
        - in: query
          name: depth
          description: Количество уровней дерева, которые нужно получить (по умолчанию возвращается все дерево категорий)
          required: false
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список категорий.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductCategoryInfo'

  /shop.category.search:
    get:
      summary: Возвращает список категорий, названия которых содержат указанную строку.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.category.search
        url: https://developers.webasyst.ru/api/explorer/shop/shop.category.search/
      parameters:
        - in: query
          name: name
          description: Искомая строка
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список категорий.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductCategoryInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        401:
          description: Отсутствуют действительные учетные данные.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.category.update:
    post:
      summary: Обновляет информацию о категории товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.category.update
        url: https://developers.webasyst.ru/api/explorer/shop/shop.category.update/
      parameters:
        - in: query
          name: id
          description: ID категории
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Название
                parent_id:
                  type: integer
                  description: ID родительской категории
                  default: 0
                  minimum: 0
                meta_title:
                  type: string
                  description: Элемент TITLE страницы категории
                meta_keywords:
                  type: string
                  description: Значение атрибута META keywords
                meta_description:
                  type: string
                  description: Значение атрибута META description
                url:
                  type: string
                  description: Редактируемая часть URL страницы категории
                description:
                  type: string
                  description: Описание
                conditions:
                  type: string
                  description: |
                    Параметры подбора товаров для динамической категории, разделенные символом «&».

                    Примеры:
                    + **create_datetime>=2022-10-13**: начало периода для проверки даты создания товаров.
                    + **create_datetime<=2022-10-15**: конец периода для проверки даты создания товаров.
                    + **price>=100**: начало диапазона цен.
                    + **price<=200**: конец диапазона цены.
                    + **compare_price>=200**: начало диапазона зачеркнутых цен.
                    + **compare_price<=300**: конец диапазона зачеркнутых цен.
                    + **purchase_price>=50**: начало диапазона закупочных цен.
                    + **purchase_price<=70**: конец диапазона закупочных цен.
                    + **edit_datetime>=2022-10-01**: начало периода дат последнего редактирования.
                    + **edit_datetime<=2022-10-10**: конец периода дат последнего редактирования.
                    + **rating>=3**: начало диапазона рейтинга.
                    + **rating<=5**: конец диапазона рейтинга.
                    + **type=14||13**: ID типов товаров.
                    + **count>=5**: начало диапазона количества на складе.
                    + **count<=100**: конец диапазона количества на складе.
                    + **badge=lowprice||bestseller**: идентификаторы наклеек.
                    + **brand.value_id=159,190**: ID значений характеристики с указанным идентификатором (на примере идентификатора '*brand*').
                filter:
                  type: string
                  description: Параметры фильтров в категории
                sort_products:
                  type: string
                  description: |
                    Правило сортировки товаров (по умолчанию для статических категорий применяется сортировка, заданная вручную в панели управления магазина).
                    + **name ASC**: по названию
                    + **price DESC**: самые дорогие
                    + **price ASC**: самые дешевые
                    + **rating DESC**: с высокой оценкой
                    + **rating ASC**: с низкой оценкой
                    + **total_sales DESC**: хиты по сумме продаж
                    + **total_sales ASC**: низкие продажи
                    + **count DESC**: в наличии
                    + **create_datetime DESC**: дата добавления
                    + **stock_worth DESC**: стоимость активов после реализации
                  enum:
                    - name ASC
                    - price DESC
                    - price ASC
                    - rating DESC
                    - rating ASC
                    - total_sales DESC
                    - total_sales ASC
                    - count DESC
                    - create_datetime DESC
                    - stock_worth DESC
                include_sub_categories:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: Флаг, требующий отображение товаров из подкатегорий
                status:
                  type: integer
                  description: |
                    Статус категории: 0 (скрытая), 1 (доступная на витрине)
                  enum:
                    - 0
                    - 1
      responses:
        200:
          description: Информация о категории.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductCategoryInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        500:
          description: Внутренняя ошибка сервера.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.coupon.getList:
    get:
      summary: Возвращает список купонов на скидку.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.coupon.getList
        url: https://developers.webasyst.ru/api/explorer/shop/shop.coupon.getList/
      parameters:
        - in: query
          name: limit
          description: Максимальное количество купонов, которые нужно получить
          required: false
          schema:
            type: integer
            default: 100
            minimum: 0
        - in: query
          name: offset
          description: Смещение относительно начала отфильтрованного списка купонов
          required: false
          schema:
            type: integer
            default: 0
            minimum: 0
        - in: query
          name: search
          description: Поисковый запрос для фильтрации купонов по коду или комментарию
          required: false
          schema:
            type: string
        - in: query
          name: active_only
          description: |
            Фильтрация купонов по признаку доступности (доступными перестают быть купоны, у которых истек срок действия или достигнуто максимальное количество успешных применений).
            + **1**: Только доступные
            + **0**: Все
          required: false
          schema:
            type: string
            default: 1
            enum:
              - 1
              - 0
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о купонах.
          content:
            application/json:
              schema:
                type: object
                properties:
                  offset:
                    type: integer
                    description: Смещение относительно начала отфильтрованного списка купонов
                  limit:
                    type: integer
                    description: Максимальное количество купонов, которые нужно получить
                  count:
                    type: integer
                    description: Количество отфильтрованных купонов
                  coupons:
                    type: array
                    description: Свойства купонов
                    items:
                      $ref: '#/components/schemas/CouponInfo'


  /shop.coupon.getInfo:
    get:
      summary: Возвращает информацию об указанном купоне на скидку.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.coupon.getInfo
        url: https://developers.webasyst.ru/api/explorer/shop/shop.coupon.getInfo/
      parameters:
        - in: query
          name: id
          description: ID купона
          schema:
            type: integer
        - in: query
          name: code
          description: Код купона — для случая, когда не указан параметр *id*
          schema:
            type: string
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Свойства купона.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CouponInfo'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.customer.search:
    get:
      summary: Выполняет поиск покупателей, у которых есть заказы.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.customer.search
        url: https://developers.webasyst.ru/api/explorer/shop/shop.customer.search/
      parameters:
        - in: query
          name: hash
          description: |
            Хеш-строка с описанием условий фильтрации покупателей.

            Примеры:
            + **id/1,5,12**: поиск покупателей с указанными ID контактов.
            + **search/firstname=Иван**: поиск по значению «Иван» поля *firstname*. В качестве оператора сравнения вместо '=' в этом примере можно использовать следующие: '=' (совпадение значения), '\*=' (совпадение части значения), '^=' (совпадение начала значения), '=$' (совпадение окончания значения), '!=' (несовпадение значения), математические операторы '<', '=', '>', '<=', '>='. Можно объединять поиск по нескольким полям с помощью оператора '&', например: '*search/firstname=Иван&birth_year>=2000*'.
            + **search/name\*=Иван Петров**: поиск по частичному совпадению частей имени, разделенных пробелами. В этом примере будут найдены все покупатели, в полном имени которых (включая имя, отчество и фамилию) содержатся оба фрагмента в любых сочетаниях: «Иван» и «Петров», например: «**Иван** **Петров**», «**Иван** **Петров**ич», «Василий **Петров**ич **Иван**ов». Если в имени есть только один из фрагментов, то покупатель найден не будет, например: «**Иван** Сидоров» или «Василий **Петров**».
            + **search/email=ivan.petrov@domain.ru**: поиск по email-адресу.
            + **search/email$=@domain.ru**: поиск по части email-адреса.
            + **search/category=1**: поиск по ID категории, в которую добавлен контакт покупателя.
            + **search/address:country=rus**: поиск по ISO-коду страны в адресе.
            + **search/address:country\*=Росси**: поиск по началу локализованного названия страны в адресе.
            + **search/address:region=rus:77**: поиск по ISO-коду страны (в этом примере '*rus*') и номеру региона (в этом примере '*77*') в адресе.
            + **search/address:region\*=область**: поиск по любой части названия региона в адресе.
            + **search/phone=799911122333**: поиск по номеру телефона.
            + **search/phone.home=799911122333**: поиск по номеру телефона покупателя с указанием типа номера (в этом примере '*home*').
            + **search/phone^=7999**: поиск по части номера телефона.
            + **search/phone^=8999**: поиск по номеру телефона с кодом международной связи вместо кода страны (если код международной связи указан в настройках авторизации сайта).
          required: false
          schema:
            type: string
        - in: query
          name: offset
          description: Смещение относительно начала найденного массива покупателей
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
        - in: query
          name: limit
          description: Ограничение количества найденных покупателей
          required: false
          schema:
            type: integer
            minimum: 0
            default: 100
        - in: query
          name: sort
          description: |
            Порядок сортировки покупателей: ID поля контакта (например, *id*, *name*, *firstname*, *lastname*, *create_datetime*) и обозначение направления сортировки ('*ASC*' — по возрастанию или '*DESC*' — по убыванию), разделенные пробелом
          required: false
          schema:
            type: string
            default: name ASC
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список покупателей.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CustomerList'


  /shop.customer.add:
    post:
      summary: Добавляет нового покупателя.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.customer.add
        url: https://developers.webasyst.ru/api/explorer/shop/shop.customer.add/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: false
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                data[name]:
                  type: string
                  description: Полное имя
                data[firstname]:
                  type: string
                  description: Краткое имя
                data[middlename]:
                  type: string
                  description: Отчество
                data[lastname]:
                  type: string
                  description: Фамилия
                data[email]:
                  type: string
                  description: Email-адрес
                data[phone]:
                  type: string
                  description: Телефонный номер
                data[locale]:
                  type: string
                  description: Обозначение локали
                data[sex]:
                  type: string
                  enum:
                    - m
                    - f
                  description: |
                    Обозначение пола:
                      + **m**: мужской
                      + **f**: женский
                data[is_company]:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: Флаг, требующий создание покупателя-компании
                data[company]:
                  type: string
                  description: Название покупателя-компании
                skip_validation:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: |
                    Флаг, требующий пропустить валидацию данных: данные по возможности сохраняются как есть, а недопустимые значения игнорируются
      responses:
        200:
          description: Информация о добавленном покупателе.
          content:
            application/json:
              schema:
                type: object
                properties:
                  contact_id:
                    type: integer
                    description: ID контакта


#DASHBOARD
  /shop.dashboard.customers:
    get:
      summary: Возвращает информацию о количестве новых покупателей, полученных начиная с указанной даты.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.dashboard.customers
        url: https://developers.webasyst.ru/api/explorer/shop/shop.dashboard.customers/
      parameters:
        - in: query
          name: period
          description: Ближайший период в секундах, для которого нужно вернуть информацию о новых покупателях (по умолчанию возвращаются данные за последние 30 дней)
          schema:
            type: integer
            default: 2592000
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о новых покупателях.
          content:
            application/json:
              schema:
                type: object
                properties:
                  by_day:
                    type: array
                    description: Список данных за отдельные дни
                    items:
                      $ref: '#/components/schemas/DashboardCustomersByDayEntry'

  /shop.dashboard.realtime:
    get:
      summary: Возвращает подробную статистику продаж.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.dashboard.realtime
        url: https://developers.webasyst.ru/api/explorer/shop/shop.dashboard.realtime/
      parameters:
        - in: query
          name: period
          description: Период времени в секундах, за который нужно получить данные (по умолчанию 48 часов; это также максимальный допустимый период)
          schema:
            type: integer
            minimum: 0
            maximum: 172800 # 48 hours
            default: 172800 # 48 hours
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Статистика продаж.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardSales'
        403:
          description: Доступ запрещен.

  /shop.dashboard.sales:
    get:
      summary: Возвращает информацию о различных показателях продаж начиная с указанной даты.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.dashboard.sales
        url: https://developers.webasyst.ru/api/explorer/shop/shop.dashboard.sales/
      parameters:
        - in: query
          name: period
          description: Период в секундах, за который нужно получить информацию (по умолчанию 30 дней)
          schema:
            type: integer
            minimum: 0
            default: 2592000
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о показателях продаж.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardSales'
        403:
          description: Доступ запрещен.

  /shop.dashboard.salesTotal:
    get:
      summary: Возвращает информацию о показателях продаж за все время работы магазина.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.dashboard.salesTotal
        url: https://developers.webasyst.ru/api/explorer/shop/shop.dashboard.salesTotal/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о показателях продаж.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DashboardSales'


#FEATURE
  /shop.feature.add:
    post:
      summary: Добавляет новую характеристику товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.feature.add
        url: https://developers.webasyst.ru/api/explorer/shop/shop.feature.add/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                code:
                  type: string
                  description: Редактируемый идентификатор
                name:
                  type: string
                  description: Название
                status:
                  type: string
                  description: |
                    Статус видимости на витрине
                    + **private**: не видна
                    + **public**: видна
                  enum:
                    - private
                    - public
                  default: public
                type:
                  type: string
                  description: |
                    Тип
                    + **varchar**: строка текста
                    + **double**: число
                    + **text**: многострочный текст
                    + **date**: дата
                    + **dimension**: число с единицей измерения
                    + **range.\***: диапазон значений
                    + **2d**: габариты «число × число»
                    + **3d**: габариты «число × число × число»
                    + **boolean**: переключатель «да/нет»
                    + **color**: цвет
                    + **divider**: заголовок группы характеристик
                  enum:
                  - varchar
                  - double
                  - text
                  - date
                  - dimension
                  - range
                  - 2d
                  - 3d
                  - boolean
                  - color
                  - divider
                selectable:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: Флаг, позволяющий выбирать из нескольких заранее установленных значений характеристики
                multiple:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: Флаг, позволяющий одновременно выбирать более одного значения характеристики в свойствах товаров
                available_for_sku:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: Флаг, позволяющий редактировать значения характеристики в свойствах модификаций товаров
                default_unit:
                  type: string
                  description: Единица измерения по умолчанию (для характеристик типа *dimension*)
              required:
                - code
                - name
      responses:
        200:
          description: Свойства добавленной характеристики.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeatureInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.feature.delete:
    post:
      summary: Удаляет характеристику товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.feature.delete
        url: https://developers.webasyst.ru/api/explorer/shop/shop.feature.delete/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID характеристики, которую нужно удалить (по умолчанию используется идентификатор характеристики, указанный в параметре *code*)
                code:
                  type: string
                  description: Идентификатор характеристики (по умолчанию используется значение параметра *id*)
      responses:
        200:
          description: Результат удаления характеристики.
          content:
            application/json:
              schema:
                type: boolean
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.feature.getInfo:
    get:
      summary: Возвращает информацию о характеристике товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.feature.getInfo
        url: https://developers.webasyst.ru/api/explorer/shop/shop.feature.getInfo/
      parameters:
        - in: query
          name: id
          description: ID характеристики (по умолчанию поиск характеристики выполняется по идентификатору, указанному в параметре *code*)
          schema:
            type: integer
        - in: query
          name: code
          description: Идентификатор характеристики (по умолчанию поиск характеристики выполняется по ее ID, указанному в параметре *id*)
          schema:
            type: string
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Свойства характеристики.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeatureInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.feature.getList:
    get:
      summary: Возвращает список характеристик товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.feature.getList
        url: https://developers.webasyst.ru/api/explorer/shop/shop.feature.getList/
      parameters:
        - in: query
          name: type_id
          description: ID типа товаров, характеристики которого нужно получить (по умолчанию метод возвращает список всех характеристик)
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список характеристик.
          content:
            application/json:
              schema:
                type: object

#ORDER
  /shop.order.action:
    post:
      summary: Выполняет действие с заказом.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.action
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.action/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID заказа
                action:
                  type: string
                  description: ID действия
                  # ['process', 'pay', 'ship', 'complete', 'comment', 'edit', 'editcode', 'editshippingdetails', 'message', 'delete']
                text:
                  type: string
                  format: text
                  description: Комментарий, который можно сохранить в историю обработки заказа при выполнении действия.
                return_stock:
                  type: integer
                  description: |
                    + Для действия **capture**: ID склада, на который нужно вернуть остатки товаров, для которых не выполняется списание средств при частичном списании (пустое значение обозначает возврат остатков на тот склад, с которого они были списаны во время обработки заказа).
                    + Для действия **delete**: ID склада, на который нужно вернуть остатки заказанных товаров (пустое значение обозначает возврат остатков на тот склад, с которого они были списаны во время обработки заказа).
                    + Для действия **refund**: ID склада, на который нужно вернуть остатки товаров при возврате заказа (пустое значение обозначает возврат остатков на тот склад, с которого они были списаны во время обработки заказа).
                capture_mode:
                  type: string
                  description: Значение '*partial*', если необходимо выполнить частичное списание при выполнении действия *capture*.
                capture_items:
                  description: Информация о товарах, для которых выполняется частичное списание при выполнении действия *capture* со структурой вида `[item_id]['quantity']`, где *item_id* — ID позиций заказа, являющихся модификациями товаров, а значения — количество каждой модификации.
                  type: object
                  additionalProperties: true
                capture_shipping_cost:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: Флаг, требующий списать стоимость доставки во время частичного списания при выполнении действия *capture*
                code:
                  description: Информация о товарных кодах заказанных товаров, введенных при выполнении действия *editcode*, со структурой вида `[code_id][item_id][]`, где *code_id* — ID товарного кода, настроенного в магазине, *item_id* — ID позиции заказа, являющейся модификацией товара, а значения — товарные коды
                  type: object
                  additionalProperties: true
                shipping_date:
                  type: string
                  description: Дата доставки заказа курьером в формате «гггг-мм-дд», которую можно указать при выполнении действий *ship* и *editshippingdetails*
                shipping_time_from:
                  type: string
                  description: |
                    Начало диапазона времени доставки заказа курьером (в формате «чч:мм»), который можно указать при выполнении действий *ship* и *editshippingdetails*
                shipping_time_to:
                  type: string
                  description: |
                    Конец диапазона времени доставки заказа курьером (в формате «чч:мм»), который можно указать при выполнении действий *ship* и *editshippingdetails*
                tracking_number:
                  type: string
                  description: Идентификатор отправления, который можно указать при выполнении действий *ship* и *editshippingdetails*.
                courier_id:
                  type: integer
                  description: ID курьера, который можно указать при выполнении действий *ship* и *editshippingdetails*.
                transport:
                  type: string
                  description: |
                    Обозначение транспорта для отправки сообщения, которое можно указать при выполнении действия *message*:
                    + email
                    + sms
                sender:
                  type: string
                  description: |
                    Обозначение отправителя, которое можно указать при выполнении действия *message*:
                    + **email-адрес** (если для отправки email-сообщения не указано значение *sender*, то в качестве адреса отправителя используется основой email-адрес из настроек магазина)
                    + **номер телефона**
                refund:
                  type: integer
                  enum:
                    - 0
                    - 1
                  description: Флаг, требующий обработку возврата заказа платежным плагином при выполнении действия *refund*
                refund_mode:
                  type: string
                  description: Значение '*partial*', если необходим частичный возврат при выполнении действия *refund*
                refund_items:
                  description: Информация о товарах в заказе, для которого выполняется возврат при выполнении действия *refund*, со структурой вида `[item_id]['quantity']`, где *item_id* — ID позиций заказа, являющихся модификациями товаров, а значения — количество модификаций
                  type: object
                  additionalProperties: true
                master_id:
                  oneOf:
                    - type: integer
                      description: ID главного заказа, с которым нужно объединить подвешенный заказ при выполнении действия *settle*
                    - type: string
                      description: Значение '*custom*', если вместо одного из автоматически подобранных ID заказов необходимо вручную указать произвольный ID заказа
                master_id_custom:
                  type: integer
                  description: ID главного заказа, с которым нужно объединить подвешенный заказ при выполнении действия *settle* (используется, если в параметре *master_id* указано значение '*custom*')
              required:
                - id
                - action
      responses:
        200:
          description: Информация о выполненном действии.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderActionResult'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        500:
          description: Внутренняя ошибка сервера.

  /shop.order.actions:
    get:
      summary: Возвращает список действий, доступных для указанного заказа в его текущем состоянии.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.actions
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.actions/
      parameters:
        - in: query
          name: id
          description: ID заказа
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список действий.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OrderActionInfo'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

# не работает, потому неизвестно как заполнять параметр items
#  /shop.order.add:
#    post:
#      summary: Создает новый заказ.
#      security:
#        - ApiKeyAuth: []
#      externalDocs:
#        description: shop.order.add
#        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.add/
#      parameters:
#        - $ref: '#/components/parameters/requestFormat'
#      requestBody:
#        required: true
#        content:
#          application/x-www-form-urlencoded:
#            schema:
#              type: object
#              properties:
#                contact_id:
#                  type: integer
#                  description: ID контакта покупателя
#                contact:
#                  type: integer
#                  description: ID контакта покупателя. Альтернатива для contact_id, если он не указан
#                items:
#                  $ref: '#/components/schemas/orderItems'
#                comment:
#                  type: string
#                  description: Комментарий к заказу
#              required:
#                - contact_id
#                - items
#      responses:
#        200:
#          description: Успешное выполнение запроса.
#        400:
#          description: Некорректное содержимое запроса.
#          content:
#            application/json:
#              schema:
#                $ref: '#/components/schemas/invalidResponse'
#        500:
#          description: Внутренняя ошибка сервера.

  /shop.order.addSale:
    post:
      summary: Создает новый заказ-продажу. Такие заказы попадают в отдельный статус и указание покупателя для них необязательно.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.addSale
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.addSale/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                contact_id:
                  type: integer
                  description: ID контакта покупателя (по умолчанию заказ создается без привязки к контакту)
                comment:
                  type: string
                  format: text
                  description: Комментарий к заказу
                currency:
                  type: string
                  description: Код валюты заказа в формате ISO 4217, соответствующий одной из валют, настроенных в магазине (по умолчанию используется основная валюта магазина)
                coupon_id:
                  type: integer
                  description: Купон для применения к заказу
                discount:
                  type: number
                  description: Размер скидки в валюте заказа; игнорирует ID купона, указанный в параметре 'coupon_id'
                params:
                  type: array
                  description: Дополнительные параметры заказа
                items[0]:
                  type: array
                  description: Позиция заказа
                  items:
                    type: object
                    properties:
                      sku_id:
                        type: integer
                        description: ID модификации товара
                      service_variant_id:
                        type: integer
                        description: ID варианта услуги (каждая услуга указывается отдельной позицией в заказе и привязывается к значению *sku_id*)
                      quantity:
                        type: number
                        description: Количество товара; для услуг автоматически равно количеству соответствующего товара
                        default: 1
                      price:
                        type: number
                        description: Цена одной единицы товара или услуги (по умолчанию совпадает с ценой в каталоге)
                    required:
                      - sku_id
                items[0][codes][0]:
                  type: array
                  description: Товарные коды (например, маркировка Честный Знак)
                  items:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Товарный код, настроенный в ШС (например, chestnyznak)
                      value:
                        type: string
                        description: Значение товарного кода
                items[0][codes][1]:
                  type: array
                  description: Товарные коды (например, маркировка Честный Знак)
                  items:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Товарный код, настроенный в ШС (например, chestnyznak)
                      value:
                        type: string
                        description: Значение товарного кода
                items[0][codes][2]:
                  type: array
                  description: Товарные коды (например, маркировка Честный Знак)
                  items:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Товарный код, настроенный в ШС (например, chestnyznak)
                      value:
                        type: string
                        description: Значение товарного кода
                items[1]:
                  type: array
                  description: Позиция заказа
                  items:
                    type: object
                    properties:
                      sku_id:
                        type: integer
                        description: ID модификации товара
                      service_variant_id:
                        type: integer
                        description: ID варианта услуги (каждая услуга указывается отдельной позицией в заказе и привязывается к значению *sku_id*)
                      quantity:
                        type: number
                        description: Количество товара; для услуг автоматически равно количеству соответствующего товара
                        default: 1
                      price:
                        type: number
                        description: Цена одной единицы товара или услуги (по умолчанию совпадает с ценой в каталоге)
                items[2]:
                  type: array
                  description: Позиция заказа
                  items:
                    type: object
                    properties:
                      sku_id:
                        type: integer
                        description: ID модификации товара
                      service_variant_id:
                        type: integer
                        description: ID варианта услуги (каждая услуга указывается отдельной позицией в заказе и привязывается к значению *sku_id*)
                      quantity:
                        type: number
                        description: Количество товара; для услуг автоматически равно количеству соответствующего товара
                        default: 1
                      price:
                        type: number
                        description: Цена одной единицы товара или услуги (по умолчанию совпадает с ценой в каталоге)
              required:
                - items[0]
            encoding:
              items[0]:
                style: form
                explode: true
              items[1]:
                style: form
                explode: true
              items[2]:
                style: form
                explode: true
              items[0][codes][0]:
                style: form
                explode: true
              items[0][codes][1]:
                style: form
                explode: true
              items[0][codes][2]:
                style: form
                explode: true
      responses:
        200:
          description: Свойства созданного заказа.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        500:
          description: Внутренняя ошибка сервера.


  /shop.order.addInvoice:
    post:
      summary: |
        Создает новый заказ для внесения предоплаты: без добавления товаров, только с общей суммой заказа.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.addInvoice
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.addInvoice/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                total:
                  type: number
                  required: true
                  description: Стоимость заказа
                contact_id:
                  type: integer
                  description: ID контакта покупателя (по умолчанию заказ создается без привязки к контакту)
                comment:
                  type: string
                  format: text
                  description: Комментарий к заказу
                currency:
                  type: string
                  description: Код валюты заказа в формате ISO 4217, соответствующий одной из валют, настроенных в магазине (по умолчанию используется основная валюта магазина)
                payment_id:
                  type: integer
                  description: ID способа оплаты
              required:
                - total
      responses:
        200:
          description: Свойства созданного заказа.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        500:
          description: Внутренняя ошибка сервера.

# не работает, потому неизвестно как заполнять array
#  /shop.order.calculate:
#    post:
#      summary: Просмотр параметров заказа без сохранения в базу данных.
#      security:
#        - ApiKeyAuth: []
#      externalDocs:
#        description: shop.order.calculate
#        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.calculate/
#      parameters:
#        - $ref: '#/components/parameters/requestFormat'
#      requestBody:
#        required: true
#        content:
#          application/x-www-form-urlencoded:
#            schema:
#              type: object
#              properties:
#                id:
#                  type: integer
#                  description: ID заказа
#                items:
#                  $ref: '#/components/schemas/orderItems'
#                  description: |
#                    Массив состава заказа. Услуги должны быть указаны в подмассиве модификации товара с ключом 'services'.
#                customer:
#                  type: array
#                  description: Массив информации о покупателе
#                shipping_address:
#                  type: array
#                  description: Ассоциативный массив полей адреса доставки
#                billing_address:
#                  type: array
#                  description: Ассоциативный массив полей адреса плательщика
#                discount:
#                  type: string
#                  description: Информация о скидке: - Размер скидки в валюте заказа. - null, если не нужно изменять размер скидки. - true, если нужно автоматически пересчитать размер скидки
#                params:
#                  type: array
#                  description: Массив дополнительных параметров заказа для таблицы shop_order_params
#                currency:
#                  type: string
#                  description: 3-буквенное обозначение валюты заказа
#                payment_params:
#                  type: array
#                  description: Ассоциативный массив параметров оплаты
#                shipping_params:
#                  type: array
#                  description: Ассоциативный массив параметров доставки
#                shipping:
#                  type: number
#                  description: Стоимость доставки, выраженная в валюте заказа
#                tax:
#                  type: number
#                  description: |
#                    Режим сохранения размера налога. Строковое значение 'calculate' означает вычисление размера налога. Пустое значение (null) означает сохранение ранее вычисленного размера налога.
#              required:
#                - id
#      responses:
#        200:
#          description: Успешное выполнение запроса.
#        500:
#          description: Внутренняя ошибка сервера.

  /shop.order.comment:
    post:
      summary: Добавляет комментарий к заказу.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.comment
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.comment/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID заказа
                text:
                  type: string
                  format: text
                  description: Текст комментария
              required:
                - id
      responses:
        200:
          description: Информация о выполненном действии.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderActionResult'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.order.complete:
    post:
      summary: Выполняет с заказом действие «Выполнен».
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.complete
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.complete/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID заказа
              required:
                - id
      responses:
        200:
          description: Информация о выполненном действии.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderActionResult'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.order.contactSave:
    post:
      summary: Изменяет контактную информацию о покупателе для указанного заказа.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.contactSave
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.contactSave/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                order_id:
                  type: integer
                  description: ID заказа
                contact[name]:
                  type: string
                  description: Полное имя покупателя
                contact[firstname]:
                  type: string
                  description: Краткое имя покупателя
                contact[middlename]:
                  type: string
                  description: Отчество покупателя
                contact[lastname]:
                  type: string
                  description: Фамилия покупателя
                contact[company]:
                  type: string
                  description: Название компании покупателя
                contact[email]:
                  type: string
                  description: Email-адрес покупателя
                contact[phone]:
                  type: string
                  description: Телефонный номер покупателя
              required:
                - order_id
      responses:
        200:
          description: Результат выполнения запроса.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.order.couriers:
    get:
      summary: Возвращает список доступных курьеров и информацию о выбранном курьере для этого заказа.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.couriers
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.couriers/
      parameters:
        - in: query
          name: id
          description: ID заказа
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список курьеров.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.order.delete:
    post:
      summary: Удаляет заказ.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.delete
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.delete/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID заказа
              required:
                - id
      responses:
        200:
          description: Информация о выполненном действии.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderActionResult'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.order.getPaymentlinks:
    get:
      summary: Возвращает информацию о ссылках на оплату заказа для всех витрин магазина.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.getPaymentlinks
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.getPaymentlinks/
      parameters:
        - in: query
          name: id
          description: ID заказа
          required: true
          schema:
            type: integer
        - in: query
          name: payment_image
          description: Флаг, требующий генерацию изображения для оплаты заказа (например, QR-код), если у заказа уже выбран способ оплаты и он поддерживает оплату с использованием изображения
          required: false
          schema:
            type: integer
            enum:
              - 0
              - 1
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список ссылок на оплату.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PaymentLinkInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.order.getInfo:
    get:
      summary: Возвращает информацию о заказе.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.getInfo
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.getInfo/
      parameters:
        - in: query
          name: id
          description: ID заказа
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о заказе.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.order.initpay:
    post:
      summary: Инициализирует оплату заказа на терминале (или по QR-коду, если плагин оплаты поддерживает такой режим работы).
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.initpay
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.initpay/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID заказа
                payment_id:
                  type: integer
                  description: ID способа оплаты, который нужно предварительно сохранить в свойствах заказа
                payment_params:
                  type: array
                  description: Дополнительные параметры оплаты
              required:
                - id
      responses:
        200:
          description: Информация об успешном инициировании процесса оплаты.
          content:
            application/json:
              schema:
                type: object
                properties:
                  payment_image_url:
                    type: string
                    format: uri
                    description: URL изображения (QR-кода) плагина оплаты
                  payment_image_data_url:
                    type: string
                    description: Данные изображения (QR-кода) плагина оплаты в формате *data-url*
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        500:
          description: Внутренняя ошибка сервера.

  /shop.order.log:
    get:
      summary: Возвращает историю действий с заказом.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.log
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.log/
      parameters:
        - in: query
          name: id
          description: ID заказа
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: История действий.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/OrderLogEntry'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.order.process:
    post:
      summary: Выполняет с заказом действие «В обработку».
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.process
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.process/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID заказа
              required:
                - id
      responses:
        200:
          description: Информация о выполненном действии.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderActionResult'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

# не работает, потому неизвестно как заполнять параметр items
#  /shop.order.save:
#    post:
#      summary: Сохраняет информацию о заказе в базу данных.
#      security:
#        - ApiKeyAuth: []
#      externalDocs:
#        description: shop.order.save
#        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.save/
#      parameters:
#        - $ref: '#/components/parameters/requestFormat'
#      requestBody:
#        required: true
#        content:
#          application/x-www-form-urlencoded:
#            schema:
#              type: object
#              properties:
#                id:
#                  type: integer
#                  description: ID заказа
#                items:
#                  type: array
#                  description: |
#                    Массив состава заказа. Услуги должны быть указаны в подмассиве модификации товара с ключом 'services'.
#
#                    Параметр items является обязательным при создании нового заказа. При редактировании существующего - не обязателен.
#                contact_id:
#                  type: integer
#                  description: ID покупателя (если надо передать заказ другому покупателю)
#                customer:
#                  type: array
#                  description: Массив информации о покупателе. Будет обновлен контакт, привязанный к заказу. Если передан еще и contact_id, то будет изменен контакт с этим указанным id
#                shipping_address:
#                  type: array
#                  description: Ассоциативный массив полей адреса доставки
#                billing_address:
#                  type: array
#                  description: Ассоциативный массив полей адреса плательщика
#                discount:
#                  type: string
#                  description: Информация о скидке: - Размер скидки в валюте заказа. - null, если не нужно изменять размер скидки. - calculate, если нужно автоматически пересчитать размер скидки
#                params:
#                  type: array
#                  description: Массив дополнительных параметров заказа для таблицы shop_order_params
#                comment:
#                  type: string
#                  description: Комментарий к заказу
#              required:
#                - id
#      responses:
#        200:
#          description: Успешное выполнение запроса.

  /shop.order.saveItem:
    post:
      summary: Изменяет количество позиции заказа. Автоматически пересчитывает размер скидки и стоимость доставки заказа.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.saveItem
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.saveItem/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                item_id:
                  type: integer
                  description: ID позиции заказа
                quantity:
                  type: number
                  description: Количество
                codes[0]:
                  type: array
                  description: Товарные коды (например, маркировка Честный Знак)
                  items:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Товарный код, настроенный в ШС (например, chestnyznak)
                      value:
                        type: string
                        description: Значение товарного кода
                codes[1]:
                  type: array
                  description: Товарные коды (например, маркировка Честный Знак)
                  items:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Товарный код, настроенный в ШС (например, chestnyznak)
                      value:
                        type: string
                        description: Значение товарного кода
                codes[2]:
                  type: array
                  description: Товарные коды (например, маркировка Честный Знак)
                  items:
                    type: object
                    properties:
                      code:
                        type: string
                        description: Товарный код, настроенный в ШС (например, chestnyznak)
                      value:
                        type: string
                        description: Значение товарного кода
              required:
                - item_id
                - quantity
            encoding:
              codes[0]:
                style: form
                explode: true
              codes[1]:
                style: form
                explode: true
              codes[2]:
                style: form
                explode: true
      responses:
        200:
          description: Результат выполнения запроса.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: Статус ответа
                  data:
                    type: object
                    description: Данные ответа
                  errors:
                    oneOf:
                      - type: array
                        description: Сообщения об ошибках
                        items:
                          type: string
                      - type: object
                        properties:
                          order:
                            type: object
                            properties:
                              common:
                                type: string
                                description: Сообщение об ошибке

  /shop.order.search:
    get:
      summary: Выполняет поиск заказов.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.search
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.search/
      parameters:
        - in: query
          name: hash
          description: |
            Хеш-строка с описанием условий фильтрации заказов.

            Примеры:
              + **id/12,23,34**: список ID заказов, информацию о которых нужно получить.
              + **search/state_id=new**: поиск по значению «new» поля *state_id*. Для поиска по нескольким значениям поля по условию «ИЛИ» нужно перечислить значения с оператором '||', например: '*search/state_id=new||processing||paid*'. В качестве оператора сравнения вместо '=' в этом примере можно использовать следующие: '=' (совпадение значения), '\*=' (совпадение части значения), '^=' (совпадение начала значения), '=$' (совпадение окончания значения), '!=' (несовпадение значения), математические операторы '<', '=', '>', '<=', '>='. Можно объединять поиск по нескольким полям с помощью оператора '&', например: '*search/state_id=new||processing&total>=100*'.
              + **search/params.shipping_id=64**: поиск заказов по параметру заказа *shipping_id* со значением '64'.
              + **search/items.service_id=2**: поиск заказов по свойству заказанных товаров *service_id* со значением '2'.
              + **search/items.product_id=10**: поиск заказов с товаром, у которого значение *id* = 10.
              + **search/promo_id=10**: поиск заказов, связанных с промоакцией, у которой *id* = 10.
          required: false
          schema:
            type: string
        - in: query
          name: offset
          description: Смещение относительно начала списка найденных заказов
          required: false
          schema:
            type: integer
            minimum: 0
            maximum: 1000
            default: 0
        - in: query
          name: limit
          description: Ограничение количества найденных заказов
          required: false
          schema:
            type: integer
            minimum: 0
            default: 100
        - in: query
          name: fields
          description: |
            Список полей со свойствами заказов, которые нужно получить. Может содержать либо только список основных полей заказов, обозначенный с помощью символа «*», либо также названия дополнительных полей, которые можно добавить через запятую, например: '*\*,contact_full,shipping_info*'.

            Список доступных дополнительных полей:
            + **products**: в содержимое ответа в информацию о каждом заказанном товаре в массиве '*items*' добавляются элементы с ключом '*product*', содержащие подробную информацию о товаре.
            + **skus**: в содержимое ответа в информацию о каждом заказанном товаре в массиве '*items*' добавляются элементы с ключом '*sku*', содержащие подробную информацию о модификации товара.
            + **contact**: в содержимое ответа добавляются элементы с ключом '*contact*' в виде массива сокращенной информации о покупателе.
            + **contact_full**: в содержимое ответа добавляются элементы с ключом '*contact*' в виде массива подробной информации о покупателе, включая все его адреса, email-адреса, номера телефона и относительные ссылки на эскизы фотографии, загруженной в профиле.
            + **state**: в содержимое ответа добавляются элементы с ключом '*state*' в виде массива информации о конфигурации текущего статуса заказа из настроек магазина.
            + **subtotal**: в содержимое ответа добавляются элементы с ключом '*subtotal*' в виде числа с обозначением суммарной стоимости заказанных товаров в каждом заказе без учета стоимости доставки («подытог») в основной валюте магазина без обозначения валюты.
            + **courier**: в содержимое ответа добавляются элементы с ключом '*courier*' в виде массива с информацией о курьере, выбранном при отправке заказа.
            + **shipping_info**: в содержимое ответа добавляются элементы с ключом '*shipping_info*' в виде массива с информацией о способе доставки, включая название, стоимость и адрес.
            + **billing_info**: в содержимое ответа добавляются элементы с ключом '*billing_info*' в виде массива с информацией об адресе плательщика.
            + **sales_channel**: в содержимое ответа добавляется элемент с ключом '*sales_channels*' в виде строки, обозначающей канал продаж, через который получен заказ.
            + **order_icon**: в содержимое ответа добавляется элемент с ключом '*order_icon*' в виде строки с URL иконки, которую рекомендуется показать для данного заказа.
            + **stock_units**: в содержимое ответа добавляется элемент с ключом '*stock_units*' в виде массива с информацией о единицах измерения товаров в составе заказа.
            + **payment_url**: URL ссылки на оплату.
          enum:
            - products
            - skus
            - state
            - subtotal
            - order_icon
            - sales_channel
            - contact
            - contact_full
            - shipping_info
            - billing_info
            - courier
            - payment_url
          required: false
          schema:
            type: string
        - in: query
          name: escape
          description: Флаг, требующий экранировать свойства полученных названий товаров и имен покупателей для использования в HTML-коде
          required: false
          schema:
            type: integer
            default: 1
            enum:
              - 1
              - 0
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о заказах.
          content:
            application/json:
              schema:
                type: object
                properties:
                  offset:
                    type: integer
                    description: Смещение относительно начала списка найденных заказов
                  limit:
                    type: integer
                    description: Ограничение количества найденных заказов
                  count:
                    type: integer
                    description: Количество найденных заказов
                  orders:
                    type: array
                    description: Свойства заказов
                    items:
                      $ref: '#/components/schemas/OrderInfo'

        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        500:
          description: Внутренняя ошибка сервера.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.order.setShippingAddress:
    post:
      summary: Устанавливает адрес доставки для указанного заказа.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.setShippingAddress
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.setShippingAddress/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID заказа
                address[city]:
                  type: string
                  description: Название населенного пункта
                address[country]:
                  type: string
                  description: ISO-код страны
                address[region]:
                  type: string
                  description: Код региона страны
                address[street]:
                  type: string
                  description: Название улицы с номером дома и квартиры
                address[zip]:
                  type: string
                  description: Почтовый индекс
              required:
                - id
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: string
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.order.ship:
    post:
      summary: Выполняет с заказом действие «Отправлен».
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.order.ship
        url: https://developers.webasyst.ru/api/explorer/shop/shop.order.ship/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID заказа
                tracking_number:
                  type: string
                  description: Идентификатор отправления
              required:
                - id
      responses:
        200:
          description: Информация о выполненном действии.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OrderActionResult'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'


#PRODUCT
# не работает, потому неизвестно как заполнять параметр с array
#  /shop.product.add:
#    post:
#      summary: Добавляет новый товар.
#      security:
#        - ApiKeyAuth: []
#      externalDocs:
#        description: shop.product.add
#        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.add/
#      parameters:
#        - $ref: '#/components/parameters/requestFormat'
#      requestBody:
#        required: true
#        content:
#          application/x-www-form-urlencoded:
#            schema:
#              type: object
#              properties:
#                name:
#                  type: string
#                  description: Название товара
#                type_id:
#                  type: integer
#                  description: ID типа товара
#                summary:
#                  type: string
#                  description: Краткое описание
#                description:
#                  type: string
#                  description: Полное описание
#                meta_title:
#                  type: string
#                  description: Элемент TITLE страницы товара
#                meta_keywords:
#                  type: string
#                  description: Значение атрибута META keywords
#                meta_description:
#                  type: string
#                  description: Значение атрибута META description
#                og:
#                  type: array
#                  description: |
#                    Ассоциативный массив значений параметров товара для соцсетей. Примеры допустимых ключей массива: 'title', 'description', 'video', 'image_id'.
#                status:
#                  type: integer
#                  description: Статус публикации: -1 (снят с публикации), 0 (скрытый), 1 (опубликован)
#                  enum:
#                    - -1
#                    - 0
#                    - 1
#                image_id:
#                  type: integer
#                  description: ID основного изображения
#                sku_id:
#                  type: integer
#                  description: ID основной модификации
#                url:
#                  type: string
#                  description: Редактируемая часть URL страницы товара на витрине
#                video_url:
#                  type: string
#                  description: URL видеоролика
#                currency:
#                  type: string
#                  description: ISO3-код валюты товара
#                tax_id:
#                  type: integer
#                  description: ID налогового правила, применимого к товару
#                cross_selling:
#                  type: integer
#                  description: Режим выборки рекомендуемых товаров (cross-selling): 0 — рекомендуемые товары отключены, 1 — включен автоматический подбор рекомендуемых товаров, 2 — рекомендуемые товары выбраны вручную
#                  enum:
#                    - 0
#                    - 1
#                    - 2
#                upselling:
#                  type: integer
#                  description: Режим выборки рекомендуемых товаров (upselling): 0 — рекомендуемые товары отключены, 1 — включен автоматический подбор рекомендуемых товаров, 2 — рекомендуемые товары выбраны вручную
#                  enum:
#                    - 0
#                    - 1
#                    - 2
#                badge:
#                  type: string
#                  description: ID одной из стандартных наклеек или HTML-код пользовательской наклейки
#                sku_type:
#                  type: integer
#                  description: Способ выбора модификаций товара на витрине: 0 — по названиям артикулов, 1 — по значениям характеристик
#                  enum:
#                    - 0
#                    - 1
#                stock_base_ratio:
#                  type: number
#                  description: Отношение складской единицы измерения количества к базовой. Если не указано, используется значение из настроек типа товара
#                order_count_step:
#                  type: number
#                  description: Значение изменения количества кнопками «+/-». Если не указано, используется значение из настроек типа товара
#                order_count_min:
#                  type: number
#                  description: Минимальное количество для заказа. Если не указано, используется значение из настроек типа товара
#                skus:
#                  type: array
#                  description: |
#                    Массив информации о модификациях товара. Необходим в том случае, если в параметре 'sku_type' указано значение 0. Ключи массива — id модификаций, значения — подмассивы со значениями свойств модификаций:
#
#                    - available (int) Флаг (0 или 1) доступности для заказа.
#
#                    - status (int) Флаг (0 или 1) видимости на витрине.
#
#                    - price (float) Цена в формате decimal(15,4).
#
#                    - purchase_price (float) Закупочная цена в формате decimal(15,4).
#
#                    - compare_price (float) Зачеркнутая цена в формате decimal(15,4).
#
#                    - name (string) Название.
#
#                    - stock_base_ratio (float) Соотношение складской и базовой единиц измерения количества в формате decimal(16,8).
#
#                    - order_count_min (float) Минимальное количество для заказа в формате decimal(15,4).
#
#                    - order_count_step (float) Значение изменения количества кнопками «+/-» в формате decimal(15,4).
#
#                    - stock (array) Массив складских остатков модификации. Если в магазине не настроено ни одного склада, то массив должен содержать 1 элемент с количеством модификации в формате decimal(15,3). Если склады настроены, то ключами массива должны быть id складов, а значениями — количество модификации на данном складе в формате decimal(15,3).
#
#                    - features (array) Значения характеристик в параметрах модификации. Ключи массива — строковые идентификаторы характеристик, значения массива — значения характеристик.
#                categories:
#                  type: array
#                  description: Массив id категорий товара. Первый id в массиве сохранится как id основной категории товара
#                tags:
#                  oneOf:
#                    - type: string
#                    - type: array
#                  description: Список названий тегов, которые нужно привязать к товару, разделенные запятой в виде одной строки либо в виде массива строк
#                params:
#                  oneOf:
#                    - type: array
#                    - type: string
#                  description: |
#                    Дополнительные параметры товара в виде ассоциативного массива либо в виде строки вида 'name1=value1\nname2=value2\n...', в которой пары 'name=value' должны быть отделены друг от друга символом новой строки. Если в качестве значения передать null, то все дополнительные параметры товара будут удалены.
#                sets:
#                  type: array
#                  description: |
#                    Массив с информацией о списках, в которые должен быть включен товар. Элементами массива могут быть либо id списков, либо подмассивы с единственным ключом 'id', содержащим id каждого списка. Если товар ранее содержался в каких-то списках, то он автоматически исключается из тех списков, чьи id не указаны в этом параметре.
#                features:
#                  type: array
#                  description: Массив значений характеристик товара. Пример структуры массива удобно подсмотреть средствами разработчика в браузере при сохранении товара в панели управления магазина
#                features_selectable:
#                  type: array
#                  description: |
#                    Массив значений характеристик, из всех сочетаний которых должны автоматически сформироваться модификации товара. Ключи массива — строковые идентификаторы характеристик, значения массива — список ID значений этих характеристик. Может использоваться при передаче в параметре 'sku_type' значения '1'.
#                base_price_selectable:
#                  type: number
#                  description: |
#                    Цена, которая должна примениться ко всем модификациям, автоматически сформированным из значения параметра 'features_selectable'.
#                compare_price_selectable:
#                  type: number
#                  description: |
#                    Зачеркнутая цена, которая должна примениться ко всем модификациям, автоматически сформированным из значения параметра 'features_selectable'.
#                purchase_price_selectable:
#                  type: number
#                  description: |
#                    Закупочная цена, которая должна примениться ко всем модификациям, автоматически сформированным из значения параметра 'features_selectable'.
#              required:
#                - name
#                - type_id
#      responses:
#        200:
#          description: Успешное выполнение запроса.
#        400:
#          description: Некорректное содержимое запроса.
#          content:
#            application/json:
#              schema:
#                $ref: '#/components/schemas/invalidResponse'

  /shop.product.addTags:
    post:
      summary: Добавляет теги к указанному товару.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.addTags
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.addTags/
      parameters:
        - in: query
          name : id
          description: ID товара, к которому нужно добавить теги
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                tags:
                  oneOf:
                    - type: array
                      description: Названия тегов
                      items:
                        type: string
                    - type: string
                      description: Список тегов, разделенных запятой
              required:
                - tags
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: boolean
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.addToCategory:
    post:
      summary: Добавляет товар в указанную категорию.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.addToCategory
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.addToCategory/
      parameters:
        - in: query
          name : id
          description: ID товара
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                category_id:
                  type: integer
                  description: ID категории, в которую нужно добавить товар
              required:
                - category_id
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: boolean
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.addToSet:
    post:
      summary: Добавляет товар в статический список.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.addToSet
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.addToSet/
      parameters:
        - in: query
          name: id
          description: ID товара
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                set_id:
                  type: string
                  description: ID списка, в который нужно добавить товар
              required:
                - set_id
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: boolean
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.delete:
    post:
      summary: Удаляет товары.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.delete
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.delete/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  oneOf:
                    - type: integer
                      description: ID товара
                    - type: array
                      description: Массив ID товаров
                      items:
                        type: integer
                    - type: string
                      description: Список ID товаров, разделенных запятой
              required:
                - id
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: boolean
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.getInfo:
    get:
      summary: Возвращает информацию о товаре.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.getInfo
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.getInfo/
      parameters:
        - in: query
          name: id
          description: ID товара
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о товаре.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.getServices:
    post:
      summary: Возвращает информацию об услугах, доступных для модификаций товара.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.getServices
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.getServices/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                sku_ids:
                  type: array
                  description: Массив ID модификаций
                  items:
                    type: integer
      responses:
        200:
          description: Информация об услугах модификаций.
          content:
            application/json:
              schema:
                type: object
                properties:
                  services:
                    type: object
                    description: Список услуг
                  status:
                    type: string
                    description: Статус ответа
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

#не работает так как не реализована загрузка файлов в apiexplorer
#  /shop.product.images.add:
#    post:
#      summary: Добавляет новое изображение к товару.
#      security:
#        - ApiKeyAuth: []
#      externalDocs:
#        description: shop.product.images.add
#        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.images.add/
#      parameters:
#        - in: query
#          name: product_id
#          description: ID товара
#          required: true
#          schema:
#            type: integer
#        - $ref: '#/components/parameters/requestFormat'
#      requestBody:
#        required: true
#        content:
#          multipart/form-data:
#            schema:
#              type: object
#              properties:
#                file:
#                  type: string
#                  description: Файл изображения
#                  format: binary
#                description:
#                  type: string
#                  description: Описание изображения
#              required:
#                - product_id
#      responses:
#        200:
#          description: Успешное выполнение запроса.
#        400:
#          description: Не найдено.
#          content:
#            application/json:
#              schema:
#                $ref: '#/components/schemas/invalidResponse'
#        500:
#          description: Внутренняя ошибка сервера.

  /shop.product.images.addMany:
    post:
      summary: Добавляет одно или несколько новых изображений к товару.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.images.addMany
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.images.addMany/
      parameters:
        - in: query
          name: product_id
          description: ID товара
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                files[]:
                  type: array
                  description: Файлы изображений
                  items:
                    type: string
                    format: binary
                descriptions:
                  type: array
                  items:
                    type: string
                    format: text
                    description: Описания изображений в порядке следования файлов
      responses:
        200:
          description: Свойства изображений.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductImageInfo'
        400:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        500:
          description: Внутренняя ошибка сервера.

  /shop.product.images.update:
    post:
      summary: Изменяет порядок изображений товара, обновляет их описания и удаляет ненужные изображения.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.images.update
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.images.update/
      parameters:
        - in: query
          name: product_id
          description: ID товара
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                images:
                  type: array
                  description: Массив изображений товара в требуемом порядке; отсутствующие в этом списке изображения удаляются
                  items:
                    type: object
                    properties:
                      id:
                        description: ID существующего изображения товара
                        type: integer
                      description:
                        description: Новое описание изображения
                        format: text
                        type: string
                    required:
                      - id
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: boolean
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.images.delete:
    post:
      summary: Удаляет изображение товара.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.images.delete
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.images.delete/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID изображения, которое нужно удалить
              required:
                - id
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: boolean
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.images.getInfo:
    get:
      summary: Возвращает информацию об изображении товара.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.images.getInfo
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.images.getInfo/
      parameters:
        - in: query
          name: id
          description: ID изображения
          required: false
          schema:
            type: integer
        - in: query
          name: size
          description: Размер эскиза изображения, URL которого нужно вернуть в ключе '*url_thumb*'
          required: false
          schema:
            type: string
            default: 200x0
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Свойства изображения.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductImageInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.images.getList:
    get:
      summary: Возвращает список изображений товара.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.images.getList
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.images.getList/
      parameters:
        - in: query
          name: product_id
          description: ID товара, список изображений которого нужно получить
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список изображений.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductImageInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.images.sort:
    post:
      summary: Изменяет порядок сортировки изображений товара.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.images.sort
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.images.sort/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                photo_ids:
                  type: array
                  description: Массив ID изображений товара в требуемом порядке
                  items:
                    type: integer
              required:
                - photo_ids
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: string
                    description: Статус ответа
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

# не работает, потому неизвестно как заполнять параметр с array
#  /shop.product.massUpdate:
#    post:
#      summary: Обновляет информацию о нескольких товарах и их модификациях.
#      security:
#        - ApiKeyAuth: []
#      externalDocs:
#        description: shop.product.massUpdate
#        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.massUpdate/
#      parameters:
#        - $ref: '#/components/parameters/requestFormat'
#      requestBody:
#        required: true
#        content:
#          application/x-www-form-urlencoded:
#            schema:
#              type: object
#              properties:
#                product:
#                  type: array
#                  description: |
#                    Массив значений со свойствами товаров. Подмассив каждого товара может содержать значения со следующими ключами:
#
#                    - id (int) ID товара. Обязательное поле.
#                    - name (string) Название.
#
#                    - type_id (int) ID типа товара.
#
#                    - summary (string) Краткое описание.
#
#                    - description (string) Полное описание.
#
#                    - meta_title (string) Элемент TITLE страницы товара.
#
#                    - meta_keywords (string) Значение атрибута META keywords.
#
#                    - meta_description (string) Значение атрибута META description.
#
#                    - og (array) Ассоциативный массив значений параметров товара для соцсетей. Примеры допустимых ключей массива: 'title', 'description', 'video', 'image_id'.
#
#                    - status (int) Статус публикации: -1 (снят с публикации), 0 (скрытый), 1 (опубликован).
#
#                    - image_id (int) Id основного изображения.
#
#                    - sku_id (int) Id основной модификации.
#
#                    - video_url (string) URL видеоролика.
#
#                    - url (string) Редактируемая часть URL страницы товара на витрине.
#
#                    - currency (string) ISO-код валюты товара.
#
#                    - tax_id (int) Id налогового правила, применимого к товару.
#
#                    - cross_selling (int) Режим выборки рекомендуемых товаров (cross-selling): 0 — рекомендуемые товары отключены, 1 — включен автоматический подбор рекомендуемых товаров, 2 — рекомендуемые товары выбраны вручную.
#
#                    - upselling (int) Режим выборки рекомендуемых товаров (upselling): 0 — рекомендуемые товары отключены, 1 — включен автоматический подбор рекомендуемых товаров, 2 — рекомендуемые товары выбраны вручную.
#
#                    - badge (int|string) Id одной из стандартных наклеек или HTML-код пользовательской наклейки.
#
#                    - sku_type (int) Способ выбора модификаций товара на витрине: 0 — по названиям артикулов, 1 — по значениям характеристик.
#
#                    - stock_base_ratio (float) Отношение складской единицы измерения количества к базовой.
#
#                    - order_count_step (float) Значение изменения количества кнопками «+/-».
#
#                    - order_count_min (float) Минимальное количество для заказа.
#                sku:
#                  type: array
#                  description: |
#                    Массив значений со свойствами модификаций товаров. Подмассив каждой модификации может содержать значения со следующими ключами:
#
#                    - id (int) ID модификации. Обязательное поле.
#
#                    - sku (string) Код артикула.
#
#                    - sort (int) Значение сортировки.
#
#                    - name (string) Название артикула.
#
#                    - image_id (int) Id выбранного изображения.
#
#                    - price (float) Цена.
#
#                    - purchase_price (float) Закупочная цена.
#
#                    - compare_price (float) Зачеркнутая цена.
#
#                    - available (int) Флаг (0 или 1) доступности для покупки.
#
#                    - status (int) Флаг (0 или 1) видимости на витрине.
#
#                    - stock (array) Массив складских остатков модификации. Если в магазине не настроено ни одного склада, то массив должен содержать 1 элемент с количеством модификации в формате decimal(15,3). Если склады настроены, то ключами массива должны быть id складов, а значениями — количество модификации на данном складе в формате decimal(15,3).
#
#                    - count (int|float|null) Количество модификации на складе. Используется в том случае, если в магазине не настроены склады и если параметр 'stock' пуст.
#                jproduct:
#                  type: string
#                  description: |
#                    Если не указано значение для параметра 'product', используется значение, закодированное в строку с помощью функции json_encode().
#                jsku:
#                  type: string
#                  description: |
#                    Если не указано значение для параметра 'sku', используется значение, закодированное в строку с помощью функции json_encode().
#      responses:
#        200:
#          description: Успешное выполнение запроса.
#        400:
#          description: Некорректное содержимое запроса.
#          content:
#            application/json:
#              schema:
#                $ref: '#/components/schemas/invalidResponse'

  /shop.product.pages.getInfo:
    get:
      summary: Возвращает информацию о подстранице товара.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.pages.getInfo
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.pages.getInfo/
      parameters:
        - in: query
          name: id
          description: ID страницы
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Свойства подстраницы.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductPageInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.pages.getList:
    get:
      summary: Возвращает список опубликованных подстраниц товара.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.pages.getList
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.pages.getList/
      parameters:
        - in: query
          name: product_id
          description: ID товара
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список опубликованных подстраниц.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductPageInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.removeFromCategory:
    post:
      summary: Удаляет товар из категории.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.removeFromCategory
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.removeFromCategory/
      parameters:
        - in: query
          name: id
          description: ID товара
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                category_id:
                  type: integer
                  description: ID категории, из которой нужно удалить товар
              required:
                - category_id
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: boolean
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.removeFromSet:
    post:
      summary: Удаляет товар из статического списка.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.removeFromSet
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.removeFromSet/
      parameters:
        - in: query
          name: id
          description: ID товара
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                set_id:
                  type: string
                  description: ID списка, из которого нужно удалить товар
              required:
                - set_id
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: boolean
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.removeTags:
    post:
      summary: Удаляет теги из свойств товара.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.removeTags
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.removeTags/
      parameters:
        - in: query
          name: id
          description: ID товара
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                tags:
                  oneOf:
                    - type: array
                      description: Массив тегов
                      items:
                        type: string
                    - type: string
                      description: Список тегов, разделенных запятой
              required:
                - tags
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: boolean
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.reviews.getTree:
    get:
      summary: Возвращает список отзывов о товаре.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.reviews.getTree
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.reviews.getTree/
      parameters:
        - in: query
          name: product_id
          description: ID товара
          required: true
          schema:
            type: integer
        - in: query
          name: parent_id
          description: ID отзыва, который должен считаться корнем иерархического дерева (по умолчанию возвращается все дерево отзывов)
          required: false
          schema:
            type: integer
        - in: query
          name: depth
          description: Количество уровней дерева, которые нужно получить (по умолчанию возвращаются все найденные отзывы)
          required: false
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список отзывов.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductReviewInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.sales:
    get:
      summary: Возвращает информацию о продажах товара за последние 30 дней.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.sales
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.sales/
      parameters:
        - in: query
          name: id
          description: ID товара
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о продажах в основной валюте магазина.
          content:
            application/json:
              schema:
                type: object
                properties:
                  total:
                    description: Данные за весь период продаж
                    allOf:
                      - $ref: '#/components/schemas/SalesEntry'
                  days:
                    type: array
                    description: Данные за каждый день продаж
                    items:
                      $ref: '#/components/schemas/SalesEntry'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.search:
    get:
      summary: Возвращает список товаров, соответствующих заданным критериям.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.search
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.search/
      parameters:
        - in: query
          name: hash
          description: |
            Хеш-строка с описанием условий фильтрации товаров.

            Примеры:
            + **related/cross_selling/12**: товары, выбранные в качестве перекрестных продаж для товара с id = 12.
            + **related/upselling/12**: товары, выбранные в качестве схожих и альтернативных для товара с id = 12.
            + **category/27**: товары, содержащиеся в категории с id = 27.
            + **search/query=qwerty**: поиск по запросу 'qwerty' в названиях товаров, в названиях и кодах артикулов.
            + **search/name=qwerty**: точный поиск по запросу 'qwerty' в свойстве товаров 'name'. Вместо оператора сравнения '=' можно использовать другие, поддерживаемые SQL: '>', '<', '>=', '<=', '!='. Для аналогичного поиска по тегам нужно использовать обозначение 'tag'. Можно выполнять поиск сразу по нескольким полям: '*search/name\*=style&tag=fashion*'.
            + **search/name*=qwerty**: поиск по частям слов по запросу 'qwerty' в свойстве 'name'; поддерживаемые операторы: '\*=' (поиск в любой части слов), '^=' (поиск в начале слов), '$=' (поиск в конце слов).
            + **search/tag=style** или **tag/style**: точный поиск по тегу «style»; формат вида '*search/tag=style*' можно использовать для поиска по нескольким тегам с условием '||' (ИЛИ): '*search/tag=style||fashion*'.
            + **search/type_id=1**: поиск по указанному стандартному свойству товара на примере *type_id*.
            + **search/color.value_id=4,5,6***: поиск товаров с указанными ID значений характеристики с указанным текстовым идентификатором (в этом примере — '*color*').
            + **search/sku_id=11,22,33**: поиск по списку ID модификаций товаров; чтобы получить в найденных товарах только модификации с указанными ID, добавьте поле *skus_filtered* в список полей в параметре *fields*.
            + **search/category_id=7,8,9**: поиск товаров, для которых в качестве основной выбраны категории с указанными ID.
            + **search/by_code=01046902280040182157Dyeh93XRdN**: поиск товаров по значению характеристики GTIN, сохраненному в свойствах товара или его модификации, или по значению товарного кода «Честный Знак» (в котором содержится код GTIN).
            + **type/1**: поиск по ID типа товаров, синоним синтаксиса '*search/type_id=1*'.
            + **bestsellers/2592000**: поиск товаров-бестселлеров за указанное количество секунд (в этом примере за 30 дней = 60*60*24*30).
            + **bestsellers**: поиск товаров-бестселлеров за все время продаж.
          required: false
          schema:
            type: string
        - in: query
          name: offset
          description: Смещение относительно начала списка найденных товаров
          required: false
          schema:
            type: integer
            minimum: 0
            default: 0
        - in: query
          name: limit
          description: Максимальное количество товаров, которые нужно получить
          required: false
          schema:
            type: integer
            minimum: 0
            maximum: 1000
            default: 100
        - in: query
          name: fields
          description: |
            Список полей со свойствами товаров, которые нужно получить. Названия полей должны быть перечислены через запятую в виде строки (по умолчанию возвращаются значения всех стандартных полей товаров).

            Доступные дополнительные поля:
            + **images**: в содержимое ответа добавляется элемент с ключом '*images*' с подробной информацией обо всех изображениях товара включая 3 URL эскизов: с размерами '970', '96x96' и '270x0'.
            + **images2x**: аналогично полю *images*, но в информации об изображениях содержатся URL эскизов в для устройств с двойной плотностью пикселей.
            + **image**: в содержимое ответа добавляется элемент с ключом '*images*' с 3 URL эскизов основного изображения товара — с размерами '970', '96x96' и '270x0';
            + **image_crop_small**: в содержимое ответа добавляется элемент с ключом '*image_crop_small*' с URL эскиза основного изображения товара с размером '48x48'.
            + **image_count**: в содержимое ответа добавляется элемент с ключом '*image_count*' с количеством изображений товара.
            + **skus**: в содержимое ответа добавляется элемент с ключом '*skus*' с подробной информацией о модификациях товара; если запрошено также поле *stock_counts*, то в свойствах каждой модификации доступен элемент с ключам '*stock*' с информацией об остатках модификаций на каждом складе; если запрошено также поле *skus_image*, то в свойствах каждой модификации доступны элементы с ключами '*ext*', '*image_filename*', '*image_description*' с информацией об изображении товара, отображающемся на витрине при выборе данной модификации.
            + **skus_filtered**: аналогично полю *sku*, но в элементе '*skus*' содержатся только те модификации, свойства которых соответствуют условиям фильтрации товаров.
            + **sku_filtered**: аналогично полю *skus_filtered*, но в элементе '*skus*' содержится только одна модификация, свойства которого соответствуют условиям фильтрации товаров.
            + **sku**: в содержимое ответа добавляется элемент с ключом '*sku*' с названием основной модификации товара.
            + **frontend_url**: в содержимое ответа добавляется элемент с ключом '*frontend_url*' с URL страницы товара относительно URL витрины.
            + **sales_30days**: в содержимое ответа добавляются элементы с ключами '*sales_30days*' (с суммарной стоимостью всех модификаций товара в оплаченных заказах в виде числа, соответствующего основной валюте магазина) и '*sales_30days_html*' (с аналогичным значением, но с обозначением основной валюты магазина, подготовленным для использования в HTML-коде).
            + **stock_worth**: в содержимое ответа добавляются элементы с ключами '*stock_worth*' (с суммарной стоимостью всех модификаций товара, доступных на складе, в виде числа, соответствующего основной валюте магазина) и '*stock_worth_html*' (с аналогичным значением, но с обозначением основной валюты магазина, подготовленным для использования в HTML-коде).
            + **feature_*code***: в содержимое ответа для каждого товара и каждой модификации товара добавляются элементы с ключами вида '*feature_**code***' (например, *feature_**gtin***), содержащие значения характеристик с кодами, указанными вместо *code*.
          required: false
          schema:
            type: string
        - in: query
          name: sort
          description: |
            Правило сортировки
            + по **любому стандартному полю товара**, например: *name*, *create_datetime*, *price*, или нескольким полям, указанным в виде массива
            + **minimum_price**: по минимальной цене среди артикулов
            + **minimum_base_price**: по минимальной базовой цене среди артикулов
            + **stock_worth**: по стоимости активов
            + **sku**: сортировка по названию артикула
            + **purchase_price**: по закупочной цене среди артикулов
            + **image_count**: по количеству изображений в товаре
            + **sales_30days**: по продажам за последние 30 дней
            + **feature_[ID]**: по значениям характеристики с указанным идентификатором
            + **stock_[ID]**: по количеству товаров на указанном складе
          required: false
          schema:
            oneOf:
              - type: string
                description: ID поля
              - type: array
                description: Массив ID полей
                items:
                  type: string
        - in: query
          name: order
          description: |
            Направление сортировки:
            + **asc**: по возрастанию
            + **desc**: по убыванию
          required: false
          schema:
            type: string
            default: asc
            enum:
              - asc
              - desc
        - in: query
          name: filters
          description: |
            Параметры дополнительной фильтрации товаров
            + **in_stock_only**: флаг, требующий вернуть только товары с положительными или бесконечными остатками на складе.
            + **out_of_stock_only**: флаг, требующий вернуть только товары с нулевым остатком на складе (не `null` и меньше 1).
            + **price_min**: минимальная цена, выраженная в основной валюте магазина, не ниже которой должна быть цена требуемых товаров.
            + **price_max**: максимальная цена, выраженная в основной валюте магазина, не выше которой должна быть цена требуемых товаров.
            + **unit**: ID складской или базовой единицы измерения количества, которая должна быть у требуемых товаров.
            + **stock_unit_id**: ID складской единицы измерения количества, которая должна быть у требуемых товаров.
            + **base_unit_id**: ID базовой единицы измерения количества, которая должна быть у требуемых товаров.
            + **строковый идентификатор характеристики**: массив информации о значениях характеристики, которые должны присутствовать в свойствах товаров. Каждый элемент массива может представлять собой либо массив ID значений характеристики, либо массив с ключами '*min*' (минимальное значение), '*max*' (максимальное значение), '*unit*' (строковый идентификатор единицы измерения характеристики).
          required: false
          schema:
            type: string
        - in: query
          name: escape
          description: Флаг, требующий экранировать свойства товаров *name* и *url* для использования в HTML-коде
          required: false
          schema:
            type: integer
            default: 1
            enum:
              - 1
              - 0
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о найденных товарах.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductListInfo'
        500:
          description: Внутренняя ошибка сервера.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.skus.add:
    post:
      summary: Добавляет модификацию к существующему товару.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.skus.add
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.skus.add/
      parameters:
        - in: query
          name: product_id
          description: ID товара
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                sku:
                  type: string
                  description: Код артикула
                sort:
                  type: integer
                  description: Значение сортировки
                name:
                  type: string
                  description: Название артикула
                image_id:
                  type: integer
                  description: ID выбранного изображения
                price:
                  type: number
                  description: Цена
                purchase_price:
                  type: number
                  description: Закупочная цена
                compare_price:
                  type: number
                  description: Зачеркнутая цена
                available:
                  type: integer
                  description: Флаг доступности модификации для покупки
                  enum:
                    - 0
                    - 1
                status:
                  type: integer
                  description: Флаг видимости на витрине
                  default: 1
                  enum:
                    - 1
                    - 0
                stock:
                  description: Информация о складских остатках модификации
                  oneOf:
                    - type: array
                      description: |
                        Если склады не настроены: массив с 1 элементом, содержащим количество на складе в формате `decimal(15,3)`
                      items:
                        type: number
                    - type: object
                      additionalProperties: true
                      description: |
                        Если склады настроены: ключи — ID складов, значения — количество модификации на каждом складе в формате `decimal(15,3)`
                count:
                  type: number
                  description: Количество на складе, если в магазине не настроены склады и параметр *stock* пуст
                stock_base_ratio:
                  type: number
                  description: Отношение складской единицы измерения количества к базовой (по умолчанию используется значение из свойств товара)
                order_count_min:
                  type: number
                  description: Минимальное количество для заказа (по умолчанию используется значение из свойств товара)
                order_count_step:
                  type: number
                  description: Значение изменения количества кнопками «+/-» (по умолчанию используется значение из свойств товара)
      responses:
        200:
          description: Свойства добавленной модификации.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductVariantInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.skus.delete:
    post:
      summary: Удаляет модификацию товара.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.skus.delete
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.skus.delete/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID модификации, которую нужно удалить
              required:
                - id
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: boolean
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.skus.getInfo:
    get:
      summary: Возвращает информацию об указанной модификации товара.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.skus.getInfo
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.skus.getInfo/
      parameters:
        - in: query
          name: id
          description: ID модификации
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Свойства модификации товара.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductVariantInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.skus.getList:
    get:
      summary: Возвращает список модификаций товара.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.skus.getList
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.skus.getList/
      parameters:
        - in: query
          name: product_id
          description: ID товара
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список модификаций товара.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductVariantInfo'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.product.skus.update:
    post:
      summary: Обновляет информацию о модификации товара.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.skus.update
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.skus.update/
      parameters:
        - in: query
          name: id
          description: ID модификации
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                sku:
                  type: string
                  description: Код артикула
                sort:
                  type: integer
                  description: Значение сортировки
                name:
                  type: string
                  description: Название артикула
                image_id:
                  type: integer
                  description: ID выбранного изображения
                price:
                  type: number
                  description: Цена
                purchase_price:
                  type: number
                  description: Закупочная цена
                compare_price:
                  type: number
                  description: Зачеркнутая цена
                available:
                  type: integer
                  description: Флаг (0 или 1) доступности для заказа
                  enum:
                    - 0
                    - 1
                status:
                  type: integer
                  description: Флаг (0 или 1) видимости на витрине
                  enum:
                    - 0
                    - 1
                stock:
                  description: Информация о складских остатках модификации
                  oneOf:
                    - type: array
                      description: |
                        Если склады не настроены: массив с 1 элементом, содержащим количество на складе в формате `decimal(15,3)`
                      items:
                        type: number
                    - type: object
                      additionalProperties: true
                      description: |
                        Если склады настроены: ключи — ID складов, значения — количество модификации на каждом складе в формате `decimal(15,3)`
                count:
                  type: number
                  description: Количество модификации на складе; используется, если в магазине не настроены склады и параметр *stock* пуст
                stock_base_ratio:
                  type: number
                  description: Отношение складской единицы измерения количества к базовой.
                order_count_min:
                  type: number
                  description: Минимальное количество для заказа.
                order_count_step:
                  type: number
                  description: Значение изменения количества кнопками «+/-».
      responses:
        200:
          description: Обновленные свойства модификации.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductVariantInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

# частично работает, потому что неизвестно, как заполнять параметр с array
  /shop.product.update:
    post:
      summary: Обновляет свойства товара.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.product.update
        url: https://developers.webasyst.ru/api/explorer/shop/shop.product.update/
      parameters:
        - in: query
          name: id
          description: ID товара
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Название
                summary:
                  type: string
                  format: text
                  description: Краткое описание
                description:
                  type: string
                  format: text
                  description: Полное описание
                meta_title:
                  type: string
                  description: Элемент TITLE страницы товара
                meta_keywords:
                  type: string
                  description: Значение атрибута META keywords
                meta_description:
                  type: string
                  format: text
                  description: Значение атрибута META description
                og:
                  type: object
                  description: Значения параметров товара для соцсетей
                  properties:
                    title:
                      type: string
                    description:
                      format: text
                      type: string
                    video:
                      type: string
                    image_id:
                      type: integer
                status:
                  type: integer
                  description: |
                    Статус публикации
                    + **-1**: скрыт и недоступен
                    + **0**: скрыт
                    + **1**: опубликован
                  enum:
                    - -1
                    - 0
                    - 1
                type_id:
                  type: integer
                  description: ID типа товара
                image_id:
                  type: integer
                  description: ID основного изображения
                sku_id:
                  type: integer
                  description: ID основной модификации
                url:
                  type: string
                  description: Редактируемая часть URL страницы товара на витрине
                price:
                  type: number
                  description: Цена
                compare_price:
                  type: number
                  description: Зачеркнутая цена
                currency:
                  type: string
                  description: ISO3-код валюты товара
                tax_id:
                  type: integer
                  description: ID налогового правила, применимого к товару
                cross_selling:
                  type: integer
                  description: |
                    Режим выборки рекомендуемых товаров (cross-selling): 0 — рекомендуемые товары отключены, 1 — включен автоматический подбор рекомендуемых товаров, 2 — рекомендуемые товары выбраны вручную.
                  enum:
                    - 0
                    - 1
                    - 2
                upselling:
                  type: integer
                  description: |
                    Режим выборки рекомендуемых товаров (upselling): 0 — рекомендуемые товары отключены, 1 — включен автоматический подбор рекомендуемых товаров, 2 — рекомендуемые товары выбраны вручную.
                  enum:
                    - 0
                    - 1
                    - 2
                badge:
                  type: string
                  description: ID одной из стандартных наклеек или HTML-код пользовательской наклейки
                sku_type:
                  type: integer
                  description: |
                    Способ выбора модификаций товара на витрине: 0 — по названиям артикулов, 1 — по значениям характеристик
                  enum:
                    - 0
                    - 1
                stock_base_ratio:
                  type: number
                  description: Отношение складской единицы измерения количества к базовой
                order_count_step:
                  type: number
                  description: Значение изменения количества кнопками «+/-»
                order_count_min:
                  type: number
                  description: Минимальное количество для заказа
                skus:
                  type: object
                  additionalProperties: true
                  description: |
                    Информация о модификациях товара — для случая, если в параметре *sku_type* указано значение 0: ключи — ID модификаций, значения — подмассивы со значениями свойств модификаций
                    + **available** *int* Флаг доступности для заказа
                    + **status** *int* Флаг видимости на витрине
                    + **price** *float* Цена в формате `decimal(15,4)`
                    + **purchase_price** *float* Закупочная цена в формате `decimal(15,4)`
                    + **compare_price** *float* Зачеркнутая цена в формате `decimal(15,4)`
                    + **name** *string* Название
                    + **stock_base_ratio** *float* Соотношение складской и базовой единиц измерения количества в формате `decimal(16,8)`
                    + **order_count_min** *float* Минимальное количество для заказа в формате `decimal(15,4)`
                    + **order_count_step** *float* Значение изменения количества кнопками «+/-» в формате `decimal(15,4)`
                    + **stock** *array* Информация о складских остатках модификации; если склады не настроены, то массив может содержать 1 элемент с количеством модификации в формате `decimal(15,3)`; в противном случае ключи массива — ID складов, а значения — количество модификации на каждом складе в формате `decimal(15,3)`
                    + **features** *array* Значения характеристик в параметрах модификации. Ключи массива — строковые идентификаторы характеристик, значения массива — значения характеристик
                features:
                  type: object
                  additionalProperties: true
                  description: |
                    Значения характеристик: ключи — строковые идентификаторы характеристик, значения имеют различный формат для разных типов характеристик
                    + **одиночное текстовое или числовое значение**: значение характеристики
                    + **несколько текстовых или числовых значений**: массив значений
                    + **одиночное редактируемое числовое значение с единицей измерения**: объект с ключами '*value*' (редактируемое значение характеристики), '*unit*' (ключ локализации названия единицы измерения)
                    + **одиночное числовое значение с единицей измерения, выбираемое из списка**: значение характеристики и локализованное обозначение единицы, разделенные пробелом
                    + **несколько числовых значений с единицами измерения**: массив строк, каждая из которых представляет собой значение характеристики и локализованное обозначение единицы, разделенные пробелом
                    + **габариты вида значение × значение (× значение)**: объект с ключами '*идентификатор характеристики.0[value]*' (1-е измерение габаритов), '*идентификатор характеристики.1[value]*' (2-е измерение габаритов), '*идентификатор характеристики.2[value]*' (3-е измерение габаритов, если используется), '*идентификатор характеристики.0[unit]*' (ключ локализации обозначения единицы измерения)
                    + **диапазон числовых значений**: объект с ключами '*value[begin]*' (начальное значение), '*value[end]*' (конечное значение), '*unit*' (ключ локализации обозначения единицы измерения, если используется)
                    + **одиночное значение цвета**: объект с ключами '*value*' (редактируемое название цвета), '*code*' (HTML-код цвета, начинающийся с символа #).
                    + **одиночное значение цвета, выбираемое из списка**: редактируемое название цвета
                    + **несколько значений цвета**: массив редактируемых названий цветов
                    + **переключатель «да/нет»**: 1 («да»), 0 («нет») или пустое значение (не указано)
                    + **дата**: строка в формате «*гггг-мм-дд*»
                categories:
                  type: array
                  description: ID категорий товара; первое значение сохранится в качестве ID основной категории товара
                  items:
                    type: integer
                tags:
                  description: Теги
                  oneOf:
                    - type: array
                      description: Названия тегов
                      items:
                        type: string
                    - type: string
                      description: Названия тегов, разделенные запятой
                params:
                  description: Дополнительные параметры; для удаления значений всех параметров передайте `null`
                  oneOf:
                    - type: object
                      description: |
                        Словарь в формате «*имя_параметра: значение*»
                    - type: string
                      description: Строка вида '*имя_параметра1=значение1\nимя_параметра2=значение2\n...*', в которой параметры отделены друг от друга символов новой строки
                sets:
                  type: array
                  description: Списки товара; товар исключается из списков, чьи ID не указаны в этом параметре
                  items:
                    oneOf:
                      - type: string
                        description: ID списка
                      - type: object
                        properties:
                          id:
                            type: string
                            description: ID списка
      responses:
        200:
          description: Информация о товаре.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'


#PUSHNOTIFICATION
  /shop.pushnotification.disable:
    post:
      summary: Отключает push-уведомления для указанного client_id.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.pushnotification.disable
        url: https://developers.webasyst.ru/api/explorer/shop/shop.pushnotification.disable/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                client_id:
                  type: integer
                  description: ID клиента пользователя, для которого нужно отключить уведомления
              required:
                - client_id
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: string
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.pushnotification.enable:
    post:
      summary: Включает push-уведомления о действиях с заказами в устройстве пользователя.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.pushnotification.enable
        url: https://developers.webasyst.ru/api/explorer/shop/shop.pushnotification.enable/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                client_id:
                  type: integer
                  description: Идентификатор клиента для отправки push-уведомлений
                shop_url:
                  type: string
                  format: uri
                  description: URL, через который пользователь мог ранее подписаться на получение push-уведомлений
                force:
                  type: integer
                  description: Флаг, требующий принудительно включить push-уведомления для указанного *client_id* без проверки того, подписался ли уже ранее этот пользователь на получение уведомлений. Если флаг не установлен, проверка выполняется и, если пользователь уже подписан, то возникает ошибка с возвратом информации об URL, по которому пользователь ранее был подписан. В противном случае проверка не выполняется, и пользователь принудительно подписывается на получение уведомлений; в качестве URL подписки указывается корневой URL аккаунта Webasyst.
                  enum:
                    - 0
                    - 1
              required:
                - client_id
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: string
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'


#RIGHTS
  /shop.rights:
    get:
      summary: Возвращает информацию о правах доступа текущего пользователя к приложению.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.rights
        url: https://developers.webasyst.ru/api/explorer/shop/shop.rights/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о правах доступа.
          content:
            application/json:
              schema:
                type: object
                properties:
                  backend:
                    type: integer
                    description: Доступ к панели правления магазина
                  orders:
                    type: integer
                    description: Доступ к заказам
                  customers:
                    type: integer
                    description: Доступ к покупателям
                  products:
                    type: integer
                    description: Доступ к товарам
                  services:
                    type: integer
                    description: Доступ к услугам
                  setscategories:
                    type: integer
                    description: Доступ к спискам и категориям
                  importexport:
                    type: integer
                    description: Доступ к импорту и экспорту
                  marketing:
                    type: integer
                    description: Доступ к инструментам маркетинга
                  setup_marketing:
                    type: integer
                    description: Доступ к настройкам маркетинга
                  reports:
                    type: integer
                    description: Доступ к отчетам
                  pages:
                    type: integer
                    description: Доступ к информационным страницам
                  design:
                    type: integer
                    description: Доступ к редактору дизайна
                  settings:
                    type: integer
                    description: Доступ к настройкам магазина
                  type.1:
                    type: integer
                    description: Доступ к типу товаров, id которого — 1
                  workflow_actions.process:
                    type: integer
                    description: Доступ к действию с заказами «В обработку»
                  workflow_actions.pay:
                    type: integer
                    description: Доступ к действию с заказами «Оплачен»
                  workflow_actions.initpay:
                    type: integer
                    description: Доступ к действию с заказами «Оплата на кассе»
                  workflow_actions.ship:
                    type: integer
                    description: Доступ к действию с заказами «Отправлен»
                  workflow_actions.refund:
                    type: integer
                    description: Доступ к действию с заказами «Возврат»
                  workflow_actions.edit:
                    type: integer
                    description: Доступ к действию с заказами «Редактировать»
                  workflow_actions.editcode:
                    type: integer
                    description: Доступ к действию с заказами «Изменить товарные коды»
                  workflow_actions.editshippingdetails:
                    type: integer
                    description: Доступ к действию с заказами «Изменить параметры доставки»
                  workflow_actions.delete:
                    type: integer
                    description: Доступ к действию с заказами «Удалить»
                  workflow_actions.restore:
                    type: integer
                    description: Доступ к действию с заказами «Восстановить»
                  workflow_actions.complete:
                    type: integer
                    description: Доступ к действию с заказами «Выполнен»
                  workflow_actions.message:
                    type: integer
                    description: Доступ к действию с заказами «Написать клиенту»
                  workflow_actions.comment:
                    type: integer
                    description: Доступ к действию с заказами «Добавить комментарий»
                  workflow_actions.settle:
                    type: integer
                    description: Доступ к действию с заказами «Объединить»
                  workflow_actions.cancel:
                    type: integer
                    description: Доступ к действию с заказами «Отменить»
                  workflow_actions.capture:
                    type: integer
                    description: Доступ к действию с заказами «Списать средства»
#SET
  /shop.set.add:
    post:
      summary: Добавляет новый список товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.set.add
        url: https://developers.webasyst.ru/api/explorer/shop/shop.set.add/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: ID списка
                name:
                  type: string
                  description: Название списка
              required:
                - id
                - name
      responses:
        200:
          description: Свойства добавленного списка.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductSetInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.set.delete:
    post:
      summary: Удаляет список товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.set.delete
        url: https://developers.webasyst.ru/api/explorer/shop/shop.set.delete/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                id:
                  type: string
                  description: ID списка
              required:
                - id
      responses:
        200:
          description: Успешное выполнение запроса.
          content:
            application/json:
              schema:
                type: boolean
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'


  /shop.set.getInfo:
    get:
      summary: Возвращает информацию о списке товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.set.getInfo
        url: https://developers.webasyst.ru/api/explorer/shop/shop.set.getInfo/
      parameters:
        - in: query
          name: id
          description: ID списка
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Свойства списка товаров.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductSetInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.set.getList:
    get:
      summary: Возвращает информацию обо всех списках товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.set.getList
        url: https://developers.webasyst.ru/api/explorer/shop/shop.set.getList/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о списках товаров.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ProductSetInfo'

  /shop.set.update:
    post:
      summary: Обновляет информацию о списке товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.set.update
        url: https://developers.webasyst.ru/api/explorer/shop/shop.set.update/
      parameters:
        - in: query
          name: id
          description: ID списка
          required: true
          schema:
            type: string
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Новое название списка
                id:
                  type: string
                  description: Новый ID списка, если нужно его изменить
              required:
                - name
      responses:
        200:
          description: Информация о списке.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductSetInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'


#SETTINGS
  /shop.settings.get:
    get:
      summary: Возвращает значения настроек магазина.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.settings.get
        url: https://developers.webasyst.ru/api/explorer/shop/shop.settings.get/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Значения настроек.
          content:
            application/json:
              schema:
                type: object
                properties:
                  version:
                    type: string
                    description: Номер версии
                  debug_mode:
                    type: boolean
                    description: Признак включенного режима отладки
                  default_currency:
                    type: string
                    description: ISO-код основной валюты
                  settings:
                    type: object
                    description: Основные настройки
                    properties:
                      name:
                        type: string
                        description: Название
                      email:
                        type: string
                        description: Email-адрес
                      phone:
                        type: string
                        description: Телефонный номер
                      country:
                        type: string
                        description: ISO-код страны
                      order_format:
                        type: string
                        description: Формат номеров заказов
                      order_noproduct_item_name:
                        type: string
                        description: Название товара в заказах на предоплату
                      use_gravatar:
                        type: integer
                        enum:
                          - 0
                          - 1
                        description: |
                          Признак использования изображений Gravatar
                          + **0**: не использовать
                          + **1**: использовать
                      map:
                        type: string
                        description: Идентификатор адаптера онлайн-карт
                      gravatar_default:
                        type: string
                        enum:
                          - custom
                          - mm
                          - identicon
                          - monsterid
                          - wavatar
                          - retro
                        description: |
                          Тип изображений покупателей, которые должны отображаться при отсутствии иконки Gravatar
                          + **custom**: стандартное
                          + **mm**: простая фигурка человека на сером фоне (одинаковая для всех покупателей)
                          + **identicon**: геометрический рисунок, генерируемый на основе email-адреса
                          + **monsterid**: автоматически сгенерированная фигурка монстра
                          + **wavatar**: сгенерированные лица с разным фоном
                          + **retro**: изображение лица в стиле старых компьютерных игр
                      require_captcha:
                        type: integer
                        enum:
                          - 0
                          - 1
                        description: |
                          Статус включенной капчи
                          + **0**: выключена
                          + **1**: включена
                      require_authorization:
                        type: integer
                        enum:
                          - 0
                          - 1
                        description: |
                          Требование авторизации покупателей для публикации отзывов о товарах
                          + **0**: не требовать
                          + **1**: требовать
                      allow_image_upload:
                        type: integer
                        enum:
                          - 0
                          - 1
                        description: |
                          Разрешение для покупателей загружать изображения к отзывам
                          + **0**: не разрешать
                          + **1**: разрешать
                      moderation_reviews:
                        type: integer
                        enum:
                          - 0
                          - 1
                        description: |
                          Необходимость модерации отзывов
                          + **0**: не требуется
                          + **1**: требуется
                      review_service_agreement:
                        type: string
                        nullable: true
                        enum:
                          - notice
                          - checkbox
                        description: |
                          Требование согласия с политикой обработки персональных данных при публикации отзывов
                          + *(пустое значение)* не требовать
                          + **notice**: показывать только подсказку со ссылкой на политику
                          + **checkbox**: предлагать включить обязательный флажок с подсказкой и ссылкой
                      review_service_agreement_hint:
                        type: string
                        description: Текст подсказки для варианта «предлагать включить обязательный флажок с подсказкой и ссылкой»
                      sort_order_items:
                        type: string
                        enum:
                          - user_cart
                          - sku_name
                          - sku_code
                        description: |
                          Сортировка товаров в заказах
                          + **user_cart**: по времени добавления в корзину
                          + **sku_name**: по наименованию
                          + **sku_code**: по коду артикула
                      merge_carts:
                        type: integer
                        enum:
                          - 0
                          - 1
                        description: |
                          Признак синхронизации товаров в корзине авторизованного покупателя на всех устройствах
                          + **0**: не синхронизировать
                          + **1**: синхронизировать
                      workhours:
                        type: object
                        description: График работы
                        properties:
                          hours_from:
                            type: string
                            description: Начало рабочего дня
                          hours_to:
                            type: string
                            description: Конец рабочего дня
                          days_from_to:
                            type: string
                            description: Сокращенное обозначение периода рабочих дней недели
                          days:
                            type: object
                            description: Список рабочих дней недели
                            properties:
                              1:
                                type: string
                                description: Сокращенное название понедельника
                              2:
                                type: string
                                description: Сокращенное название вторника
                              3:
                                type: string
                                description: Сокращенное название среды
                              4:
                                type: string
                                description: Сокращенное название четверга
                              5:
                                type: string
                                description: Сокращенное название пятницы
                              6:
                                type: string
                                description: Сокращенное название субботы
                              7:
                                type: string
                                description: Сокращенное название воскресенья
                  currencies:
                    type: object
                    description: Список настроенных валют
                  address_fields:
                    type: array
                    description: Идентификаторы полей адреса
                    items:
                      type: string
                  order_states:
                    type: array
                    description: Свойства статусов заказов
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: ID статуса
                        name:
                          type: string
                          description: Название
                        options:
                          type: object
                          description: Параметры
                          properties:
                            icon:
                              type: string
                              description: CSS-классы иконки
                            style:
                              type: object
                              description: Параметры оформления
                              properties:
                                color:
                                  type: string
                                  description: HTML-обозначение цвета
                                font-weight:
                                  type: string
                                  description: Значение CSS-свойства `font-weight`
                        available_actions:
                          type: array
                          description: Идентификаторы доступных действий с заказами
                          items:
                            type: string
                  server_time:
                    type: string
                    format: date-time
                    description: Текущие дата и время на сервере
                  user_info:
                    type: object
                    description: Свойства пользователя
                    properties:
                      id:
                        type: integer
                        description: ID пользователя
                      name:
                        type: string
                        description: Полное имя
                      photo:
                        type: string
                        description: Относительный URL изображения размером 50х50 пикселей
                  storefronts:
                    type: array
                    description: Свойства витрин
                    items:
                      type: object
                      properties:
                        domain:
                          type: string
                          description: Домен
                        route:
                          type: object
                          description: Свойства поселения
                          properties:
                            url:
                              type: string
                              description: Адрес, указанный в настройках структура сайта
                            app:
                              type: string
                              description: Идентификатор приложения
                            theme:
                              type: string
                              description: Идентификатор основной темы дизайна
                            theme_mobile:
                              type: string
                              description: Идентификатор темы дизайна для мобильных устройств
                            checkout_version:
                              type: integer
                              enum:
                                - 2
                                - 1
                              description: |
                                Версия режима оформления заказа
                                + **2**: оформление заказа в корзине
                                + **1**: пошаговое оформление заказа
                            locale:
                              type: string
                              description: Идентификатор языковой локали
                            title:
                              type: string
                              description: Значение элемента TITLE для главной страницы витрины
                            meta_keywords:
                              type: string
                              description: Значение атрибута META keywords для главной страницы витрины
                            meta_description:
                              type: string
                              description: Значение атрибута META description для главной страницы витрины
                            og_title:
                              type: string
                              description: Значение свойства *title* главной страницы витрины для соцсетей
                            og_image:
                              type: string
                              description: Значение свойства *image* главной страницы витрины для соцсетей
                            og_video:
                              type: string
                              description: Значение свойства *video* главной страницы витрины для соцсетей
                            og_description:
                              type: string
                              description: Значение свойства *description* главной страницы витрины для соцсетей
                            og_type:
                              type: string
                              description: Значение свойства *type* главной страницы витрины для соцсетей
                            og_url:
                              type: string
                              description: Значение свойства *url* главной страницы витрины для соцсетей
                            url_type:
                              type: string
                              enum:
                                - 0
                                - 1
                                - 2
                              description: |
                                Тип адресов товаров
                                + **0**: смешанный
                                + **1**: плоский
                                + **2**: естественный
                            products_per_page:
                              type: integer
                              description: Максимальное количество товаров для отображения на одной странице
                            type_id:
                              description: Типы отображаемых товаров; или *0*, если отображаются товары всех типов
                              oneOf:
                                - type: integer
                                - type: array
                                  items:
                                    type: integer
                            currency:
                              type: string
                              description: ISO-код валюты по умолчанию
                            stock_id:
                              description: Идентификатор основного склада
                              oneOf:
                                - type: string
                                - type: integer
                            public_stocks:
                              description: Идентификаторы видимых складов; или *0*, если видны все склады
                              oneOf:
                                - type: integer
                                - type: array
                                  items:
                                    type: integer
                            drop_out_of_stock:
                              type: integer
                              enum:
                                - 0
                                - 1
                              description: |
                                Необходимость скрывать из списков товары, отсутствующие на складе
                                + **0**: не скрывать
                                + **1**: скрывать
                            payment_id:
                              description: ID доступных способов оплаты; или *0*, если доступны все способы
                              oneOf:
                                - type: integer
                                - type: array
                                  items:
                                    type: integer
                            shipping_id:
                              description: ID доступных способов доставки; или *0*, если доступны все способы
                              oneOf:
                                - type: integer
                                - type: array
                                  items:
                                    type: integer
                            checkout_storefront_id:
                              type: string
                              description: ID витрины для оформления заказа в корзине
                        url:
                          type: string
                          description: Адрес витрины, составленный из домена и редактируемой части адреса
                        url_decoded:
                          type: string
                          description: Адрес витрины, составленный из домена и редактируемой части адреса, раскодированный из формата Punycode
                  ignore_stock_count:
                    type: integer
                    enum:
                      - 1
                      - 0
                    description: |
                      Проверка наличия товаров на складе
                      + **1**: наличие не проверяется
                      + **0**: наличие проверяется
                  stock_counting_action:
                    type: string
                    enum:
                      - create
                      - processing
                      - none
                    description: |
                      ID действия, при выполнении которого списываются складские остатки заказанных товаров
                      + **create**: заказ оформлен
                      + **processing**: заказ подтвержден и принят в обработку
                      + **none**: не обновляется действиями с заказами
                  server_timezone:
                    type: string
                    description: Идентификатор часового пояса магазина
                  server_timezone_shift:
                    type: integer
                    description: Количество секунд, соответствующее разнице во времени между часовым поясом магазина и временем UTC
                  onboarding_passed:
                    type: boolean
                    description: Признак пройденной быстрой настройки магазина
                  frac_enabled:
                    type: boolean
                    description: Признак доступности использования дробного количества товаров
                  stock_units_enabled:
                    type: boolean
                    description: Признак доступности использования складских единиц количества товаров
                  base_units_enabled:
                    type: boolean
                    description: Признак доступности использования базовых единиц количества товаров

  /shop.settings.getContactFields:
    get:
      summary: Возвращает список контактных полей из настроек пошагового оформления заказа.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.settings.getContactFields
        url: https://developers.webasyst.ru/api/explorer/shop/shop.settings.getContactFields/
      parameters:
        - in: query
          name: customer_fields
          description: Флаг, требующий вернуть только контактные поля, включенные в настройках оформления заказа (по умолчанию метод возвращает список всех контактных полей, доступных в настройках оформления заказа)
          required: false
          schema:
            type: integer
            enum:
              - 0
              - 1
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список контактных полей.
          content:
            application/json:
              schema:
                type: object
                properties:
                  fields:
                    type: array
                    description: Свойства полей
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                          description: ID поля
                        name:
                          type: string
                          description: Название
                        multi:
                          type: boolean
                          description: Признак возможности выбора нескольких значений
                        type:
                          type: string
                          description: Тип
                        unique:
                          type: boolean
                          description: Признак возможности ввода только уникальных значений
                        required:
                          type: boolean
                          description: Признак поля, обязательного для заполнения
                        input_height:
                          type: integer
                          description: Количество строк, доступных для ввода значения
                        options:
                          type: object
                          description: Доступные для выбора значения
                        oOrder:
                          type: array
                          description: Идентификаторы доступных для выбора значений, отсортированные в нужном порядке
                          items:
                            type: string
                        defaultOption:
                          type: string
                          nullable: true
                          description: Значение по умолчанию
                        ext:
                          type: object
                          description: Дополнительные типы значений
                        fields:
                          type: object
                          description: Свойства дочерних полей

  /shop.settings.getRegions:
    get:
      summary: Возвращает список регионов стран.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.settings.getRegions
        url: https://developers.webasyst.ru/api/explorer/shop/shop.settings.getRegions/
      parameters:
        - in: query
          name: country
          description: ISO-код страны, регионы которой нужно получить (по умолчанию возвращается информация о регионах всех стран)
          required: false
          schema:
            type: string
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список регионов.
          content:
            application/json:
              schema:
                type: object

  /shop.settings.getPaymentTypes:
    get:
      summary: Возвращает информацию об активных способах оплаты.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.settings.getPaymentTypes
        url: https://developers.webasyst.ru/api/explorer/shop/shop.settings.getPaymentTypes/
      parameters:
        - in: query
          name: pos
          description: Флаг для получения способов оплаты только для кассового аппарата, т. е. поддерживающих физический платежный терминал или оплату по QR-коду.
          required: false
          schema:
            type: integer
            default: 0
            enum:
              - 0
              - 1
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о способах оплаты.
          content:
            application/json:
              schema:
                type: object
                properties:
                  methods:
                    description: Свойства способов оплаты
                    allOf:
                      - type: object
                      - type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: ID способа оплаты
                            plugin:
                              type: string
                              description: ID платежного плагина
                            name:
                              type: string
                              description: Название
                            description:
                              type: string
                              description: Описание
                            logo:
                              type: string
                              format: uri
                              description: URL иконки
                            plugin_type:
                              type: string
                              enum:
                                - manual
                                - card
                                - online
                              description: |
                                Тип плагина оплаты
                                + **manual**: ручной прием оплаты
                                + **card**: оплата банковской картой
                                + **online**: онлайн-оплата
                            pos_enabled:
                              type: boolean
                              description: Признак поддержки кассового аппарата

  /shop.settings.getShippingTypes:
    get:
      summary: Возвращает информацию об активных способах доставки.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.settings.getShippingTypes
        url: https://developers.webasyst.ru/api/explorer/shop/shop.settings.getShippingTypes/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о способах доставки.
          content:
            application/json:
              schema:
                type: object
                properties:
                  methods:
                    description: Свойства способов доставки
                    allOf:
                      - type: object
                      - type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: integer
                              description: ID способа доставки
                            plugin:
                              type: string
                              description: ID плагина доставки
                            name:
                              type: string
                              description: Название
                            description:
                              type: string
                              description: Описание
                            logo:
                              type: string
                              format: uri
                              description: URL иконки
                            plugin_type:
                              type: string
                              enum:
                                - manual
                                - card
                                - online
                              description: |
                                Тип плагина доставки
                                + **todoor**: доставка до двери (курьер)
                                + **pickup**: доставка до одного из пунктов самовывоза
                                + **post**: почтовая доставка по адресу

  /shop.settings.getProductCodes:
    get:
      summary: Возвращает информацию о настроенных товарных кодах (например, для маркировки «Честный Знак»).
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.settings.getProductCodes
        url: https://developers.webasyst.ru/api/explorer/shop/shop.settings.getProductCodes/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о товарных кодах.
          content:
            application/json:
              schema:
                type: object
                properties:
                  codes:
                    type: array
                    description: Свойства кодов
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: Числовой ID
                        code:
                          type: string
                          description: Идентификатор
                        name:
                          type: string
                          description: Название
                        icon:
                          type: string
                          description: Относительный URL иконки
                        logo:
                          type: string
                          description: Относительный URL логотипа плагина
                        protected:
                          type: integer
                          description: |
                            Признак «защищенного» кода, идентификатор которого нельзя изменять и который нельзя удалять, если установлен и активен использующий его плагин
                            + **0**: не защищен
                            + **1**: защищен
                          enum:
                            - 0
                            - 1
                        plugin_id:
                          type: string
                          description: ID плагина, использующего код
                        type_ids:
                          type: array
                          description: ID типов товаров, для которых доступен код
                          items:
                            type: integer


  /shop.settings.getStockUnits:
    get:
      summary: Возвращает информацию о настроенных единицах измерения
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.settings.getStockUnits
        url: https://developers.webasyst.ru/api/explorer/shop/shop.settings.getStockUnits/
      parameters:
        - in: query
          name: active_only
          description: |
            Показывать ли все настроенные единицы измерения, в том числе выключенные (0) или только доступные (1).
            + **1**: Только доступные
            + **0**: Все
          required: false
          schema:
            type: string
            default: 1
            enum:
              - 1
              - 0
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о единицах измерения.
          content:
            application/json:
              schema:
                type: array
                description: Свойства единиц
                items:
                  $ref: '#/components/schemas/QuantityUnitInfo'

  /shop.settings.onboard:
    post:
      summary: Выполняет первоначальную настройку магазина с демоданными.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.settings.onboard
        url: https://developers.webasyst.ru/api/explorer/shop/shop.settings.onboard/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                currency:
                  type: string
                  description: ISO-код основной валюты магазина
                country:
                  type: string
                  description: ISO-код страны магазина (это влияет на первоначальную настройку некоторых параметров, например, налогов)
                demo_db:
                  type: integer
                  description: |
                    Идентификатор набора демотоваров, которыми нужно наполнить магазин
                    + **1**: свет и электротовары
                    + **2**: одежда и обувь
                    + **3**: бытовая техника
                    + **4**: мобильные телефоны и планшеты
                    + **5**: косметика
                shop_name:
                  type: string
                  description: Название магазина
                shop_phone:
                  type: string
                  description: Телефонный номер магазина, публикуется на витрине и добавляется в текст email-уведомлений
                shop_email:
                  type: string
                  description: Основной email-адрес магазина, используется в качестве адреса отправителя уведомлений и также является адресом администратора для отправки ему уведомлений о заказах
              required:
                - currency
                - country
      responses:
        200:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.

#STOCK
  /shop.stock.getInfo:
    get:
      summary: Возвращает информацию о складе.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.stock.getInfo
        url: https://developers.webasyst.ru/api/explorer/shop/shop.stock.getInfo/
      parameters:
        - in: query
          name: id
          description: ID склада
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Свойства склада.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StockInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.stock.getList:
    get:
      summary: Возвращает список всех складов.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.stock.getList
        url: https://developers.webasyst.ru/api/explorer/shop/shop.stock.getList/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список складов.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/StockInfo'

#TAG
  /shop.tag.getList:
    get:
      summary: Возвращает список тегов товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.tag.getList
        url: https://developers.webasyst.ru/api/explorer/shop/shop.tag.getList/
      parameters:
        - in: query
          name: limit
          description: Максимальное количество тегов, которые нужно получить
          required: false
          schema:
            type: integer
            default: 100
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Список тегов товаров.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  properties:
                    id:
                      type: integer
                      description: ID тега
                    name:
                      type: string
                      description: Название
                    count:
                      type: integer
                      description: Количество связанных с тегом товаров
                    size:
                      type: number
                      description: Размер шрифта в процентах для отображения названия тега в облаке
                    opacity:
                      type: number
                      description: Значение CSS-свойства `opacity` для отображения названия тега в облаке
                    uri_name:
                      type: string
                      description: Уникальная часть URL тега

#TYPE
  /shop.type.getInfo:
    get:
      summary: Возвращает информацию о типе товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.type.getInfo
        url: https://developers.webasyst.ru/api/explorer/shop/shop.type.getInfo/
      parameters:
        - in: query
          name: id
          description: ID типа товаров
          required: true
          schema:
            type: integer
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Свойства типа товаров.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductTypeInfo'

        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invalidResponse'

  /shop.type.getList:
    get:
      summary: Возвращает информацию обо всех типах товаров.
      security:
        - ApiKeyAuth: []
      externalDocs:
        description: shop.type.getList
        url: https://developers.webasyst.ru/api/explorer/shop/shop.type.getList/
      parameters:
        - $ref: '#/components/parameters/requestFormat'
      responses:
        200:
          description: Информация о типах товаров.
          content:
            application/json:
              schema:
                type: array
                description: Свойства типов товаров
                items:
                  $ref: '#/components/schemas/ProductTypeInfo'

components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: query
      name: access_token
  schemas:
    invalidResponse:
      type: object
      properties:
        error:
          type: string
          description: Код ошибки
        error_description:
          type: string
          description: Описание ошибки
    orderItems:
      type: array
      description: |
        Список заказываемых модификаций товаров. Каждая позиция заказа должна содержать значения со следующими ключами: *sku_id* (ID модификации товара), *quantity* (необязательное количество; по умолчанию 1); *services* (необязательная информация об услугах, которые нужно применить к модификациям товаров; каждой услуге соответствует объект с единственным ключом *service_variant_id*, содержащим нужный ID варианта услуг)
      items:
        type: object
        properties:
          sku_id:
            type: integer
            description: ID модификации товара
          quantity:
            type: number
            description: Количество модификации
            default: 1
          services:
            type: array
            description: Массив услуг товара
            items:
              type: object
              properties:
                service_variant_id:
                  description: ID варианта услуги
                  type: integer
    ProductCategoryInfo:
      type: object
      properties:
        id:
          type: integer
          description: ID категории
        left_key:
          type: integer
          description: ID предыдущей категории в структуре иерархии
        right_key:
          type: integer
          description: ID следующей категории в структуре иерархии
        depth:
          type: integer
          description: Уровень в структуре иерархии
        parent_id:
          type: integer
          description: ID родительской категории
        name:
          type: string
          description: Название
        meta_title:
          type: string
          description: Элемент TITLE страницы категории
        meta_keywords:
          type: string
          description: Значение атрибута META keywords
        meta_description:
          type: string
          description: Значение атрибута META description
        type:
          type: integer
          enum:
            - 0
            - 1
          description: |
            Тип
            + **0**: статическая
            + **1**: динамическая
        url:
          type: string
          format: uri
          description: Редактируемая часть URL страницы категории
        full_url:
          type: string
          format: uri
          description: Относительный URL категории с учетом URL родительских категорий
        count:
          type: integer
          description: Количество товаров, для которых (статическая) категория является основной
        description:
          type: string
          description: Описание
        conditions:
          type: string
          description: Условия формирования списка товаров в (динамической) категории
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        edit_datetime:
          type: string
          format: date-time
          description: Дата и время последнего обновления
        filter:
          type: string
          description: |
            Информация о настройках фильтра товаров в категории в виде идентификаторов полей, разделенных запятой: числовых ID характеристик товаров и строки '*price*' (фильтр по цене)
        sort_products:
          type: string
          description: Правило сортировки товаров по умолчанию
        include_sub_categories:
          type: boolean
          description: Признак отображения в категории товаров из ее подкатегорий
        status:
          type: integer
          enum:
            - 0
            - 1
          description: |
            Статус
            + **0**: скрытая
            + **1**: видимая
    CustomerList:
      type: object
      properties:
        offset:
          type: integer
          description: Смещение относительно начала отфильтрованного списка контактов
        limit:
          type: integer
          description: Максимальный размер требуемого списка контактов
        sort:
          type: string
          description: Обозначение сортировки контактов
        count:
          type: integer
          description: Количество найденных контактов
        customers:
          type: array
          description: Массив покупателей
          items:
            $ref: '#/components/schemas/CustomerInfo'
    CustomerInfo:
      type: object
      properties:
        id:
          type: integer
          description: ID контакта
        contact_id:
          type: integer
          description: ID контакта
        name:
          type: string
          description: Полное имя
        title:
          type: string
          description: Обращение
          nullable: true
        firstname:
          type: string
          description: Краткое имя
          nullable: true
        middlename:
          type: string
          description: Отчество
          nullable: true
        lastname:
          type: string
          description: Фамилия
          nullable: true
        company:
          type: string
          description: Название компании
          nullable: true
        company_contact_id:
          type: integer
          description: ID компании
          nullable: true
        jobtitle:
          type: string
          description: Должность
          nullable: true
        email:
          type: array
          description: Email-адреса
          items:
            type: string
        phone:
          type: array
          description: Телефонные номера
          items:
            $ref: '#/components/schemas/CustomerInfoContactField'
        url:
          type: array
          description: Адреса сайтов
          items:
            $ref: '#/components/schemas/CustomerInfoContactField'
        address:
          type: array
          description: Почтовые адреса
          items:
            $ref: '#/components/schemas/ContactFieldAddress'
        socialnetwork:
          type: array
          description: Аккаунты в соцсетях
          items:
            $ref: '#/components/schemas/CustomerInfoContactField'
        im:
          type: array
          description: Аккаунты в мессенджерах
          items:
            $ref: '#/components/schemas/CustomerInfoContactField'
        about:
          type: string
          description: Описание
          nullable: true
        locale:
          type: string
          description: Обозначение локали
          nullable: true
        sex:
          type: string
          description: |
            Обозначение пола
            + **m**: мужской
            + **f**: женский
          nullable: true
          enum:
            - m
            - f
        timezone:
          type: string
          description: Часовой пояс
          nullable: true
        is_company:
          type: boolean
          description: Признак того, что контакт является компанией (не персоной)
        is_user:
          type: boolean
          description: Признак того, что контакт является сотрудником с правами доступа
        is_staff:
          type: boolean
          description: Признак того, что контакт является сотрудником, независимо от наличия прав доступа
        login:
          type: string
          description: Имя для входа (только для сотрудников)
          nullable: true
        last_datetime:
          type: string
          format: date-time
          description: Дата и время последней авторизации
          nullable: true
        birth_day:
          type: integer
          description: День даты рождения
          nullable: true
        birth_month:
          type: integer
          description: Номер месяца даты рождения
          nullable: true
        birth_year:
          type: integer
          description: Год даты рождения
          nullable: true
        photo:
          type: integer
          description: ID изображения
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        create_app_id:
          type: string
          description: ID приложения, с помощью которого был создан контакт
        create_method:
          type: string
          description: ID метода приложения, с помощью которого был создан контакт
        create_contact_id:
          type: integer
          description: ID сотрудника, который создал контакт
        total_spent:
          type: number
          description: Сумма всех оплаченных заказов покупателя в основной валюте магазина
        affiliate_bonus:
          type: number
          description: Количество бонусов в рамках партнерской программы
        number_of_orders:
          type: integer
          description: Количество оформленных заказов
        last_order_id:
          type: integer
          description: последнего оформленного заказа
        source:
          type: string
          description: Источник привлечения покупателя
        _online_status:
          type: string
          description: Онлайн-статус
        photo_url_40:
          type: string
          format: uri
          description: URL изображения размером 40х40 пикселей
        photo_url_96:
          type: string
          format: uri
          description: URL изображения размером 96х96 пикселей
        contact_type:
          type: array
          description: Тип покупателя
          items:
            $ref: '#/components/schemas/CustomerInfoContactField'
        email_confirmed:
          type: array
          description: Подтвержденные email-адреса
          items:
            $ref: '#/components/schemas/CustomerInfoContactField'
        phone_confirmed:
          type: array
          description: Подтвержденные телефонные номера
          items:
            $ref: '#/components/schemas/CustomerInfoContactField'
    CustomerInfoContactField:
      type: object
      properties:
        value:
          type: string
          description: Значение
        formatted:
          type: string
          description: Отформатированное значение
        ext:
          type: string
          description: Обозначение типа
        status:
          type: string
          description: Статус
    ContactFieldAddress:
      type: object
      properties:
        data:
          type: object
          description: Поля адреса
          properties:
            street:
              type: string
              description: Улица, дом, квартира
            city:
              type: string
              description: Населенный пункт
            zip:
              type: string
              description: Почтовый индекс
            region:
              type: string
              description: Код региона
            country:
              type: string
              description: ISO-код страны
        ext:
          type: string
          description: Обозначение типа
        status:
          type: string
          description: Статус
          nullable: true
    DashboardCustomersByDayEntry:
      type: object
      properties:
        date:
          type: string
          description: Дата, соответствующая отдельному дню, в формате «гмд»
        new:
          type: integer
          description: Количество новых покупателей, созданных в течение этого дня
        total:
          type: integer
          description: Количество новых покупателей, созданных начиная с указанной даты и до данного дня включительно
    DashboardSales:
      allOf:
        - type: object
          properties:
            totals:
              type: object
              description: Сводная информация о продажах за указанный период
              properties:
                total_customer_count:
                  type: integer
                  description: Общее количество покупателей, оформивших заказы за указанный период
                order_count:
                  type: integer
                  description: Количество полученных заказов
                new_customer_count:
                  type: integer
                  description: Количество покупателей, оформивших свой первый заказ, который был оплачен или выполнен
                profit:
                  type: number
                  description: Прибыль
                sales:
                  type: number
                  description: Выручка
                purchase:
                  type: number
                  description: Закупочная стоимость заказанных товаров
                shipping:
                  type: number
                  description: Стоимости доставки заказов
                tax:
                  type: number
                  description: Размер налогов, рассчитанных для заказанных товаров
                cost:
                  type: number
                  description: Стоимость затрат на маркетинг
                total_days:
                  type: integer
                  description: Количество дней начиная с даты первого оформленного заказа
                customer_count:
                  type: integer
                  description: Количество покупателей, оформивших заказы
                paid_customer_count:
                  type: integer
                  description: Количество покупателей, оформивших оплаченные заказы
                products:
                  type: integer
                  description: Количество товаров в каталоге магазина
            avg_order_sales:
              type: number
              description: Средняя выручка от заказа
            avg_order_profit:
              type: number
              description: Средняя прибыль от заказа
            arpu:
              type: number
              description: Значение показателя ARPU
            ampu:
              type: number
              description: Значение показателя AMPU
            roi:
              type: number
              description: Значение показателя ROI
            cac:
              type: number
              description: Значение показателя CAC
            ltv:
              type: number
              description: Значение показателя LTV
        - $ref: '#/components/schemas/DashboardSalesByHour'
        - $ref: '#/components/schemas/DashboardSalesByDay'
    DashboardSalesByHour:
      type: object
      properties:
        by_hour:
          type: array
          description: Информация о продажах по часам
          items:
            $ref: '#/components/schemas/DashboardSalesEntry'
    DashboardSalesByDay:
      type: object
      properties:
        by_day:
          type: array
          description: Информация о продажах по дням
          items:
            $ref: '#/components/schemas/DashboardSalesEntry'
    DashboardSalesEntry:
      allOf:
        - type: object
          properties:
            order_count:
              type: integer
              description: Количество оформленных заказов
            new_customer_count:
              type: integer
              description: Количество покупателей, оформивших свой первый заказ в течение данного часа, который был оплачен или выполнен
            profit:
              type: number
              description: Прибыль за час
            sales:
              type: number
              description: Выручка за час
            purchase:
              type: number
              description: Закупочная стоимость заказанных товаров
            shipping:
              type: number
              description: Стоимость доставки в оформленных заказах
            tax:
              type: number
              description: Размер налогов, рассчитанный для заказанных товаров
            cost:
              type: number
              description: Стоимость затрат на маркетинг
        - $ref: '#/components/schemas/DashboardSalesEntryDate'
        - $ref: '#/components/schemas/DashboardSalesEntryDateTime'
    DashboardSalesEntryDate:
      type: object
      properties:
        date:
          type: string
          format: date
          description: Дата очередного дня указанного периода
    DashboardSalesEntryDateTime:
      type: object
      properties:
        datetime:
          type: string
          format: date-time
          description: Дата и время начала очередного часа указанного периода
    FeatureInfo:
      type: object
      properties:
        id:
          type: integer
          description: ID характеристики
        parent_id:
          type: integer
          nullable: true
          description: ID родительской характеристики
        code:
          type: string
          description: Редактируемый идентификатор
        name:
          type: string
          description: Название
        status:
          type: string
          description: |
            Статус видимости на витрине
            + **private**: не видна
            + **public**: видна
          enum:
            - private
            - public
        type:
          type: string
          description: |
            Тип
            + **varchar**: строка текста
            + **double**: число
            + **text**: многострочный текст
            + **date**: дата
            + **dimension**: число с единицей измерения
            + **range**: диапазон
            + **2d**: габариты «число × число»
            + **3d**: габариты «число × число × число»
            + **boolean**: переключатель «да/нет»
            + **color**: цвет
            + **divider**: заголовок группы характеристик
        selectable:
          type: integer
          enum:
            - 0
            - 1
          description: Флаг, позволяющий выбирать из нескольких заранее установленных значений характеристики
        multiple:
          type: integer
          enum:
            - 0
            - 1
          description: Флаг, позволяющий одновременно выбирать более одного значения характеристики в свойствах товаров
        available_for_sku:
          type: integer
          enum:
            - 0
            - 1
          description: Флаг, позволяющий редактировать значения характеристики в свойствах модификаций товаров
        default_unit:
          type: string
          description: Единица измерения по умолчанию (для характеристик типа *dimension*)
        builtin:
          type: integer
          description: |
            Признак встроенной (системной) характеристики
            + **0**: обычная
            + **1**: системная
          enum:
            - 0
            - 1
        count:
          type: integer
          description: Количество товаров с этой характеристикой
        values:
          type: array
          description: Доступные для выбора значения
          items:
            allOf:
              - type: string
              - type: integer
              - type: object
                properties:
                  id:
                    type: integer
                    description: ID значения
                  feature_id:
                    type: integer
                    description: ID характеристики
                  sort:
                    type: integer
                    description: Значение сортировки
                  code:
                    type: integer
                    description: Код значения цвета
                  value:
                    type: string
                    description: Текстовое значение
    OrderActionInfo:
      type: object
      properties:
        id:
          type: string
          description: ID действия
        name:
          type: string
          description: Название
        type:
          type: string
          description: |
            Тип интерфейсного элемента
            + **button**: кнопка
            + **link_top**: ссылка в верхней части страницы заказа
            + **link_bottom**: ссылка в нижней части страницы заказа
            + **link_head**: ссылка в заголовочной части страницы заказа
          enum:
            - button
            - link_top
            - link_bottom
            - link_head
        is_custom:
          type: boolean
          description: Признак действия, добавленного пользователем в настройках магазина
        data_required:
          type: boolean
          description: Признак необходимости ввода данных пользователем при выполнении действия
        color:
          type: string
          description: HTML-значение цвета
        options:
          type: object
          description: Параметры действия
          properties:
            contact_phone:
              type: string
              description: Телефонный номер клиента
            contact_phone_formatted:
              type: string
              description: Форматированный телефонный номер клиента
            contact_email:
              type: string
              description: Email-адрес клиента
            order_source:
              type: string
              description: Описание источника заказа
            senders:
              type: array
              description: Информация о доступных отправителях
              items:
                $ref: '#/components/schemas/SenderInfo'
    SenderInfo:
      type: object
      properties:
        transport:
          type: string
          description: Тип транспорта отправки сообщений
        sender:
          type: string
          description: ID отправителя
        source:
          type: string
          nullable: true
          description: Источник заказов, для которого доступен отправитель
    OrderInfo:
      type: object
      properties:
        id:
          type: integer
          description: ID заказа
        contact_id:
          type: integer
          description: ID покупателя
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        update_datetime:
          type: string
          format: date-time
          description: Дата и время последнего обновления
        state_id:
          type: string
          description: ID статуса
        total:
          type: number
          description: Итого
        currency:
          type: string
          description: ISO-код валюты
        rate:
          type: number
          description: Курс валюты заказа по отношению к основной валюте магазина
        tax:
          type: number
          description: Рассчитанный размер налога
        shipping:
          type: number
          description: Стоимость доставки
        discount:
          type: number
          description: Рассчитанный размер скидки
        paid_year:
          type: integer
          nullable: true
          description: Год даты оплаты заказа
        paid_quarter:
          type: integer
          nullable: true
          description: Квартал даты оплаты заказа
        paid_month:
          type: integer
          nullable: true
          description: Номер месяца даты оплаты заказа
        paid_date:
          type: integer
          nullable: true
          description: Число даты оплаты заказа
        paid_datetime:
          type: string
          format: date-time
          nullable: true
          description: Дата и время оплаты заказа
        auth_date:
          type: string
          format: date-time
          nullable: true
          description: Дата блокировки средств для двухстадийной оплаты заказа
        is_first:
          type: integer
          description: Признак первого оплаченного заказа покупателя
          enum:
            - 0
            - 1
        unsettled:
          type: integer
          description: Признак подвешенного заказа
          enum:
            - 0
            - 1
        comment:
          type: string
          description: Комментарий к заказу
        shipping_datetime:
          type: string
          format: date-time
          description: Дата и время, соответствующие концу периода времени, выбранному в поле «Доставка курьером» при выполнении действия «Изменить параметры доставки»
        courier_contact_id:
          type: integer
          nullable: true
          description: ID сотрудника, выбранного в качестве курьера
        contact:
          $ref: '#/components/schemas/OrderInfoCustomer'
        items:
          type: array
          description: Свойства позиций заказа
          items:
            $ref: '#/components/schemas/OrderItemInfo'
        items_total_discount:
          type: integer
          description: Суммарный размер скидки, рассчитанный для заказанных товаров и услуг
        params:
          type: object
          description: Дополнительные параметры
        id_encoded:
          type: string
          description: Форматированный номер заказа

    OrderInfoCustomer:
      type: object
      description: Свойства покупателя
      properties:
        id:
          type: integer
          description: ID контакта
        name:
          type: string
          description: Имя
        email:
          type: string
          description: Email-адрес
        phone:
          type: string
          description: Телефонный номер
        is_company:
          type: boolean
          description: Признак покупателя-компании
        photo_50x50:
          type: string
          format: uri
          description: URL изображения
    OrderActionResult:
      type: object
      description: Результат выполнения действия
      properties:
        order_id:
          type: integer
          description: ID заказа
        action_id:
          type: string
          description: ID действия
        before_state_id:
          type: string
          description: ID статуса заказа до выполнения действия
        after_state_id:
          type: string
          description: ID статуса заказа после выполнения действия
        id:
          type: integer
          description: ID записи в истории действий с заказами
        text:
          type: string
          description: Текст, введенный пользователем при выполнении действия
        params:
          type: object
          description: Дополнительные параметры действия
          properties:
            tracking_number:
              type: string
              description: Идентификатор отправления
        update:
          type: object
          description: Информация об обновлении заказа
          properties:
            update_datetime:
              type: string
              format: date-time
              description: Дата и время обновления
            paid_year:
              type: integer
              nullable: true
              description: Год даты оплаты
            paid_quarter:
              type: integer
              nullable: true
              description: Квартал даты оплаты
            paid_month:
              type: integer
              nullable: true
              description: Номер месяца даты оплаты
            paid_date:
              type: integer
              nullable: true
              description: Число даты оплаты
            paid_datetime:
              type: string
              format: date-time
              nullable: true
              description: Дата и время оплаты
            is_first:
              type: integer
              description: Признак первого оплаченного заказа покупателя
              enum:
                - 0
                - 1
            params:
              type: object
              description: Дополнительные параметры
              properties:
                tracking_number:
                  type: string
                  description: Идентификатор отправления
    PaymentLinkInfo:
      type: object
      properties:
        storefront_url:
          type: string
          description: Адрес витрины
        storefront_url_decoded:
          type: string
          description: Адрес витрины, перекодированный из Punycode
        payment_url:
          type: string
          format: uri
          description: URL ссылки для оплаты заказа
    OrderLogEntry:
      type: object
      properties:
        id:
          type: integer
          description: ID записи
        order_id:
          type: integer
          description: ID заказа
        contact_id:
          type: integer
          description: ID покупателя
        action_id:
          type: string
          description: ID выполненного действия
        datetime:
          type: string
          format: date-time
          description: Дата и время выполнения действия
        before_state_id:
          type: string
          description: ID статуса заказа до выполнения действия
        after_state_id:
          type: string
          description: ID статуса заказа после выполнения действия
        text:
          type: string
          description: Подробное описание действия (HTML)
        log_record:
          type: string
          description: Краткое описание действия
        action_name:
          type: string
          description: Локализованное название действия
        params:
          type: object
          description: Параметры действия
        contact_name:
          type: string
          description: Полное имя покупателя
        contact_firstname:
          type: string
          description: Краткое имя покупателя
        contact_middlename:
          type: string
          description: Отчество покупателя
        contact_lastname:
          type: string
          description: Фамилия покупателя
        contact_photo:
          type: integer
          description: ID изображения покупателя
        photo_url_40:
          type: string
          format: uri
          description: URL изображения покупателя размером 40х40 пикселей
    ProductInfo:
      type: object
      properties:
        id:
          type: integer
          description: ID товара
        name:
          type: string
          description: Название
        summary:
          type: string
          description: Краткое описание
        description:
          type: string
          description: Описание
        meta_title:
          type: string
          description: Элемент TITLE страницы товара
        meta_keywords:
          type: string
          description: Значение атрибута META keywords
        meta_description:
          type: string
          description: Значение атрибута META description
        contact_id:
          type: integer
          description: ID создавшего сотрудника
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        edit_datetime:
          type: string
          format: date-time
          description: Дата и время последнего обновления
        status:
          type: integer
          description: |
            Статус
            + **-1**: снят с публикации
            + **0**: скрытый
            + **1**: опубликован
          enum:
            - -1
            - 0
            - 1
        type_id:
          type: integer
          description: ID типа
        image_id:
          type: integer
          nullable: true
          description: ID основного изображения
        image_filename:
          type: string
          description: Имя файла основного изображения
        video_url:
          type: string
          nullable: true
          description: URL видеоролика
        sku_id:
          type: integer
          description: ID основной модификации
        ext:
          type: string
          description: Расширение имени файла основного изображения
        url:
          type: string
          description: Редактируемая часть URL
        rating:
          type: number
          description: Рейтинг
        price:
          type: number
          description: Цена основной модификации
        compare_price:
          type: number
          description: Зачеркнутая цена основной модификации
        currency:
          type: string
          description: ISO-код валюты
        min_price:
          type: number
          description: Цена самой дешевой модификации
        max_price:
          type: number
          description: Цена самой дорогой модификации
        tax_id:
          type: integer
          description: ID налогового правила
        count:
          type: number
          nullable: true
          description: Общее количество на складе всех модификаций
        count_denominator:
          type: integer
          description: |
            Доступная точность указания складских остатков товара
            + **1**: целые штуки
            + **10**: точность до десятых
            + **100**: точность до сотых
            + **1000**: точность до тысячных
          enum:
            - 1
            - 10
            - 100
            - 1000
        order_multiplicity_factor:
          type: number
          description: Шаг (кратность) добавления в корзину
        stock_unit_id:
          type: integer
          description: ID складской единицы измерения количества
        base_unit_id:
          type: integer
          description: ID базовой единицы измерения количества
        stock_base_ratio:
          type: number
          description: Соотношение между складской и базовой единицами измерения количества
        order_count_min:
          type: number
          description: Минимальное количество товара в заказе
        order_count_step:
          type: number
          description: Значение изменения количества кнопками «+/-»
        base_price:
          type: number
          description: Базовая цена основной модификации товара в основной валюте
        min_base_price:
          type: number
          description: Базовая цена самой дешевой модификации товара в основной валюте
        max_base_price:
          type: number
          description: Базовая цена самой дорогой модификации товара в основной валюте
        cross_selling:
          type: integer
          description: |
            Режим отображения сопутствующих товаров
            + **0**: выключено
            + **1**: включено показывать в соответствии с настройками типа товаров
            + **2**: включено показывать выбранные вручную рекомендуемые товары
          enum:
            - 0
            - 1
            - 2
        upselling:
          type: integer
          description: |
            Режим отображения схожих и альтернативных товаров
            + **0**: выключено
            + **1**: включено показывать в соответствии с настройками типа товаров
            + **2**: включено показывать выбранные вручную рекомендуемые товары
          enum:
            - 0
            - 1
            - 2
        rating_count:
          type: integer
          description: Количество отзывов
        total_sales:
          type: number
          description: Общая сумма продаж товара, выраженная в основной валюте
        category_id:
          type: integer
          description: ID основной категории
        badge:
          type: string
          description: Обозначение одной из стандартных наклеек либо HTML собственной наклейки для изображений
        sku_type:
          type: integer
          description: |
            Тип выбора модификаций товара на витрине
            + **0**: по наименованиям артикулов
            + **1**: по значениям характеристик
          enum:
            - 0
            - 1
        base_price_selectable:
          type: number
          description: Цена для массовой генерации модификаций
        compare_price_selectable:
          type: number
          description: Зачеркнутая цена для массовой генерации модификаций
        purchase_price_selectable:
          type: number
          description: Закупочная цена для массовой генерации модификаций
        sku_count:
          type: integer
          description: Количество модификаций
        image_url:
          type: string
          format: uri
          description: URL основного изображения
        skus:
          type: array
          description: Модификации
          items:
            $ref: '#/components/schemas/ProductVariantInfo'
        categories:
          type: array
          description: Категории
          items:
            $ref: '#/components/schemas/ProductCategoryInfo'
        images:
          type: array
          description: Изображения
          items:
            $ref: '#/components/schemas/ProductImageInfo'
        features:
          type: object
          description: Характеристики
    ProductVariantInfo:
      type: object
      properties:
        id:
          type: integer
          description: ID модификации
        product_id:
          type: integer
          description: ID товара
        sku:
          type: string
          description: Код артикула
        sort:
          type: integer
          description: Значение сортировки
        name:
          type: string
          description: Название артикула
        image_id:
          type: integer
          description: ID изображения
        price:
          type: number
          description: Цена
        primary_price:
          type: number
          description: Цена в основной валюте
        purchase_price:
          type: number
          description: Закупочная цена
        compare_price:
          type: number
          description: Зачеркнутая цена
        count:
          type: number
          nullable: true
          description: Общее количество на всех складах
        available:
          type: integer
          description: Флаг доступности для заказа
          enum:
            - 0
            - 1
        stock_base_ratio:
          type: number
          description: Соотношение между складской и базовой единицами измерения количества
        order_count_min:
          type: number
          description: Минимальное количество модификации в заказе
        order_count_step:
          type: number
          description: Значение изменения количества кнопками «+/-»
        status:
          type: integer
          description: Флаг видимости на витрине
          enum:
            - 0
            - 1
        file_name:
          type: string
          description: Имя прикрепленного файла
        file_size:
          type: integer
          description: Размер прикрепленного файла в байтах
        file_description:
          type: string
          description: Описание прикрепленного файла в байтах
        stock:
          type: object
          description: Остатки на складах
        currency:
          type: string
          description: ISO-код валюты
        stocks:
          type: array
          description: Остатки на складах
          items:
            $ref: '#/components/schemas/ProductVariantStockCounts'
    ProductVariantStockCounts:
      type: object
      properties:
        id:
          type: integer
          description: ID склада
        count:
          type: number
          description: Количество на складе
    ProductImageInfo:
      type: object
      properties:
        id:
          type: integer
          description: ID изображения
        product_id:
          type: integer
          description: ID товара
        upload_datetime:
          type: string
          format: date-time
          description: Дата и время загрузки
        edit_datetime:
          type: string
          format: date-time
          nullable: true
          description: Дата и время последнего редактирования
        description:
          type: string
          description: Описание
        sort:
          type: integer
          description: Значение сортировки
        width:
          type: integer
          description: Ширина в пикселях
        height:
          type: integer
          description: Высота в пикселях
        size:
          type: integer
          description: Размер в байтах
        filename:
          type: string
          description: Имя файла
        original_filename:
          type: string
          description: Оригинальное имя загруженного файла
        ext:
          type: string
          description: расширение имени файла
        badge_type:
          type: string
          nullable: true
          description: Тип наклейки
        badge_code:
          type: string
          nullable: true
          description: Идентификатор наклейки
        edit_datetime_ts:
          type: integer
          nullable: true
          description: Timestamp времени последнего редактирования
        url_thumb:
          type: integer
          format: uri
          description: URL эскиза размером '200x0'
        url_big:
          type: integer
          format: uri
          description: URL эскиза размером '750x0'
    ProductPageInfo:
      type: object
      properties:
        id:
          type: integer
          description: ID подстраницы
        product_id:
          type: integer
          description: ID товара
        name:
          type: string
          description: Название страницы
        title:
          type: string
          description: Заголовок страницы TITLE
        url:
          type: string
          description: Редактируемая часть URL
        content:
          type: string
          description: Содержимое страницы
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        update_datetime:
          type: string
          format: date-time
          description: Дата и время последнего обновления
        create_contact_id:
          type: integer
          description: ID создавшего контакта
        sort:
          type: integer
          description: Значение сортировки
        status:
          type: integer
          description: |
            Статус публикации
              + **0**: черновик
              + **1**: опубликована
          enum:
            - 0
            - 1
        meta_keywords:
          type: string
          description: Значение атрибута META keywords
        meta_description:
          type: string
          description: Значение атрибута META description
    ProductReviewInfo:
      type: object
      description: Свойства отзыва о товаре
      properties:
        id:
          type: integer
          description: ID отзыва
        product_id:
          type: integer
          description: ID товара
        left_key:
          type: integer
          description: ID предыдущего отзыва в структуре иерархии
        right_key:
          type: integer
          description: ID следующего отзыва в структуре иерархии
        depth:
          type: integer
          description: Глубина вложенности в структуре иерархии
        parent_id:
          type: integer
          description: ID родительского отзыва
        review_id:
          type: integer
          description: ID отзыва, к которому относится данный комментарий, или 0, если запись не является комментарием
        datetime:
          type: string
          format: date-time
          description: Дата и время добавления
        status:
          type: string
          description: |
            Статус отзыва или комментария
            + **approved**: опубликован
            + **deleted**: удален
            + **moderation**: ожидает модерации
          enum:
            - approved
            - deleted
            - moderation
        title:
          type: string
          description: Заголовок
        text:
          type: string
          description: Текст отзыва
        rate:
          type: number
          description: Оценка, оставленная пользователем при публикации отзыва
        contact_id:
          type: integer
          description: ID контакта автора отзыва, если автор был авторизован в момент публикации отзыва
        name:
          type: integer
          nullable: true
          description: Имя, указанное неавторизованным автором отзыва
        images_count:
          type: integer
          description: Количество прикрепленных изображений
        email:
          type: string
          description: Email-адрес, указанный неавторизованным автором отзыва
        site:
          type: string
          description: Адрес сайта, указанный неавторизованным автором отзыва
        auth_provider:
          type: string
          description: |
            Обозначение способа авторизации автора отзыва
            + **user**: пользователь, авторизованный с паролем
            + **guest**: автор отзыва не авторизован
            + *идентификатор адаптера*, с помощью которого авторизовался автор отзыва
        ip:
          type: integer
          description: IP-адрес автора отзыва, преобразованный с помощью PHP-функции `ip2long()`
        comments:
          type: array
          description: Список комментариев к отзыву
          items:
            type: object
            # $ref: '#/components/schemas/ProductReviewInfo'
    SalesEntry:
      type: object
      properties:
        date:
          type: string
          format: date
          description: Дата, соответствующая отдельному дню
        subtotal:
          type: number
          description: Выручка с вычетом закупочной стоимости
        quantity:
          type: number
          description: Проданное количество
        discount:
          type: number
          description: Примененная скидка
        purchase:
          type: number
          description: Закупочная стоимость
        profit:
          type: number
          description: Прибыль
        sales:
          type: number
          description: Выручка
    ProductListInfo:
      type: object
      properties:
        count:
          type: integer
          description: Количество найденных товаров
        offset:
          type: integer
          description: Смещение относительно начала списка отфильтрованных товаров
        limit:
          type: integer
          description: Количество товаров, которые нужно получить
        products:
          type: array
          description: Список товаров
          items:
            $ref: '#/components/schemas/ProductInfo'
    ProductSetInfo:
      type: object
      properties:
        id:
          type: string
          description: Идентификатор списка
        name:
          type: string
          description: Название
        group_id:
          type: integer
          nullable: true
          description: ID папки, в которой содержится список
        rule:
          type: string
          nullable: true
          description: Описание правила выбора товаров динамического списка
        type:
          type: integer
          enum:
            - 0
            - 1
          description: |
            Тип списка
            + **0**: статический
            + **1**: динамический
        count:
          type: integer
          description: Максимальное количество товаров, указанное в настройках динамического списка
        sort:
          type: integer
          description: Значение сортировки
        sort_products:
          type: string
          nullable: true
          description: Обозначение сортировки товаров в динамическом списке
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        edit_datetime:
          type: string
          format: date-time
          description: Дата и время последнего обновления
        json_params:
          type: string
          format: date-time
          nullable: true
          description: Дополнительные параметры
    StockInfo:
      type: object
      properties:
        id:
          type: integer
          description: ID склада
        name:
          type: string
          description: Название
        low_count:
          type: integer
          description: Ограничение низкого уровня остатков
        critical_count:
          type: integer
          description: Ограничение критичного уровня остатков
        sort:
          type: integer
          description: Значение сортировки
        public:
          type: integer
          description: |
            Признак видимого склада
            + **0**: скрытый
            + **1**: видимый
          enum:
            - 0
            - 1
    ProductTypeInfo:
      type: object
      description: Свойства типа товаров
      properties:
        id:
          type: integer
          description: ID типа
        name:
          type: string
          description: Название
        sort:
          type: integer
          description: Значение сортировки
        icon:
          type: string
          description: CSS-класс иконки
        cross_selling:
          type: string
          description: |
            Значение настройки перекрестных продаж
            + *(пустое значение)*: выключено
            + **category/*ID***: выбранная категория, из которой рекомендуемые товары выбираются случайным образом
            + **alsobought**: выборка на основании покупок других покупателей
        upselling:
          type: integer
          description: |
            Статус настройки схожих и альтернативных товаров
            + **0**: выключена
            + **1**: включена
        count:
          type: integer
          description: Количество товаров данного типа
        stock_unit_fixed:
          type: integer
          enum:
            - 0
            - 1
            - 2
          description: |
            Возможность изменения складской единицы измерения количества
            + **0**: может быть изменена в свойствах товаров
            + **1**: не может быть изменена в свойствах товаров
            + **2**: выключена
        stock_unit_id:
          type: integer
          description: ID складской единицы измерения количества
        base_unit_fixed:
          type: integer
          enum:
            - 0
            - 1
            - 2
          description: |
            Возможность изменения базовой единицы измерения количества
            + **0**: может быть изменена в свойствах товаров
            + **1**: не может быть изменена в свойствах товаров
            + **2**: выключена
        base_unit_id:
          type: integer
          description: ID базовой единицы измерения количества
        stock_base_ratio_fixed:
          type: integer
          enum:
            - 0
            - 1
            - 2
          description: |
            Возможность изменения соотношения между складской и базовой единицами измерения количества
            + **0**: может быть изменена в свойствах товаров
            + **1**: не может быть изменена в свойствах товаров
            + **2**: выключена
        stock_base_ratio:
          type: number
          description: Соотношение между складской и базовой единицами
        count_denominator_fixed:
          type: integer
          enum:
            - 0
            - 1
            - 2
          description: |
            Возможность изменения доступной точности указания складских остатков товара
            + **0**: может быть изменена в свойствах товаров
            + **1**: не может быть изменена в свойствах товаров
            + **2**: выключена
        count_denominator:
          type: integer
          enum:
            - 1
            - 10
            - 100
            - 1000
          description: |
            Доступная точность указания складских остатков товара
            + **1**: целые штуки
            + **10**: точность до десятых
            + **100**: точность до сотых
            + **1000**: точность до тысячных
        order_multiplicity_factor_fixed:
          type: integer
          enum:
            - 0
            - 1
            - 2
          description: |
            Возможность изменения шага (кратности) изменения количества товаров в корзине
            + **0**: может быть изменена в свойствах товаров
            + **1**: не может быть изменена в свойствах товаров
            + **2**: выключена
        order_multiplicity_factor:
          type: number
          description: Шаг (кратность) изменения количества товаров в корзине
        order_count_min_fixed:
          type: integer
          enum:
            - 0
            - 1
            - 2
          description: |
            Возможность изменения минимального количества товаров для заказа
            + **0**: может быть изменена в свойствах товаров
            + **1**: не может быть изменена в свойствах товаров
            + **2**: выключена
        order_count_min:
          type: number
          description: Минимальное количество товаров для заказа
        order_count_step_fixed:
          type: integer
          enum:
            - 0
            - 1
            - 2
          description: |
            Возможность изменения количества товаров в корзине кнопками «+/-»
            + **0**: может быть изменена в свойствах товаров
            + **1**: не может быть изменена в свойствах товаров
            + **2**: выключена
        order_count_step:
          type: number
          description: Значение изменения количества товаров в корзине кнопками «+/-»
    CouponInfo:
      type: object
      properties:
        id:
          type: integer
          description: ID купона
        code:
          type: string
          description: Код купона
        type:
          type: string
          description: |
            Тип купона.
            + **$FS**: Бесплатная доставка
            + **%**: Скидка в виде процентов
            + *(ISO-код валюты)*: Скидка в виде суммы в указанной валюте
          enum:
            - '%'
            - $FS
        limit:
          type: integer
          nullable: true
          description: Максимальное количество применений
        used:
          type: integer
          description: Зафиксированное количество применений
        value:
          type: number
          description: Размер скидки
        url:
          type: string
          format: uri
          description: URL страницы с информацией о промоакции
        comment:
          type: string
          description: Комментарий
        expire_datetime:
          type: string
          format: date-time
          nullable: true
          description: Дата и время истечения срока действия
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        create_contact_id:
          type: integer
          description: ID создавшего контакта
        products_hash:
          type: string
          description: Хеш-строка фильтрации товаров, к которым применяется купон
    QuantityUnitInfo:
      type: object
      properties:
        id:
          type: integer
          description: ID единицы
        short_name:
          type: string
          description: Сокращенное название
        name:
          type: string
          description: Полное название
        name2:
          type: string
          description: 1-я форма множественного числа названия
        name5:
          type: string
          description: 2-я форма множественного числа названия
        okei_code:
          type: integer
          description: Код по ОКЕИ
        builtin:
          type: integer
          description: Признак встроенной единицы
        storefront_name:
          type: string
          description: Обозначение для витрины
        sort:
          type: integer
          description: Значение сортировки
        status:
          type: integer
          description: |
            Статус.
            + **0**: выключена
            + **1**: включена
            + **2**: включена без возможности выключения
    OrderItemInfo:
      type: object
      properties:
        id:
          type: integer
          description: ID позиции
        order_id:
          type: integer
          description: ID заказа
        name:
          type: string
          description: Название
        product_id:
          type: integer
          description: ID товара
        sku_id:
          type: integer
          description: ID модификации товара
        sku_code:
          type: string
          description: Код артикула
        type:
          type: string
          description: |
            Тип позиции.
            + **product**: Товар
            + **service**: Услуга
        service_id:
          type: integer
          nullable: true
          description: ID услуги
        service_variant_id:
          type: integer
          nullable: true
          description: ID варианта услуги
        price:
          type: number
          description: Цена
        quantity:
          type: number
          description: Количество
        quantity_denominator:
          type: integer
          description: |
            Доступная точность указания складских остатков заказанного товара.
            + **1**: целые штуки
            + **10**: точность до десятых
            + **100**: точность до сотых
            + **1000**: точность до тысячных
        parent_id:
          type: integer
          nullable: true
          description: ID товара, к которому относится услуга
        stock_id:
          type: integer
          nullable: true
          description: ID склада, выбранного в свойствах заказа для списания остатков модификации товара
        virtual_stock_id:
          type: integer
          nullable: true
          description: ID виртуального склада, с которого должно выполняться списание остатков заказанной модификации товара
        purchase_price:
          type: number
          description: Закупочная цена в валюте заказа
        total_discount:
          type: number
          description: Размер скидки в валюте заказа, рассчитанный для всего количества заказанной модификации товара
        tax_percent:
          type: number
          description: Количество процентов примененного налога
        tax_included:
          type: integer
          description: |
            Признак налога, включенного в цену заказанного товара.
            + **0**: Не включен
            + **1**: Включен
        stock_unit_id:
          type: integer
          description: ID складской единицы измерения количества заказанной модификации товара
        sort:
          type: integer
          description: Значение сортировки

  parameters:
    requestFormat:
      name: format
      in: query
      description: Формат ответа (по умолчанию '*json*')
      required: false
      schema:
        type: string
        enum:
          - json
          - xml
