# validate https://editor.swagger.io/
openapi: 3.0.0
info:
  title: 'CRM API'
  version: 1.0.0
servers:
  - url: /api.php
    description: Адрес API

paths:
  /crm.call.recordUrl:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.call.recordUrl
        url: https://developers.webasyst.ru/api/explorer/crm/crm.call.recordUrl/
      summary: Возвращает URL записи телефонного разговора для получения её с сервера IP-телефонии.
      parameters:
        - in: query
          name: call_id
          description: Идентификатор звонка, присвоенный провайдером телефонии
          required: true
          schema:
            type: string
        - in: query
          name: record_id
          description: Идентификатор записи, присвоенный провайдером телефонии
          required: true
          schema:
            type: string
        - in: query
          name: plugin
          description: Идентификатор плагина телефонии
          required: true
          schema:
            type: string
      responses:
        200:
          description: URL записи разговора.
          content:
            text/plain:
              schema:
                type: string
                format: uri
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
  /crm.contact.access.update:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.access.update
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.access.update/
      summary: Обновляет настройки доступа к указанному контакту.
      parameters:
        - in: query
          name: id
          required: true
          description: ID контакта
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  required:
                    - owner_id
                  properties:
                    owner_id:
                      type: array
                      description: ID контактов сотрудников, которые должны иметь доступ к контакту
                      items:
                        type: integer
                - type: object
                  required:
                    - vault_id
                  properties:
                    vault_id:
                      type: integer
                      description: ID класса контактов, к которому должен быть отнесён указанный контакт
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.add:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.add
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.add/
      summary: Создаёт новый контакт.
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                required:
                  - field
                properties:
                  field:
                    type: string
                    description: ID поля контакта
                  value:
                    oneOf:
                      - type: string
                        description: Значение поля
                      - type: array
                        description: Значения составного поля
                        items:
                          type: object
                          required:
                            - field
                          properties:
                            field:
                              type: string
                              description: ID дочернего поля
                            value:
                              type: string
                              nullable: true
                              description: Значение дочернего поля
                  ext:
                    type: string
                    description: Обозначение типа
      responses:
        201:
          description: ID созданного контакта.
          content:
            application/json:
              schema:
                type: integer
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Код ошибки
                  error_description:
                    type: string
                    description: Описание ошибки
                  error_fields:
                    type: array
                    description: Поля, связанные с ошибкой
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                          description: ID поля
                        value:
                          type: string
                          description: Некорректное значение
                        code:
                          type: string
                          description: Код ошибки
                        description:
                          type: string
                          description: Описание ошибки
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.ban:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.ban
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.ban/
      summary: Блокирует клиенту доступ к личному кабинету.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
              properties:
                id:
                  type: integer
                  description: ID контакта
                reason:
                  type: string
                  description: Причина блокировки
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.delete:
    delete:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.delete
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.delete/
      summary: Удаляет указанные контакты.
      parameters:
        - in: query
          name: id[]
          description: Массив ID контактов
          required: true
          schema:
            type: array
            items:
              type: integer
      responses:
        200:
          description: Информация об удалённых контактах.
          content:
            application/json:
              schema:
                type: object
                properties:
                    count:
                      type: integer
                      description: Количество удалённых контактов
                    message:
                      type: string
                      description: Сообщение об успешном удалении
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.info:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.info
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.info/
      summary: Возвращает информацию об указанном контакте.
      parameters:
        - in: query
          name: id
          description: ID контакта
          schema:
            type: integer
          required: true
        - in: query
          name: with_counters
          description: >
            Флаг, требующий вернуть счётчики данных, связанных с контактом: сделок, напоминаний, счетов, звонков, заметок, файлов, сообщений, сотрудников
          schema:
            type: integer
            enum:
              - 0
              - 1
            default: 0
        - in: query
          name: userpic_size
          description: Размер изображений контакта в пикселях, URL которых нужно получить
          schema:
            type: integer
            default: 96
      responses:
        200:
          description: Свойства контакта.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/contact'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.links:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.links
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.links/
      summary: Возвращает информацию о том, какие из указанных контактов связаны с другими приложениями
      parameters:
        - in: query
          name: id[]
          description: Массив ID контактов
          schema:
            type: array
            items:
              type: integer
      responses:
        200:
          description: Информация о связях контакта.
          content:
            application/json:
              schema:
                type: object
                properties:
                  free_contacts:
                    type: array
                    description: Контакты без связей с другими приложениями
                    items:
                      $ref: '#/components/schemas/contactMinimal'
                  linked_contacts:
                    type: array
                    description: Контакты, имеющие связи с другими приложениями
                    items:
                      allOf:
                        - $ref: '#/components/schemas/contactMinimal'
                        - type: object
                          properties:
                            links:
                              type: array
                              description: Связи контакта
                              items:
                                type: object
                                properties:
                                  app:
                                    type: string
                                    description: Название приложения
                                  roles:
                                    type: array
                                    description: Роли контакта в приложении
                                    items:
                                      type: object
                                      properties:
                                        role:
                                          type: string
                                          description: Название роли
                                        count:
                                          type: integer
                                          description: Количество связей с приложением в этой роли
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.list/
      summary: Возвращает список доступных сотруднику контактов.
      parameters:
        - in: query
          name: hash
          schema:
            type: string
          description: |
            Хеш-строка с описанием параметров фильтрации контактов.

            Примеры:
            + **all** или **пустой хеш**: Поиск всех доступных контактов.
            + **id/10,11,12**: Поиск контактов с указанными ID, перечисленными через запятую.
            + **segment/1**: Поиск контактов из сегмента с указанным ID.
            + **tag/1**: Поиск по тегу с указанным ID.
            + **vault/1**: Поиск по классу контактов с указанным ID.
            + **import/2000-01-01 00:00:00**: Поиск контактов, импортированных текущим пользователем начиная с указанных даты и времени.
            + **responsible/me**: Поиск контактов, для которых в качестве ответственного указан текущий пользователь.
            + **responsible/no**: Поиск контактов, для которых не указан ответственный сотрудник.
            + **responsible/12**: Поиск контактов, для которых в качестве ответственного указан сотрудник с ID = 12.
            + **recent**: Поиск недавно просмотренных контактов.
            + **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**: Поиск по идентификатору страны (в этом примере '*rus*') и коду региона (в этом примере '*77*') в адресе.
            + **search/address:region\*=область**: Поиск по любой части названия региона в адресе.
            + **search/phone=799911122333**: Поиск по номеру телефона.
            + **search/phone.home=799911122333**: Поиск по номеру телефона покупателя с указанием расширения поля контакта (в этом примере 'home').
            + **search/phone^=7999**: Поиск по части номера телефона.
            + **search/phone^=8999**: Поиск по номеру телефона с кодом международной связи вместо кода страны — сработает, если код международной связи (в этом примере *8*) указан в настройках авторизации любого сайта.
        - in: query
          name: fields[]
          description: |
            Список полей, значения которых нужно получить в свойствах контактов, в дополнение к стандартным '*id*', '*name*', '*firstname*', '*middlename*', '*lastname*', '*create_datetime*', '*last_datetime*', '*photo*', '*create_contact_id*', '*create_app_id*', '*create_method*'.

            Доступные дополнительные поля:
            + **jobtitle**: должность
            + **company**: название компании
            + **email**: email-адрес
            + **phone**: телефонный номер
            + **address:region**: регион в почтовом адресе
            + **address:city**: населённый пункт в почтовом адресе
            + **tags**: список тегов
            + **online_status**: онлайн-статус
            + **last_action**: информация о последнем действии контакта
            + **acl**: уровень доступа к контакту
            + **is_pinned**: присутствие контакта в числе избранных
          schema:
            type: array
            items:
              type: string
        - in: query
          name: sort
          description: ID поля, по значению которого должны быть отсортированы контакты
          schema:
            type: string
            default: last_action
        - in: query
          name: asc
          description: Флаг, требующий сортировку по возрастанию
          schema:
            type: integer
            enum:
              - 0
              - 1
        - in: query
          name: context_contact_id
          description: Контекстный ID контакта
          schema:
            type: integer
        - in: query
          name: offset
          description: Смещение относительно начала списка контактов
          schema:
            type: integer
            default: 0
            minimum: 0
        - in: query
          name: limit
          description: Размер возвращаемого фрагмента списка контактов
          schema:
            type: integer
            default: 30
            maximum: 500
        - in: query
          name: userpic_size
          description: Размер изображения в пикселях
          schema:
            type: integer
      responses:
        200:
          description: Информация о контактах.
          content:
            application/json:
              schema:
                type: object
                properties:
                  params:
                    type: object
                    description: Параметры формирования списка контактов
                    properties:
                      title:
                        type: string
                        description: Заголовок списка
                      hash:
                        type: string
                        description: Хеш-строка с условиями выборки контактов
                      sort:
                        type: object
                        description: Параметры сортировки
                        properties:
                          field:
                            type: string
                            description: ID поля, по значению которого должны быть отсортированы контакты
                          asc:
                            type: boolean
                            description: Флаг, требующий сортировку по возрастанию
                      offset:
                        type: integer
                        description: Смещение относительно начала отфильтрованного списка контактов
                      limit:
                        type: integer
                        description: Размер возвращаемого фрагмента отфильтрованного списка контактов
                      total_count:
                        type: integer
                        description: Количество найденных контактов
                      fields:
                        type: array
                        description: Запрошенные поля контактов
                        items:
                          type: string
                      columns:
                        type: array
                        description: Заголовки столбцов
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              description: ID поля
                            name:
                              type: string
                              description: Локализованное название поля
                  data:
                    type: array
                    description: Список контактов
                    items:
                      $ref: '#/components/schemas/contactShort'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Контакт не найден.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.patch:
    patch:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.patch
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.patch/
      summary: Обновляет часть информации о контакте.
      parameters:
        - in: query
          name: id
          description: ID контакта
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: object
                required:
                  - field
                  - value
                properties:
                  field:
                    type: string
                    description: ID поля контакта
                  value:
                    oneOf:
                      - type: string
                        description: Значение поля
                      - type: array
                        description: Данные составного поля
                        items:
                          type: object
                          required:
                            - field
                          properties:
                            field:
                              type: string
                              description: ID дочернего поля
                            value:
                              type: string
                              nullable: true
                              description: Значение дочернего поля
                  ext:
                    type: string
                    description: Обозначение типа
      responses:
        200:
          description: Обновлённые свойства контакта.
          content:
            application/json:
              schema:
                type: array
                items:
                  description: Обновлённое поле
                  allOf:
                    - $ref: '#/components/schemas/fieldData'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Код ошибки
                  error_description:
                    type: string
                    description: Описание ошибки
                  error_fields:
                    type: array
                    description: Поля, связанные с ошибкой
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                          description: ID поля контакта
                        value:
                          type: string
                          description: Некорректное значение
                        code:
                          type: string
                          description: Код ошибки
                        description:
                          type: string
                          description: Описание ошибки
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Контакт не найден.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.pin:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.pin
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.pin/
      summary: Добавляет указанный контакт в список избранных.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID контакта
              required:
                - id
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Контакт не найден.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.recent:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.recent
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.recent/
      summary: Возвращает список недавних и избранных контактов.
      parameters:
        - in: query
          name: userpic_size
          description: Размер изображений контактов (в пикселях), URL которых нужно получить в составе списка контактов
          schema:
            type: integer
            default: 32
        - in: query
          name: limit
          description: Количество недавно просмотренных контактов
          schema:
            type: integer
            default: 10
      responses:
        200:
          description: Информация о недавних и избранных контактах.
          content:
            application/json:
              schema:
                type: object
                properties:
                  recent:
                    type: array
                    description: Список недавних контактов
                    items:
                      $ref: '#/components/schemas/contactMinimal'
                  pinned:
                    type: array
                    description: Список избранных контактов
                    items:
                      $ref: '#/components/schemas/contactMinimal'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.responsible.update:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.responsible.update
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.responsible.update/
      summary: Устанавливает ответственного сотрудника для указанного контакта.
      parameters:
        - in: query
          name: id
          description: ID контакта
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                user_id:
                  type: integer
                  description: ID сотрудника
              required:
                - user_id
      responses:
        200:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Контакт не найден.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.tabs:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.tabs
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.tabs/
      summary: Возвращает список разделов с дополнительными данными, связанными с указанным контактом, предоставляемыми другими приложениями.
      parameters:
        - in: query
          name: id
          description: ID контакта
          required: true
          schema:
            type: integer
      responses:
        200:
          description: Информация о разделах.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  description: Список разделов
                  properties:
                    id:
                      type: string
                      description: ID раздела
                    app_id:
                      type: string
                      description: ID приложения, данные которого отображаются в разделе
                    title:
                      type: string
                      description: Локализованное название раздела
                    count:
                      type: integer
                      nullable: true
                      description: Количество записей в разделе, связанных с контактом
                    url:
                      type: string
                      format: uri
                      nullable: true
                      description: URL для получения HTML-содержимого раздела
                    html:
                      type: string
                      nullable: true
                      description: HTML-содержимое раздела
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.ui.actions:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.ui.actions
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.ui.actions/
      summary: Возвращает HTML-код пунктов меню действий с контактом, добавленных плагинами.
      parameters:
        - in: query
          name: id
          required: true
          description: ID контакта
          schema:
            type: integer
      responses:
        200:
          description: Информация о пунктах меню.
          content:
            application/json:
              schema:
                type: object
                properties:
                  plus_dropdown:
                    type: array
                    description: Список пунктов меню
                    items:
                      type: string
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Контакт не найден.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
  /crm.contact.unban:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.unban
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.unban/
      summary: Восстанавливает клиенту заблокированный доступ к личному кабинету.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
              properties:
                id:
                  type: integer
                  description: ID контакта
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.unpin:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.unpin
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.unpin/
      summary: Удаляет указанный контакт из списка избранных.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID контакта
              required:
                - id
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Контакт не найден.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.update:
    put:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.update
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.update/
      summary: Обновляет всю информацию о контакте.
      parameters:
        - in: query
          name: id
          description: ID контакта
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: array
              description: Поля контакта
              items:
                type: object
                required:
                  - field
                properties:
                  field:
                    type: string
                    description: ID поля
                  value:
                    oneOf:
                      - type: string
                        description: Значение поля
                      - type: array
                        description: Данные составного поля
                        items:
                          type: object
                          required:
                            - field
                          properties:
                            field:
                              type: string
                              description: ID дочернего поля
                            value:
                              type: string
                              nullable: true
                              description: Значение дочернего поля
                  ext:
                    type: string
                    description: Обозначение типа
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Код ошибки
                  error_description:
                    type: string
                    description: Описание ошибки
                  error_fields:
                    type: array
                    description: Поля, связанные с ошибкой
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                          description: ID поля
                        value:
                          type: string
                          description: Некорректное значение
                        code:
                          type: string
                          description: Код ошибки
                        description:
                          type: string
                          description: Описание ошибки
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.userpic:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.contact.userpic
        url: https://developers.webasyst.ru/api/explorer/crm/crm.contact.userpic/
      summary: Сохраняет для указанного контакта новое изображение и возвращает URL нескольких его вариантов.
      parameters:
        - in: query
          name: id
          required: true
          description: ID контакта
          schema:
            type: integer
        - in: query
          name: userpic_size
          description: Размер эскиза изображения в пикселях
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - photo
                - content_type
              properties:
                photo:
                  type: string
                  format: byte
                  nullable: false
                  description: Файл изображения
                crop:
                  type: object
                  description: Параметры обрезки оригинального изображения
                  properties:
                    x:
                      type: integer
                      description: Смещение обрезанной области от левого края в пикселях (если не указано или если превышает ширину изображения, то эскиз вырезается из середины изображения по горизонтали)
                    y:
                      type: integer
                      description: Смещение обрезанной области от верхнего края в пикселях (если не указано или если превышает высоту изображения, то эскиз вырезается из центра изображения по вертикали)
                    size:
                      type: integer
                      description: Ширина и длина обрезанной области в пикселях (если не указано или превышает ширину и высоту изображения, то размер эскиза равен минимальной из двух сторон изображения)
      responses:
        200:
          description: URL вариантов изображения.
          content:
            application/json:
              schema:
                type: object
                properties:
                  thumb:
                    type: string
                    format: uri
                    description: URL эскиза с размером, указанным в параметре *userpic_size*.
                  original:
                    type: string
                    format: uri
                    description: URL оригинального изображения.
                  original_crop:
                    type: string
                    format: uri
                    description: URL обрезанной версии оригинального изображения без уменьшения до размеров эскиза.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.contact.userpic.delete:
    delete:
      security:
        - BearerAuth: [ ]
      summary: Удаляет изображение.
      parameters:
        - in: query
          name: id
          required: true
          description: ID контакта
          schema:
            type: integer
      responses:
        204:
          description: Успешное выполнение запроса.
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.conversation.deal:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.conversation.deal
        url: https://developers.webasyst.ru/api/explorer/crm/crm.conversation.deal/
      summary: Прикрепляет переписку к сделке или открепляет её от сделки.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - conversation_id
                - deal_id
              properties:
                conversation_id:
                  type: integer
                  description: ID переписки
                deal_id:
                  type: integer
                  description: ID сделки
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.conversation.delete:
    delete:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.conversation.delete
        url: https://developers.webasyst.ru/api/explorer/crm/crm.conversation.delete/
      summary: Удаляет переписку.
      parameters:
        - in: query
          name: id
          description: ID переписки
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                ban_contact:
                  type: boolean
                  description: Флаг блокировки доступа для клиента
                reason:
                  type: string
                  description: Описание причины блокировки
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.conversation.info:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.conversation.info
        url: https://developers.webasyst.ru/api/explorer/crm/crm.conversation.info/
      summary: Возвращает информацию о переписке.
      parameters:
        - in: query
          name: id
          description: ID переписки
          schema:
            type: integer
          required: true
        - in: query
          name: limit
          description: Размер фрагмента списка сообщений
          schema:
            type: integer
            default: 30
            maximum: 500
        - in: query
          name: userpic_size
          description: Размер изображений контактов в пикселях, URL которых нужно получить в составе информации о переписке
          schema:
            type: integer
            default: 32
      responses:
        200:
          description: Свойства переписки.
          content:
            application/json:
              schema:
                type: object
                properties:
                  conversation:
                    description: Свойства переписки
                    allOf:
                      - $ref: '#/components/schemas/conversation'
                  params:
                    type: object
                    description: Параметры формирования списка сообщений
                    properties:
                      limit:
                        type: integer
                        description: Размер фрагмента списка сообщений
                      total_count:
                        type: integer
                        description: Количество сообщений в переписке
                  messages:
                    type: array
                    description: Свойства сообщений
                    items:
                      $ref: '#/components/schemas/message'
                  can_edit:
                    type: boolean
                    description: Флаг, обозначающий доступ сотрудника к редактированию переписки
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.conversation.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.conversation.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.conversation.list/
      summary: Возвращает список переписок.
      parameters:
        - in: query
          name: offset
          description: Смещение относительно отфильтрованного списка переписок
          schema:
            type: integer
            default: 0
            minimum: 0
        - in: query
          name: limit
          description: Размер фрагмента списка переписок
          schema:
            type: integer
            default: 30
            maximum: 500
        - in: query
          name: transport
          description: |
            Условие фильтрации по типу транспорта
            + **im**: сообщения только через мессенджеры
            + **email**: только email-сообщения
          schema:
            type: string
            enum:
              - im
              - email
        - in: query
          name: user_id
          description: |
            Условие фильтрации по ответственному сотруднику
            + **положительное число**: ID ответственного сотрудника
            + **0**: сообщения без назначенного ответственного сотрудника
          schema:
            type: integer
        - in: query
          name: contact_id
          description: ID контакта клиента, переписки с которым нужно получить
          schema:
            type: integer
        - in: query
          name: userpic_size
          description: Размер изображений контактов в пикселях, URL которых нужно получить в составе информации о переписках
          schema:
            type: integer
            default: 32
      responses:
        200:
          description: Информация о переписках.
          content:
            application/json:
              schema:
                type: object
                properties:
                  params:
                    type: object
                    description: Параметры формирования списка переписок
                    properties:
                      offset:
                        type: integer
                        description: Смещение относительно отфильтрованного списка переписок
                      limit:
                        type: integer
                        description: Размер фрагмента списка переписок
                      total_count:
                        type: integer
                        description: Общее количество переписок, соответствующих указанных параметрам фильтрации
                      filter:
                        type: object
                        description: Параметры фильтрации переписок
                        properties:
                          transport:
                            type: string
                            description: Тип транспорта
                            enum:
                              - im
                              - email
                          user_id:
                            type: integer
                            description: ID ответственного сотрудника
                          contact_id:
                            type: integer
                            description: ID контакта клиента
                  data:
                    type: array
                    description: Свойства переписок
                    items:
                      $ref: '#/components/schemas/conversation'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.conversation.read:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.conversation.read
        url: https://developers.webasyst.ru/api/explorer/crm/crm.conversation.read/
      summary: Маркировка переписки как прочитанной
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
              properties:
                id:
                  type: integer
                  description: ID переписки
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.conversation.unread:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.conversation.unread
        url: https://developers.webasyst.ru/api/explorer/crm/crm.conversation.unread/
      summary: Маркировка переписки как непрочитанной
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
              properties:
                id:
                  type: integer
                  description: ID переписки
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.conversation.users.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.conversation.users.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.conversation.users.list/
      summary: Возвращает список сотрудников, выбранных в качестве ответственных за переписки
      parameters:
        - in: query
          name: userpic_size
          description: Размер изображений сотрудников в пикселях, URL которых нужно получить
          schema:
            type: integer
            default: 32
      responses:
        200:
          description: Список сотрудников, ответственных за какие-либо переписки.
          content:
            application/json:
              schema:
                type: array
                items:
                  description: Свойства сотрудника
                  allOf:
                    - $ref: '#/components/schemas/contactMinimal'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.currency.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.currency.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.currency.list/
      summary: Возвращает список настроенных валют.
      responses:
        200:
          description: Список валют.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  description: Свойства валюты
                  properties:
                    id:
                      description: ISO-код валюты
                      type: string
                    name:
                      description: Локализованное название валюты
                      type: string
                    is_primary:
                      description: Признак основной валюты
                      type: boolean
                    rate:
                      description: Курс валюты по отношению к основной
                      type: number
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.add:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.add
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.add/
      summary: Создаёт новую сделку.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - stage_id
                - name
                - contact_id
              properties:
                stage_id:
                  type: integer
                  description: ID этапа воронки
                name:
                  type: string
                  description: Название сделки
                description:
                  type: string
                  format: text
                  description: Описание сделки (HTML)
                  nullable: true
                expected_date:
                  type: string
                  format: date
                  description: Предварительная дата закрытия сделки
                  nullable: true
                amount:
                  type: number
                  description: Предварительная стоимость
                  nullable: true
                currency_id:
                  type: string
                  description: ISO-код валюты
                  nullable: true
                contact_id:
                  type: integer
                  description: ID контакта клиента
                contact_label:
                  type: string
                  description: Редактируемое название роли заказчика в сделке
                  nullable: true
                user_contact_id:
                  type: integer
                  description: ID сотрудника, ответственного за сделку
                fields:
                  type: array
                  description: Дополнительные поля
                  items:
                    type: object
                    required:
                      - field
                      - value
                    properties:
                      field:
                        type: string
                        description: ID поля
                      value:
                        type: string
                        description: Значение поля
      responses:
        201:
          description: ID созданной сделки.
          content:
            application/json:
              schema:
                type: integer
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Код ошибки
                  error_description:
                    type: string
                    description: Описание ошибки
                  error_fields:
                    type: array
                    description: Поля, связанные с ошибкой
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                          description: ID поля
                        value:
                          type: string
                          description: Некорректное значение
                        code:
                          type: string
                          description: Код ошибки
                        description:
                          type: string
                          description: Описание ошибки
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.close:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.close
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.close/
      summary: Закрывает сделку с установкой статуса «выиграна» или «проиграна».
      parameters:
        - in: query
          name: id
          description: ID сделки
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - status_id
              properties:
                status_id:
                  type: string
                  description: |
                    Статус закрытой сделки
                    + **WON**: выиграна
                    + **LOST**: проиграна
                  enum:
                    - WON
                    - LOST
                lost_id:
                  type: integer
                  description: ID одной из настроенных причин проигрыша сделки
                lost_text:
                  type: string
                  description: Описание причины закрытия сделки
                force:
                  type: boolean
                  description: Признак закрытия сделки без подтверждения пользователем
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        409:
          description: Действие требует дополнительных данных или подтверждения.
          content:
            application/json:
              schema:
                type: object
                properties:
                  dialog_html:
                    type: string
                    description: HTML-код для показа сотруднику информационного сообщения в виде диалога
                  order_id:
                    type: integer
                    description: ID заказа Shop-Script, если при закрытии сделки нужно выполнить действие со связанным с нею заказом
                    nullable: true
                  action_id:
                    type: string
                    description: Идентификатор действия, которое должно быть выполнено со связанным заказом Shop-Script при закрытии сделки
                    nullable: true
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.delete:
    delete:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.delete
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.delete/
      summary: Удаляет сделки.
      parameters:
        - in: query
          name: id
          description: ID сделки, если нужно удалить только 1 сделку.
          schema:
            type: integer
        - in: query
          name: id[]
          description: Массив ID сделок для массового удаления
          schema:
            type: array
            items:
              type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: array
                  description: Массив ID сделок для массового удаления
                  items:
                    type: integer
      responses:
        204:
          description: Успешное удаление одной сделки.
        200:
          description: Успешное удаление нескольких указанных сделок.
          content:
            application/json:
              schema:
                type: object
                properties:
                  deleted:
                    description: Массив ID удалённых сделок
                    type: array
                    items:
                      type: integer
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.info:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.info
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.info/
      summary: Возвращает информацию о сделке.
      parameters:
        - in: query
          name: id
          description: ID сделки
          schema:
            type: integer
          required: true
        - in: query
          name: userpic_size
          description: Размер изображений сотрудников в пикселях, URL которых нужно получить в составе информации о сделке
          schema:
            type: integer
            default: 32
        - in: query
          name: with_aux_info
          description: Флаг, требующий вернуть дополнительные HTML-элементы, добавленные плагинами
          schema:
            type: integer
            enum:
              - 0
              - 1
            default: 0
      responses:
        200:
          description: Свойства сделки.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/deal'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.list/
      summary: Возвращает список сделок в соответствии с указанными параметрами фильтрации.
      parameters:
        - in: query
          name: user_id
          description: ID ответственного сотрудника
          schema:
            type: integer
        - in: query
          name: contact_id
          description: ID контакта, с которым связан сделка
          schema:
            type: integer
        - in: query
          name: search
          description: Текст для поиска по названиям сделок и именам клиентов
          schema:
            type: string
        - in: query
          name: fields[]
          description: |
            Массив ID дополнительных полей сделок, значения которых нужно получить в составе информации о сделках
            + **ID любых настроенных полей**
            + **last_action**: последнее действие, связанное с контактом
            + **is_pinned**: присутствие контакта в числе избранных
          schema:
            type: array
            items:
              type: string
        - in: query
          name: funnel
          description: ID воронки
          schema:
            type: integer
        - in: query
          name: stage
          description: ID этапа воронки
          schema:
            type: integer
        - in: query
          name: tag
          description: ID тега
          schema:
            type: integer
        - in: query
          name: reminder[]
          description: |
            Статусы напоминаний
            + **no**: обычное
            + **burn**: срочное
            + **overdue**: просроченное
            + **actual**: актуальное
          schema:
            type: array
            items:
              type: string
              enum:
                - no
                - burn
                - overdue
                - actual
        - in: query
          name: unread_only
          description: Флаг для получения только сделок, связанных с непрочитанными сообщениями
          schema:
            type: integer
            enum:
              - 0
              - 1
        - in: query
          name: pinned_only
          description: Флаг для получения только избранных сделок
          schema:
            type: integer
            enum:
              - 0
              - 1
        - in: query
          name: sort
          description: |
            Поле, по которому нужно отсортировать полученный список сделок
            + **stage_id**: ID этапа воронки
            + **create_datetime**: дата и время создания
            + **reminder_datetime**: дата и время актуального напоминания
            + **name**: название
            + **amount**: предварительная стоимость
            + **user_name**: логин ответственного сотрудника
            + **last_action**: последнее выполненное действие
          schema:
            type: string
            enum:
              - stage_id
              - create_datetime
              - reminder_datetime
              - name
              - amount
              - user_name
              - last_action
        - in: query
          name: asc
          description: Флаг, требующий сортировку по возрастанию
          schema:
            type: integer
            enum:
              - 0
              - 1
        - in: query
          name: offset
          description: Смещение относительно начала отфильтрованного списка сделок
          schema:
            type: integer
            minimum: 0
        - in: query
          name: limit
          description: Размер фрагмента списка
          schema:
            type: integer
            default: 30
            maximum: 500
        - in: query
          name: userpic_size
          description: Размер изображений сотрудников в пикселях, URL которых нужно получить в составе информации о сделках
          schema:
            type: integer
            default: 32
      responses:
        200:
          description: Список сделок.
          content:
            application/json:
              schema:
                type: object
                properties:
                  params:
                    type: object
                    description: Параметры формирования списка сделок
                    properties:
                      user_id:
                        type: integer
                        description: ID сотрудника
                      contact_id:
                        type: integer
                        description: ID контакта, с которым связан сделка
                      search:
                        type: string
                        description: Поисковый запрос
                      pinned_only:
                        type: boolean
                        description: Флаг для получения только избранных сделок
                      sort:
                        type: string
                        description: Поле, по которому нужно отсортировать полученный список сделок
                      asc:
                        type: boolean
                        description: Признак сортировки по возрастанию
                      page:
                        type: integer
                        description: Номер страницы для постраничной навигации по списку сделок
                      limit:
                        type: integer
                        description: Размер возвращаемого фрагмента списка сделок
                      offset:
                        type: integer
                        description: Смещение относительно начала списка сделок
                      total_count:
                        type: integer
                        description: Количество сделок, соответствующих указанным параметрам фильтрации
                      filter:
                        type: object
                        description: Примененные параметры фильтрации
                        properties:
                          funnel_id:
                            type: integer
                            description: ID сделки
                          stage_id:
                            type: integer
                            description: ID воронки
                          tag_id:
                            type: integer
                            description: ID тега
                          reminder_state:
                            type: array
                            description: |
                              Статус напоминания
                              + **completed**: выполнено
                              + **overdue**: просрочено
                              + **burn**: сильно просрочено
                              + **actual**: актуальное
                              + **normal**: обычное
                            items:
                              type: string
                              enum:
                                - no
                                - overdue
                                - unread
                                - burn
                                - actual
                      fields:
                        type: array
                        description: Запрошенные поля сделок
                        items:
                          type: string
                  data:
                    type: array
                    description: Свойства сделок
                    items:
                      $ref: '#/components/schemas/dealListRow'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.lostreason.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.lostreason.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.lostreason.list/
      summary: Возвращает список причин проигрыша сделок, настроенных для указанной воронки.
      parameters:
        - in: query
          name: funnel_id
          description: ID воронки
          required: true
          schema:
            type: integer
      responses:
        200:
          description: Информация о причинах проигрыша сделок.
          content:
            application/json:
              schema:
                type: object
                properties:
                  required:
                    type: boolean
                    description: Флаг, означающий необходимость обязательно указывать причину проигрыша при проигрыше сделки
                  allow_custom:
                    type: boolean
                    description: Флаг, означающий доступность возможности вводить произвольное описание причины проигрыша вместо выбора доступных вариантов
                  lostreasons:
                    type: array
                    description: Список причин проигрыша
                    items:
                      type: object
                      properties:
                        id:
                          type: integer
                          description: ID причины
                        name:
                          type: string
                          description: Название причины
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.move:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.move
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.move/
      summary: Перемещает сделку на другой этап.
      parameters:
        - in: query
          name: id
          description: ID сделки
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - stage_id
              properties:
                stage_id:
                  type: integer
                  description: ID воронки
                force:
                  type: boolean
                  description: Флаг, обозначающий смену этапа без подтверждения пользователем
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        409:
          description: Действие требует дополнительных данных или подтверждения.
          content:
            application/json:
              schema:
                type: object
                properties:
                  dialog_html:
                    type: string
                    description: HTML-код для показа сотруднику информационного сообщения в виде диалога
                  order_id:
                    type: integer
                    description: ID заказа Shop-Script, если при закрытии сделки нужно выполнить действие со связанным с нею заказом
                    nullable: true
                  action_id:
                    type: string
                    description: Идентификатор действия, которое должно быть выполнено со связанным заказом Shop-Script при закрытии сделки
                    nullable: true
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.participant.add:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.participant.add
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.participant.add/
      summary: Добавляет участника в сделку в качестве заказчика или исполнителя.
      parameters:
        - in: query
          name: userpic_size
          description: Размер изображений участников сделки в пикселях, URL которых нужно получить
          schema:
            type: integer
            default: 32
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - deal_id
                - contact_id
                - role_id
              properties:
                deal_id:
                  type: integer
                  description: ID сделки
                contact_id:
                  type: integer
                  description: ID контакта
                role_id:
                  type: string
                  description: |
                    Тип участника
                    + **CLIENT**: клиент
                    + **USER**: сотрудник
                  enum:
                    - CLIENT
                    - USER
                label:
                  type: string
                  description: Название роли контакта в сделке
                is_responsible:
                  type: boolean
                  description: Флаг для добавления участника в сделку в качестве ответственного, если в параметре *role_id* передано значение '*USER*'
                force:
                  type: boolean
                  description: Флаг, обозначающий добавление участника без подтверждения пользователем
                replace_contact_id:
                  type: integer
                  description: ID контакта
      responses:
        201:
          description: Свойства добавленного участника.
          content:
            application/json:
              schema:
                oneOf:
                  - type: object
                    properties:
                      contact:
                        description: Свойства клиента
                        allOf:
                          - $ref: '#/components/schemas/dealClient'
                  - type: object
                    properties:
                      user:
                        description: Свойства сотрудника
                        allOf:
                          - $ref: '#/components/schemas/dealUser'
                      user_contact_id:
                        type: integer
                        description: ID добавленного сотрудника
                      rights:
                        description: Информация о правах доступа
                        allOf:
                          - $ref: '#/components/schemas/dealUserRights'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        409:
          description: Действие требует дополнительных данных или подтверждения.
          content:
            application/json:
              schema:
                type: object
                properties:
                  dialog_html:
                    type: string
                    description: HTML-код для показа сотруднику информационного сообщения в виде диалога
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.participant.delete:
    delete:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.participant.delete
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.participant.delete/
      summary: Удаляет участника из сделки.
      parameters:
        - in: query
          name: deal_id
          description: ID сделки
          required: true
          schema:
            type: integer
        - in: query
          name: contact_id
          description: ID контакта
          required: true
          schema:
            type: integer
        - in: query
          name: role_id
          description: Роль контакта в сделке
          required: true
          schema:
            type: string
            description: |
              Тип участника
              + **CLIENT**: клиент
              + **USER**: сотрудник
            enum:
              - CLIENT
              - USER
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                force:
                  type: boolean
                  description: Флаг, обозначающий удаление участника-исполнителя без проверки его прав доступа
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        409:
          description: Действие требует дополнительных данных или подтверждения.
          content:
            application/json:
              schema:
                type: object
                properties:
                  dialog_html:
                    type: string
                    description: HTML-код для показа сотруднику информационного сообщения в виде диалога
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.patch:
    patch:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.patch
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.patch/
      summary: Обновляет указанные поля сделки.
      parameters:
        - in: query
          name: id
          description: ID сделки
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: array
              description: Поля сделки
              items:
                type: object
                required:
                  - field
                  - value
                properties:
                  field:
                    type: string
                    description: ID поля
                  value:
                    type: string
                    description: Значение поля
      responses:
        200:
          description: Свойства обновлённых полей сделки.
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/fieldData'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    description: Код ошибки
                  error_description:
                    type: string
                    description: Описание ошибки
                  error_fields:
                    type: array
                    description: Поля, связанные с ошибкой
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                          description: ID поля
                        value:
                          type: string
                          description: Некорректное значение
                        code:
                          type: string
                          description: Код ошибки
                        description:
                          type: string
                          description: Описание ошибки
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.pin:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.pin
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.pin/
      summary: Добавляет сделку в список избранных.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
              properties:
                id:
                  type: integer
                  description: ID сделки
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Контакт не найден.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.recent:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.recent
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.recent/
      summary: Возвращает список недавних и избранных сделок.
      parameters:
        - in: query
          name: userpic_size
          description: Размер изображений контактов в пикселях, URL которых нужно получить в составе информации о сделках
          schema:
            type: integer
            default: 32
        - in: query
          name: limit
          description: Максимальное количество недавних сделок, которые нужно получить
          schema:
            type: integer
            default: 10
      responses:
        200:
          description: Список недавних и избранных сделок.
          content:
            application/json:
              schema:
                type: object
                properties:
                  recent:
                    type: array
                    description: Список недавних сделок
                    items:
                      $ref: '#/components/schemas/dealPin'
                  pinned:
                    type: array
                    description: Список избранных сделок
                    items:
                      $ref: '#/components/schemas/dealPin'
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.reopen:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.reopen
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.reopen/
      summary: Открывает выигранную или проигранную сделку.
      parameters:
        - in: query
          name: id
          description: ID сделки
          required: true
          schema:
            type: integer
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.role.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.role.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.role.list/
      summary: Возвращает список всех ранее сохраненных названий ролей для указанного типа участников сделок.
      parameters:
        - in: query
          name: scope
          description: Тип участников сделки
          required: true
          schema:
            type: string
            description: |
              Тип участника
              + **CLIENT**: клиент
              + **USER**: сотрудник
            enum:
              - CLIENT
              - USER
      responses:
        200:
          description: Список ролей.
          content:
            application/json:
              schema:
                type: array
                items:
                  type: string
                  description: Название роли
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.shopaction:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.shopaction
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.shopaction/
      summary: Выполняет действие с заказом Shop-Script, связанным со сделкой.
      parameters:
        - in: query
          name: order_id
          description: ID заказа
          required: true
          schema:
            type: integer
        - in: query
          name: action_id
          description: ID действия
          required: true
          schema:
            type: string
        - in: query
          name: userpic_size
          description: Размер изображений контактов в пикселях, URL которых нужно получить
          schema:
            type: integer
            default: 32
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              type: object
              description: Данные для выполнения действия с заказом
              additionalProperties: true
      responses:
        200:
          description: Свойства сделки, связанной с заказом.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/deal'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        409:
          description: Действие недоступно для указанного заказа.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.deal.unpin:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.deal.unpin
        url: https://developers.webasyst.ru/api/explorer/crm/crm.deal.unpin/
      summary: Удаляет сделку из списка избранных.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
              properties:
                id:
                  type: integer
                  description: ID сделки
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Контакт не найден.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.field.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.field.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.field.list/
      summary: Возвращает список полей, которые доступны для заполнения в свойствах контактов или сделок.
      parameters:
        - in: query
          name: scope
          description: |
            Обозначение группы полей, список которых нужно получить
            + **contact**: любой контакт
            + **person**: персона
            + **company**: компания
            + **deal**: сделка
          schema:
            type: string
            enum:
              - contact
              - person
              - company
              - deal
          required: true
      responses:
        200:
          description: Список полей.
          content:
            application/json:
              schema:
                type: array
                items:
                  description: Свойства поля
                  allOf:
                    - $ref: '#/components/schemas/field'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.file.add:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.file.add
        url: https://developers.webasyst.ru/api/explorer/crm/crm.file.add/
      summary: Загружает файл и прикрепляет его к контакту или сделке.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                file:
                  type: string
                  format: byte
                  nullable: false
                  description: Файл
                file_name:
                  type: string
                  description: Имя файла
                deal_id:
                  type: integer
                  description: ID сделки
                contact_id:
                  type: integer
                  description: ID контакта
                comment:
                  type: string
                  format: text
                  description: Комментарий
              required:
                - file
                - file_name
      responses:
        200:
          description: Свойства файла.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/file'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.file.delete:
    delete:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.file.delete
        url: https://developers.webasyst.ru/api/explorer/crm/crm.file.delete/
      summary: Удаляет файл.
      parameters:
        - in: query
          name: id
          description: ID файла
          required: true
          schema:
            type: integer
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.file.download:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.file.download
        url: https://developers.webasyst.ru/api/explorer/crm/crm.file.download/
      summary: Скачивает файл.
      parameters:
        - in: query
          name: id
          description: ID файла
          required: true
          schema:
            type: integer
      responses:
        200:
          description: Файл.
          content:
            "*/*":
              schema:
                type: string
                format: binary
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.file.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.file.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.file.list/
      summary: Возвращает список файлов, связанных с контактом или сделкой.
      parameters:
        - in: query
          name: contact_id
          description: ID контакта
          schema:
            type: integer
        - in: query
          name: deal_id
          description: ID сделки
          schema:
            type: integer
        - in: query
          name: userpic_size
          description: Размер изображений контактов в пикселях, URL которых нужно получить в составе информации о файлах
          schema:
            type: integer
            default: 32
        - in: query
          name: thumb_size
          description: Размер эскиза графического файла в пикселях
          schema:
            type: integer
            default: 64
      responses:
        200:
          description: Список файлов.
          content:
            application/json:
              schema:
                type: array
                items:
                  description: Свойства файла
                  allOf:
                    - $ref: '#/components/schemas/file'
                    - type: object
                      properties:
                        creator:
                          description: Информация о сотруднике, загрузившем файл
                          allOf:
                            - $ref: '#/components/schemas/contactMinimal'
                        deal:
                          description: Информация о сделке, для которой загружен файл (доступна, если запрошены файлы, связанные с указанным клиентом)
                          allOf:
                            - $ref: '#/components/schemas/dealShort'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.funnel.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.funnel.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.funnel.list/
      summary: Возвращает список доступных сотруднику воронок.
      parameters:
        - in: query
          name: with_count
          description: Флаг для добавления в возвращаемую информацию о воронках и их этапах количество связанных с ними сделок
          schema:
            type: integer
            enum:
              - 1
              - 0
      responses:
        200:
          description: Список воронок.
          content:
            application/json:
              schema:
                type: array
                items:
                  description: Свойства воронки
                  type: object
                  properties:
                    id:
                      type: integer
                      description: ID воронки
                    name:
                      type: string
                      description: Название воронки
                    sort:
                      type: integer
                      description: Значение сортировки
                    color:
                      type: string
                      description: HTML-обозначение цвета
                    open_color:
                      type: string
                      description: HTML-обозначение цвета первого этапа воронки
                    close_color:
                      type: string
                      description: HTML-обозначение цвета последнего этапа воронки
                    deal_count:
                      type: integer
                      description: Количество сделок в воронке
                    stages:
                      type: array
                      description: Список этапов воронки
                      items:
                        type: object
                        properties:
                          id:
                            type: integer
                            description: ID этапа воронки
                          funnel_id:
                            type: integer
                            description: ID воронки
                          name:
                            type: string
                            description: Название этапа воронки
                          number:
                            type: integer
                            description: Значение сортировки этапа
                          color:
                            type: string
                            description: HTML-обозначение цвета этапа
                          limit_hours:
                            type: integer
                            description: Лимит времени в часах
                            nullable: true
                          deal_count:
                            type: integer
                            description: Количество сделок на этапе
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.history:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.history
        url: https://developers.webasyst.ru/api/explorer/crm/crm.history/
      summary: Возвращает историю действий сотрудников.
      parameters:
        - in: query
          name: min_id
          description: Минимальный ID записи, начиная с которого нужно получить список записей
          schema:
            type: integer
        - in: query
          name: max_id
          description: Максимальный ID записи, не выше которого нужно получить список записей
          schema:
            type: integer
            default: 0
        - in: query
          name: limit
          description: Максимальное количество записей, которые нужно получить
          schema:
            type: integer
            default: 30
            maximum: 500
        - in: query
          name: contact_id
          description: ID контакта
          schema:
            type: integer
        - in: query
          name: user_id
          description: ID сотрудника, с которым должны быть связаны полученные записи
          schema:
            type: integer
        - in: query
          name: deal_id
          description: ID сделки, с которой должны быть связаны полученные записи
          schema:
            type: integer
        - in: query
          name: filters[]
          description: |
            Параметры фильтрации списка записей
            + **reminders**: отметка напоминаний как выполненных
            + **notes**: добавление заметок
            + **files**: загрузка файлов
            + **invoices**: действия со счетами
            + **deals**: действия со сделками
            + **contacts**: действия с контактами
            + **messages**: действия с сообщениями
            + **calls**: действия с телефонными звонками
            + **order_log**: действия с заказами Shop-Script
          schema:
            type: array
            items:
              type: string
              enum:
                - reminders
                - notes
                - files
                - invoices
                - deals
                - contacts
                - messages
                - calls
                - order_log
            nullable: true
        - in: query
          name: userpic_size
          description: Размер изображений контактов (в пикселях), URL которых нужно получить в составе истории действий сотрудников
          schema:
            type: integer
            default: 32
      responses:
        200:
          description: История действий сотрудников.
          content:
            application/json:
              schema:
                type: object
                properties:
                  log:
                    type: array
                    description: Свойства записей
                    items:
                      $ref: '#/components/schemas/logRecord'
                  count:
                    type: integer
                    description: Количество возвращённых записей
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.invoice.info:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.invoice.info
        url: https://developers.webasyst.ru/api/explorer/crm/crm.invoice.info/
      summary: Возвращает информацию о счёте на оплату.
      parameters:
        - in: query
          name: id
          description: ID счёта
          required: true
          schema:
            type: integer
        - in: query
          name: userpic_size
          description: Размер изображений контактов в пикселях, URL которых нужно получить в составе информации о счёте
          schema:
            type: integer
            default: 32
      responses:
        200:
          description: Свойства счёта.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/invoiceFullInfo'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Счёт не найден.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.invoice.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.invoice.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.invoice.list/
      summary: Возвращает список счетов на оплату.
      parameters:
        - in: query
          name: contact_id
          description: ID контакта клиента, если нужно получить только счета, связанные с этим клиентом
          schema:
            type: integer
        - in: query
          name: userpic_size
          description: Размер изображений контактов в пикселях, URL которых нужно получить в составе информации о счетах
          schema:
            type: integer
            default: 32
        - in: query
          name: deal_id
          description: ID сделки, если нужно получить только счета, связанные с этой сделкой
          schema:
            type: integer
        - in: query
          name: number
          description: Любая часть редактируемого номера счёта, если нужно получить только счета, в номерах которых есть указанный фрагмент
          schema:
            type: string
        - in: query
          name: state_id
          description: |
            Статус счёта, если нужно получить только счета в этом статусе
            + **PENDING**: ожидает оплату
            + **PAID**: оплачен
            + **REFUNDED**: выполнен возврат
            + **ARCHIVED**: в архиве
            + **DRAFT**: черновик
            + **PROCESSING**: обработка
          schema:
            type: string
            enum:
              - PENDING
              - PAID
              - REFUNDED
              - ARCHIVED
              - DRAFT
              - PROCESSING
        - in: query
          name: sort
          description: |
            ID поля сортировки для списка счетов
            + **create_datetime**: дата и время создания
            + **update_datetime**: дата и время последнего обновления
            + **payment_datetime**: дата и время оплаты
          schema:
            type: string
            enum:
              - create_datetime
              - update_datetime
              - payment_datetime
        - in: query
          name: asc
          description: Флаг, требующий сортировку по возрастанию
          schema:
            type: integer
            enum:
              - 0
              - 1
        - in: query
          name: offset
          description: Смещение от начала списка счетов, отфильтрованного по указанным критериям
          schema:
            type: integer
            default: 0
            minimum: 0
        - in: query
          name: limit
          description: Размер фрагмента списка счетов
          schema:
            type: integer
            default: 30
            maximum: 500
      responses:
        200:
          description: Список счетов.
          content:
            application/json:
              schema:
                type: object
                properties:
                  params:
                    type: object
                    description: Параметры формирования списка счетов
                    properties:
                      sort:
                        type: object
                        description: Параметры сортировки
                        properties:
                          field:
                            type: string
                            description: Название поля, по которому выполняется сортировка
                          asc:
                            type: boolean
                            description: Значение параметра *asc*
                      offset:
                        type: integer
                        description: Значение параметра *offset*
                      limit:
                        type: integer
                        description: Значение параметра *limit*
                      total_count:
                        type: integer
                        description: Количество счетов, соответствующих указанным условиям фильтрации
                  data:
                    type: array
                    description: Свойства счетов
                    items:
                      $ref: '#/components/schemas/invoice'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.invoice.transaction:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.invoice.transaction
        url: https://developers.webasyst.ru/api/explorer/crm/crm.invoice.transaction/
      summary: Выполняет действие со счётом на оплату.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID счёта
                action:
                  type: string
                  description: |
                    Идентификатор действия
                    + **accept**: подтверждение получения оплаты в рамках двухстадийного платежа
                    + **refuse**: отказ от получения оплаты в рамках двухстадийного платежа
                    + **refund**: возврат платежа
                    + **paid**: отметка счёта как оплаченного
                    + **activate**: активация счёта
                    + **delete**: удаление
                    + **archive**: перенос в архив
                    + **cancel**: отмена оплаты в течение 1 часа с переводом счёта в статус ожидания
                    + **draft**: перенос в черновики
                  enum:
                    - accept
                    - refuse
                    - refund
                    - paid
                    - activate
                    - delete
                    - archive
                    - cancel
                    - draft
              required:
                - id
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.message.info:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.message.info
        url: https://developers.webasyst.ru/api/explorer/crm/crm.message.info/
      summary: Возвращает информацию о сообщении.
      parameters:
        - in: query
          name: id
          description: ID сообщения
          required: true
          schema:
            type: integer
        - in: query
          name: userpic_size
          description: Размер изображения контакта в пикселях, URL которого нужно получить в составе информации о сообщении
          schema:
            type: integer
            default: 32
      responses:
        200:
          description: Свойства сообщения.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/message'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.message.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.message.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.message.list/
      summary: Возвращает список сообщений в переписке.
      parameters:
        - in: query
          name: conversation_id
          description: ID переписки
          required: true
          schema:
            type: integer
        - in: query
          name: max_id
          description: Максимальный ID сообщения, которое может присутствовать в полученном списке
          schema:
            type: integer
            default: 0
        - in: query
          name: min_id
          description: Минимальный ID сообщения, которое может присутствовать в полученном списке
          schema:
            type: integer
        - in: query
          name: limit
          description: Размер фрагмента списка сообщений
          schema:
            type: integer
            default: 30
            maximum: 500
        - in: query
          name: userpic_size
          description: Размер изображений контактов в пикселях, URL которых нужно получить в составе информации о сообщениях
          schema:
            type: integer
            default: 32
      responses:
        200:
          description: Информация о сообщениях.
          content:
            application/json:
              schema:
                type: object
                properties:
                  params:
                    type: object
                    description: Параметры формирования списка сообщений
                    properties:
                      conversation_id:
                        type: integer
                        description: Значение параметра *conversation_id*
                      limit:
                        type: integer
                        description: Значение параметра *limit*
                      max_id:
                        type: integer
                        description: Значение параметра *max_id*, если указано
                      min_id:
                        type: integer
                        description: Значение параметра *min_id*, если указано
                      total_count:
                        type: integer
                        description: Общее количество сообщений, соответствующих указанным параметрам фильтрации
                  messages:
                    type: array
                    description: Свойства сообщений
                    items:
                      $ref: '#/components/schemas/message'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.message.send:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.message.send
        url: https://developers.webasyst.ru/api/explorer/crm/crm.message.send/
      summary: Отправляет ответ на сообщение клиента.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - reply_message_id
              properties:
                reply_message_id:
                  type: integer
                  description: ID сообщения клиента, на которое нужно отправить ответ
                body:
                  type: string
                  format: text
                  description: Текст сообщения (может быть пустым, если заполнен параметр *attachments*)
                content_type:
                  description: Тип содержимого сообщения
                  default: plain-text
                  type: string
                  enum:
                    - plain-text
                    - html
                attachments:
                  type: array
                  description: Список приложенных файлов
                  items:
                    type: object
                    properties:
                      file:
                        type: string
                        format: byte
                        description: Файл
                      file_name:
                        type: string
                        description: Имя файла
                      type:
                        type: string
                        description: |
                          Тип файла
                          + **IMAGE**: изображение
                          + **OTHER**: другой
                        default: OTHER
                        enum:
                          - IMAGE
                          - OTHER
      responses:
        200:
          description: Свойства отправленного сообщения.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message_id:
                    type: integer
                    description: ID сообщения
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.message.sendEmail:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.message.sendEmail
        url: https://developers.webasyst.ru/api/explorer/crm/crm.message.sendEmail/
      summary: Отправляет email-сообщение контакту.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - contact_id
                - subject
                - body
              properties:
                contact_id:
                  type: integer
                  description: ID контакта
                email_to:
                  type: string
                  format: email
                  description: Email-адрес, на который нужно отправить сообщение (если указанного адреса нет в профиле контакта, сообщение будет отправлено на его основной адрес)
                deal_id:
                  type: integer
                  description: ID сделки, к которой должно быть прикреплено отправленное сообщение
                subject:
                  type: string
                  description: Тема сообщения
                body:
                  type: string
                  format: text
                  description: Текст сообщения
                content_type:
                  description: Тип содержимого сообщения
                  default: plain-text
                  type: string
                  enum:
                    - plain-text
                    - html
                attachments:
                  type: array
                  description: Список приложенных файлов
                  items:
                    type: object
                    properties:
                      file:
                        type: string
                        format: byte
                        description: Файл
                      file_name:
                        type: string
                        description: Имя файла
      responses:
        200:
          description: Свойства отправленного сообщения.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message_id:
                    type: integer
                    description: ID сообщения
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.message.sendFile:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.message.sendFile
        url: https://developers.webasyst.ru/api/explorer/crm/crm.message.sendFile/
      summary: Отправляет клиенту файл в мессенджер.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                reply_message_id:
                  type: integer
                  description: ID сообщения клиента, полученное через мессенджер, в ответ на которое нужно отправить файл
                file:
                  type: string
                  format: byte
                  description: Файл
                file_name:
                  type: string
                  description: Имя файла
                type:
                  type: string
                  description: |
                    Тип файла
                    + **IMAGE**: изображение
                    + **OTHER**: другой
                  default: OTHER
                  enum:
                    - IMAGE
                    - OTHER
              required:
                - reply_message_id
                - file
                - file_name
      responses:
        200:
          description: Свойства отправленного сообщения.
          content:
            application/json:
              schema:
                type: object
                properties:
                  message_id:
                    type: integer
                    description: ID сообщения
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.note.add:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.note.add
        url: https://developers.webasyst.ru/api/explorer/crm/crm.note.add/
      summary: Добавляет заметку в профиль клиента или сделки.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                contact_id:
                  type: integer
                  description: ID контакта
                deal_id:
                  type: integer
                  description: ID сделки
                content:
                  type: string
                  format: text
                  description: Текст заметки
                attachments:
                  type: array
                  description: Список приложенных файлов
                  items:
                    type: object
                    properties:
                      file:
                        type: string
                        format: byte
                        description: Файл
                      file_name:
                        type: string
                        description: Имя файла
                    required:
                      - file_name
              required:
                - content
      responses:
        201:
          description: Информация о добавленной заметке.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    description: ID заметки.
                required:
                  - id
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.note.delete:
    delete:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.note.delete
        url: https://developers.webasyst.ru/api/explorer/crm/crm.note.delete/
      summary: Удаляет заметку.
      parameters:
        - in: query
          name: id
          description: ID заметки
          required: true
          schema:
            type: integer
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.note.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.note.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.note.list/
      summary: Возвращает список заметок из профиля клиента или сделки.
      parameters:
        - in: query
          name: contact_id
          description: ID контакта
          schema:
            type: integer
        - in: query
          name: deal_id
          description: ID сделки
          schema:
            type: integer
        - in: query
          name: userpic_size
          description: Размер изображений контактов в пикселях, URL которых нужно получить в составе информации о заметках
          schema:
            type: integer
            default: 32
        - in: query
          name: thumb_size
          description: Размер эскиза графического файла в пикселях
          schema:
            type: integer
            default: 64
      responses:
        200:
          description: Список заметок.
          content:
            application/json:
              schema:
                type: array
                items:
                  description: Свойства заметки
                  type: object
                  properties:
                    id:
                      type: integer
                      description: ID заметки
                    create_datetime:
                      type: string
                      format: date-time
                      description: Дата добавления
                    creator:
                      description: Свойства создавшего сотрудника
                      allOf:
                        - $ref: '#/components/schemas/contactMinimal'
                    content:
                      type: string
                      description: Текст заметки
                    files:
                      type: array
                      description: Свойства загруженных файлов
                      items:
                        $ref: '#/components/schemas/file'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.note.update:
    put:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.note.update
        url: https://developers.webasyst.ru/api/explorer/crm/crm.note.update/
      summary: Обновляет текст заметки в профиле клиента или сделки
      parameters:
        - in: query
          name: id
          required: true
          description: ID заметки
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                content:
                  type: string
                  format: text
                  description: Текст заметки
              required:
                - content
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Заметка не найдена.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.push.data:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.push.data
        url: https://developers.webasyst.ru/api/explorer/crm/crm.push.data/
      summary: Возвращает информацию о настроенном провайдере push-уведомлений.
      responses:
        200:
          description: Свойства провайдера.
          content:
            application/json:
              schema:
                type: object
                required:
                  - provider
                properties:
                  provider:
                    type: string
                    enum:
                      - none
                      - onesignal
                      - firebase
                    description: |
                      Идентификатор провайдера
                      + **none**: не выбран
                      + **onesignal**: OneSignal
                      + **firebase**: Firebase
        403:
          description: Доступ запрещён.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Заметка не найдена.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.push.enable:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.push.enable
        url: https://developers.webasyst.ru/api/explorer/crm/crm.push.enable/
      summary: Включает отправку push-уведомлений на данное устройство.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  required:
                    - firebase_client_token
                  properties:
                    firebase_client_token:
                      type: string
                      description: Firebase Client Registration Token
                - type: object
                  required:
                    - onesignal_app_id
                    - onesignal_player_id
                  properties:
                    onesignal_app_id:
                      type: string
                      description: OneSignal Application ID
                    onesignal_player_id:
                      type: string
                      description: OneSignal Client ID
      responses:
        204:
          description: Успешное выполнение запроса.
        403:
          description: Доступ запрещён.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.push.disable:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.push.disable
        url: https://developers.webasyst.ru/api/explorer/crm/crm.push.disable/
      summary: Отключает отправку push-уведомлений на данное устройство.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  required:
                    - firebase_client_token
                  properties:
                    firebase_client_token:
                      type: string
                      description: Firebase Client Registration Token
                - type: object
                  required:
                    - onesignal_app_id
                    - onesignal_player_id
                  properties:
                    onesignal_app_id:
                      type: string
                      description: OneSignal Application ID
                    onesignal_player_id:
                      type: string
                      description: OneSignal Client ID
      responses:
        204:
          description: Успешное выполнение запроса.
        403:
          description: Доступ запрещён.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.region.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.region.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.region.list/
      summary: Возвращает список регионов страны.
      parameters:
        - in: query
          name: country
          description: ISO-код страны
          required: true
          schema:
            type: string
      responses:
        200:
          description: Список регионов.
          content:
            application/json:
              schema:
                type: array
                items:
                  description: Свойства региона
                  type: object
                  properties:
                    code:
                      type: string
                      description: Код региона
                    name:
                      type: string
                      description: Название региона
                    is_favorite:
                      type: boolean
                      description: Признак присутствия региона в списке избранных
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.reminder.add:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.reminder.add
        url: https://developers.webasyst.ru/api/explorer/crm/crm.reminder.add/
      summary: Добавляет напоминание.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                contact_id:
                  type: integer
                  description: ID контакта, с которым должно быть связано напоминание
                deal_id:
                  type: integer
                  description: ID сделки, с которой должно быть связано напоминание
                user_id:
                  type: integer
                  description: ID контакта сотрудника, для которого нужно добавить напоминание (по умолчанию пользователь добавляет напоминание для самого себя)
                content:
                  type: string
                  format: text
                  description: Текст напоминания
                type:
                  type: string
                  description: |
                    Тип напоминания
                    + **MEETING**: встреча
                    + **CALL**: звонок
                    + **MESSAGE**: сообщение
                    + **OTHER**: другое
                  default: OTHER
                  enum:
                    - MEETING
                    - CALL
                    - MESSAGE
                    - OTHER
                due_date:
                  type: string
                  format: date
                  nullable: true
                  description: Дата напоминания в формате «гггг-мм-дд»
                due_datetime:
                  type: string
                  format: date-time
                  description: Дата и время напоминания в формате «гггг-мм-дд чч:мм»
      responses:
        201:
          description: Свойства добавленного напоминания.
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: integer
                    description: ID напоминания
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.reminder.delete:
    delete:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.reminder.delete
        url: https://developers.webasyst.ru/api/explorer/crm/crm.reminder.delete/
      summary: Удаляет еще не выполненное напоминание.
      parameters:
        - in: query
          name: id
          description: ID напоминания
          required: true
          schema:
            type: integer
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.reminder.done:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.reminder.done
        url: https://developers.webasyst.ru/api/explorer/crm/crm.reminder.done/
      summary: Маркировка напоминания как выполненного
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID напоминания
              required:
                - id
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.reminder.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.reminder.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.reminder.list/
      summary: Возвращает список напоминаний
      parameters:
        - in: query
          name: is_completed
          description: Флаг для получения только выполненных напоминаний
          schema:
            type: integer
            enum:
              - 1
              - 0
        - in: query
          name: is_my_only
          description: Флаг для получения только напоминаний для текущего пользователя
          schema:
            type: integer
            enum:
              - 1
              - 0
        - in: query
          name: user_id
          description: ID сотрудника, чьи напоминания нужно получить (если не установлен флаг в параметре *is_my_only*)
          schema:
            type: integer
        - in: query
          name: contact_id
          description: ID клиента, чтобы получить только связанные с ним напоминания
          schema:
            type: integer
        - in: query
          name: deal_id
          description: ID сделки, чтобы получить только связанные с ней напоминания
          schema:
            type: integer
        - in: query
          name: id[]
          description: Массив ID напоминаний, список которых нужно получить
          schema:
            type: array
            items:
              type: integer
        - in: query
          name: type
          description: |
            Тип напоминания, чтобы получить напоминания только этого типа
            + **MEETING**: встреча
            + **CALL**: звонок
            + **MESSAGE**: сообщение
            + **OTHER**: другое
          schema:
            type: string
            enum:
              - MEETING
              - CALL
              - MESSAGE
              - OTHER
        - in: query
          name: due_date
          description: Дата напоминания в формате «гггг-мм-дд», чтобы получить напоминания только за эту дату
          schema:
            type: string
            format: date
        - in: query
          name: offset
          description: Смещение относительно списка отфильтрованных напоминаний
          schema:
            type: integer
            minimum: 0
        - in: query
          name: limit
          description: Размер фрагмента списка напоминаний
          schema:
            type: integer
            default: 30
            maximum: 500
      responses:
        200:
          description: Свойства полученных напоминаний.
          content:
            application/json:
              schema:
                type: object
                properties:
                  params:
                    type: object
                    description: Параметры формирования списка напоминаний
                    properties:
                      total_count:
                        description: Общее количество напоминаний, соответствующих условиям фильтрации
                        type: integer
                      offset:
                        description: Значение параметра *offset*
                        type: integer
                      limit:
                        description: Значение параметра *limit*
                        type: integer
                  data:
                    type: array
                    description: Свойства напоминаний
                    items:
                      $ref: '#/components/schemas/reminder'
        500:
          description: Внутренняя ошибка сервера.
  /crm.reminder.undone:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.reminder.undone
        url: https://developers.webasyst.ru/api/explorer/crm/crm.reminder.undone/
      summary: Отмечает выполненное напоминание как еще не выполненное.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: integer
                  description: ID напоминания
              required:
                - id
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.reminder.update:
    put:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.reminder.update
        url: https://developers.webasyst.ru/api/explorer/crm/crm.reminder.update/
      summary: Обновляет свойства напоминания.
      parameters:
        - in: query
          name: id
          required: true
          description: ID напоминания
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                contact_id:
                  type: integer
                  description: ID контакта
                deal_id:
                  type: integer
                  description: ID сделки
                user_id:
                  type: integer
                  description: ID сотрудника
                content:
                  type: string
                  format: text
                  description: Текст напоминания
                type:
                  type: string
                  description: |
                    Тип напоминания
                    + **MEETING**: встреча
                    + **CALL**: звонок
                    + **MESSAGE**: сообщение
                    + **OTHER**: другое
                  default: OTHER
                  enum:
                    - MEETING
                    - CALL
                    - MESSAGE
                    - OTHER
                due_date:
                  type: string
                  format: date
                  nullable: true
                  description: Дата напоминания в формате «гггг-мм-дд»
                due_datetime:
                  type: string
                  format: date-time
                  description: Дата и время напоминания в формате «гггг-мм-дд чч:мм»
              required:
                - user_id
                - content
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.responsible.assign:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.responsible.assign
        url: https://developers.webasyst.ru/api/explorer/crm/crm.responsible.assign/
      summary: Назначает сотрудника, ответственного за указанные контакты, сделки или переписки.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    user_id:
                      type: integer
                      description: ID сотрудника, которого нужно назначить ответственным (или 0, чтобы снять назначение ответственного)
                    contact_id:
                      type: array
                      description: Массив ID контактов, для которых нужно выбрать ответственного сотрудника
                      items:
                        type: integer
                - type: object
                  properties:
                    user_id:
                      type: integer
                      description: ID сотрудника, которого нужно назначить ответственным (или 0, чтобы снять назначение ответственного)
                    deal_id:
                      type: array
                      description: Массив ID сделок, для которых нужно выбрать ответственного сотрудника
                      items:
                        type: integer
                - type: object
                  properties:
                    user_id:
                      type: integer
                      description: ID сотрудника, которого нужно назначить ответственным (или 0, чтобы снять назначение ответственного)
                    conversation_id:
                      type: array
                      description: Массив ID переписок, для которых нужно выбрать ответственного сотрудника
                      items:
                        type: integer
      responses:
        200:
          description: Список объектов, для которых не удалось установить ответственного сотрудника (или пустой ответ — если установить ответственного удалось для всех объектов).
          content:
            application/json:
              schema:
                type: object
                properties:
                  message:
                    type: string
                    description: Сообщение об ошибке
                  absent_contacts:
                    type: array
                    description: Массив ID отсутствующих контактов из числа указанных
                    items:
                      type: integer
                  unallowed_contacts:
                    type: array
                    description: Массив ID контактов из числа указанных, к которым у пользователя нет индивидуального доступа
                    items:
                      type: integer
                  unsuccess_contacts:
                    type: array
                    description: Массив контактов из числа указанных, к которым у пользователя нет доступа из-за ограничения по классу контакта
                    items:
                      $ref: '#/components/schemas/contactMinimal'
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Контакт не найден.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.responsible.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.responsible.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.responsible.list/
      summary: Возвращает список сотрудников, назначенных ответственными за контакты, сделки или переписки.
      parameters:
        - in: query
          name: scope
          description: |
            Тип объектов, для которых нужно получить список ответственных сотрудников
            + **contact**: контакты
            + **deal**: сделки
            + **conversation**: переписки
          schema:
            type: string
            default: contact
            enum:
              - contact
              - deal
              - conversation
        - in: query
          name: userpic_size
          description: Размер изображений контактов в пикселях, URL которых нужно получить в составе информации об ответственных сотрудниках
          schema:
            type: integer
            default: 32
      responses:
        200:
          description: Список ответственных сотрудников.
          content:
            application/json:
              schema:
                type: array
                items:
                  description: Свойства ответственного сотрудника
                  type: object
                  properties:
                    count:
                      type: integer
                      description: Количество объектов указанного типа, за которые ответственен данный сотрудник
                    responsible:
                      description: Свойства ответственного сотрудника
                      allOf:
                      - $ref: '#/components/schemas/contactMinimal'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.segment.add:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.segment.add
        url: https://developers.webasyst.ru/api/explorer/crm/crm.segment.add/
      summary: Создаёт новый сегмент контактов.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Название сегмента
                type:
                  type: string
                  description: |
                    Тип сегмента
                    + **category**: статический
                    + **search**: динамический
                  enum:
                    - category
                    - search
                icon:
                  type: string
                  description: Обозначение иконки
                  enum:
                    - user-friends
                    - search
                    - user
                    - folder
                    - file
                    - lock
                    - lock-open
                    - brush
                    - star
                    - pencil-alt
                    - bolt
                    - lightbulb
                    - images
                    - chart-bar
                    - book
                    - map-marker-alt
                    - camera
                    - hourglass-end
                    - cat
                    - anchor
                    - seeding
                    - car-alt
                    - save
                    - cookie
                    - radiation-alt
                    - film
                    - bug
                    - clock
                    - coffee
                    - home
                    - apple-alt
                    - briefcase
                    - guitar
                    - smile
                    - futbol
                    - bullseye
                    - award
                    - phone-alt
                    - store
                    - shopping-cart
                    - pen-alt
                    - life-ring
                    - columns
                    - seedling
                shared:
                  type: integer
                  description: Флаг включения сегмента в число доступных всем сотрудникам
                  enum:
                    - 0
                    - 1
                hash:
                  type: string
                  description: |
                    Хеш-строка с описанием параметров фильтрации контактов.

                    Примеры:
                    + **all** или **пустой хеш**: Поиск всех доступных контактов.
                    + **id/10,11,12**: Поиск контактов с указанными ID, перечисленными через запятую.
                    + **segment/1**: Поиск контактов из сегмента с указанным ID.
                    + **tag/1**: Поиск по тегу с указанным ID.
                    + **vault/1**: Поиск по классу контактов с указанным ID.
                    + **import/2000-01-01 00:00:00**: Поиск контактов, импортированных текущим пользователем начиная с указанных даты и времени.
                    + **responsible/me**: Поиск контактов, для которых в качестве ответственного указан текущий пользователь.
                    + **responsible/no**: Поиск контактов, для которых не указан ответственный сотрудник.
                    + **responsible/12**: Поиск контактов, для которых в качестве ответственного указан сотрудник с ID = 12.
                    + **recent**: Поиск недавно просмотренных контактов.
                    + **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**: Поиск по идентификатору страны (в этом примере '*rus*') и коду региона (в этом примере '*77*') в адресе.
                    + **search/address:region\*=область**: Поиск по любой части названия региона в адресе.
                    + **search/phone=799911122333**: Поиск по номеру телефона.
                    + **search/phone.home=799911122333**: Поиск по номеру телефона покупателя с указанием расширения поля контакта (в этом примере 'home').
                    + **search/phone^=7999**: Поиск по части номера телефона.
                    + **search/phone^=8999**: Поиск по номеру телефона с кодом международной связи вместо кода страны — сработает, если код международной связи (в этом примере *8*) указан в настройках авторизации любого сайта.
              required:
                - name
      responses:
        200:
          description: Свойства сегмента.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/segment'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.segment.archive:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.segment.archive
        url: https://developers.webasyst.ru/api/explorer/crm/crm.segment.archive/
      summary: Переносит сегмент контактов в архив или восстанавливает его из архива.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - id
              properties:
                id:
                  type: integer
                  description: ID сегмента
                action:
                  type: string
                  description: |
                    Обозначение действия с сегментом
                    + **archive**: перенести в архив
                    + **restore**: восстановить из архива
                  enum:
                    - archive
                    - restore
      responses:
        200:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.segment.delete:
    delete:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.segment.delete
        url: https://developers.webasyst.ru/api/explorer/crm/crm.segment.delete/
      summary: Удаляет сегмент контактов.
      parameters:
        - in: query
          name: id
          required: true
          description: ID сегмента
          schema:
            type: integer
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.segment.exclude:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.segment.exclude
        url: https://developers.webasyst.ru/api/explorer/crm/crm.segment.exclude/
      summary: Исключает указанные контакты из статического сегмента.
      parameters:
        - in: query
          name: id
          description: ID сегмента
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: array
              description: Массив ID контактов.
              items:
                type: integer
      responses:
        200:
          description: Информация о контактах в сегменте.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    description: Количество контактов в сегменте после выполнения метода
                    type: integer
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.segment.include:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.segment.include
        url: https://developers.webasyst.ru/api/explorer/crm/crm.segment.include/
      summary: Добавляет указанные контакты в статический сегмент.
      parameters:
        - in: query
          name: id
          description: ID сегмента
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: array
              description: Массив ID контактов
              items:
                type: integer
      responses:
        200:
          description: Информация о контактах в сегменте.
          content:
            application/json:
              schema:
                type: object
                properties:
                  count:
                    description: Количество контактов в сегменте после выполнения метода
                    type: integer
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.segment.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.segment.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.segment.list/
      summary: Возвращает список доступных сотруднику сегментов контактов.
      responses:
        200:
          description: Свойства сегментов.
          content:
            application/json:
              schema:
                type: object
                properties:
                  shared:
                    type: array
                    description: Свойства общедоступных сегментов
                    items:
                      $ref: '#/components/schemas/segment'
                  my:
                    type: array
                    description: Свойства личных сегментов пользователя
                    items:
                      $ref: '#/components/schemas/segment'
                  archived:
                    type: object
                    description: Список архивных сегментов
                    properties:
                      shared:
                        type: array
                        description: Свойства общедоступных архивных сегментов
                        items:
                          $ref: '#/components/schemas/segment'
                      my:
                        type: array
                        description: Свойства личных архивных сегментов
                        items:
                          $ref: '#/components/schemas/segment'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.segment.order:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.segment.order
        url: https://developers.webasyst.ru/api/explorer/crm/crm.segment.order/
      summary: Обновляет порядок сортировки доступных сотруднику сегментов контактов.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              required:
                - ids
                - scope
              properties:
                ids:
                  type: array
                  description: Массив ID сегментов в требуемом порядке
                  items:
                    type: integer
                scope:
                  type: string
                  description: |
                    Обозначение группы сегментов
                    + **shared**: общедоступные сегменты
                    + **my**: личные сегменты
                  enum:
                    - shared
                    - my
      responses:
        204:
          description: Успешное выполнение запроса.
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.segment.update:
    put:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.segment.update
        url: https://developers.webasyst.ru/api/explorer/crm/crm.segment.update/
      summary: Обновляет отдельные свойства сегмента контактов.
      parameters:
        - in: query
          name: id
          description: ID сегмента
          required: true
          schema:
            type: integer
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                name:
                  type: string
                  description: Название
                icon:
                  type: string
                  description: Обозначение иконки
                  enum:
                    - user-friends
                    - search
                    - user
                    - folder
                    - file
                    - lock
                    - lock-open
                    - brush
                    - star
                    - pencil-alt
                    - bolt
                    - lightbulb
                    - images
                    - chart-bar
                    - book
                    - map-marker-alt
                    - camera
                    - hourglass-end
                    - cat
                    - anchor
                    - seeding
                    - car-alt
                    - save
                    - cookie
                    - radiation-alt
                    - film
                    - bug
                    - clock
                    - coffee
                    - home
                    - apple-alt
                    - briefcase
                    - guitar
                    - smile
                    - futbol
                    - bullseye
                    - award
                    - phone-alt
                    - store
                    - shopping-cart
                    - pen-alt
                    - life-ring
                    - columns
                    - seedling
                shared:
                  type: integer
                  description: Флаг включения сегмента в число доступных всем сотрудникам
                  enum:
                    - 0
                    - 1
                hash:
                  type: string
                  description: |
                    Хеш-строка с описанием параметров фильтрации контактов.

                    Примеры:
                    + **all** или **пустой хеш**: Поиск всех доступных контактов.
                    + **id/10,11,12**: Поиск контактов с указанными ID, перечисленными через запятую.
                    + **segment/1**: Поиск контактов из сегмента с указанным ID.
                    + **tag/1**: Поиск по тегу с указанным ID.
                    + **vault/1**: Поиск по классу контактов с указанным ID.
                    + **import/2000-01-01 00:00:00**: Поиск контактов, импортированных текущим пользователем начиная с указанных даты и времени.
                    + **responsible/me**: Поиск контактов, для которых в качестве ответственного указан текущий пользователь.
                    + **responsible/no**: Поиск контактов, для которых не указан ответственный сотрудник.
                    + **responsible/12**: Поиск контактов, для которых в качестве ответственного указан сотрудник с ID = 12.
                    + **recent**: Поиск недавно просмотренных контактов.
                    + **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**: Поиск по идентификатору страны (в этом примере '*rus*') и коду региона (в этом примере '*77*') в адресе.
                    + **search/address:region\*=область**: Поиск по любой части названия региона в адресе.
                    + **search/phone=799911122333**: Поиск по номеру телефона.
                    + **search/phone.home=799911122333**: Поиск по номеру телефона покупателя с указанием расширения поля контакта (в этом примере 'home').
                    + **search/phone^=7999**: Поиск по части номера телефона.
                    + **search/phone^=8999**: Поиск по номеру телефона с кодом международной связи вместо кода страны — сработает, если код международной связи (в этом примере *8*) указан в настройках авторизации любого сайта.
      responses:
        200:
          description: Свойства сегмента.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/segment'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.tag.assign:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.tag.assign
        url: https://developers.webasyst.ru/api/explorer/crm/crm.tag.assign/
      summary: Присваивает теги доступным сотруднику контактам или сделкам.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    tag:
                      type: array
                      description: Массив названий тегов
                      items:
                        type: string
                    contact_id:
                      type: array
                      description: Массив ID контактов, которым нужно присвоить теги
                      items:
                        type: integer
                - type: object
                  properties:
                    tag:
                      type: array
                      description: Массив названий тегов
                      items:
                        type: string
                    deal_id:
                      type: array
                      description: Массив ID сделок, которым нужно присвоить теги
                      items:
                        type: integer
      responses:
        200:
          description: Список присвоенных тегов.
          content:
            application/json:
              schema:
                type: array
                items:
                  description: Свойства тега
                  allOf:
                    - $ref: '#/components/schemas/tag'
        204:
          description: Успешное выполнение запроса.
        500:
          description: Внутренняя ошибка сервера.
  /crm.tag.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.tag.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.tag.list/
      summary: Возвращает список всех тегов.
      responses:
        200:
          description: Список тегов.
          content:
            application/json:
              schema:
                type: array
                items:
                  description: Свойства тега
                  allOf:
                    - $ref: '#/components/schemas/tag'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.tag.remove:
    post:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.tag.remove
        url: https://developers.webasyst.ru/api/explorer/crm/crm.tag.remove/
      summary: Удаляет указанные теги у доступных сотруднику контактов или сделок.
      requestBody:
        content:
          application/json:
            schema:
              oneOf:
                - type: object
                  properties:
                    tag:
                      type: array
                      description: Массив названий тегов
                      items:
                        type: string
                    contact_id:
                      type: array
                      description: Массив ID контактов, у которых нужно удалить теги
                      items:
                        type: integer
                - type: object
                  properties:
                    tag:
                      type: array
                      description: Массив названий тегов
                      items:
                        type: string
                    deal_id:
                      type: array
                      description: Массив ID сделок, у которых нужно удалить теги
                      items:
                        type: integer
      responses:
        204:
          description: Успешное выполнение запроса.
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.user.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.user.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.user.list/
      summary: Возвращает список сотрудников, у которых есть доступ к CRM.
      parameters:
        - in: query
          name: userpic_size
          description: Размер изображений сотрудников (в пикселях), URL которые нужно получить
          schema:
            type: integer
            default: 32
        - in: query
          name: can_own_contact
          description: ID контакта, если нужно получить список только тех сотрудников, у которых есть к нему доступ
          schema:
            type: integer
        - in: query
          name: can_own_deal
          description: ID сделки, если нужно получить список только тех сотрудников, у которых есть доступ к её воронке
          schema:
            type: integer
        - in: query
          name: with_rights
          description: Флаг для получения информации о правах доступа к CRM для каждого сотрудника
          schema:
            type: integer
            enum:
              - 1
              - 0
      responses:
        200:
          description: Список сотрудников.
          content:
            application/json:
              schema:
                type: array
                items:
                  allOf:
                    - $ref: '#/components/schemas/contactMinimal'
                    - type: object
                      properties:
                        rights:
                          type: object
                          required:
                            - is_full
                          properties:
                            is_full:
                              type: boolean
                              description: Флаг наличия у сотрудника полного доступа к CRM
                            vaults:
                              type: array
                              description: Массив ID классов контактов, к которым у сотрудника есть доступ
                              items:
                                type: integer
                            funnels:
                              type: array
                              description: Свойства воронок
                              items:
                                type: object
                                properties:
                                  funnel_id:
                                    type: integer
                                    description: ID воронки
                                  level:
                                    type: string
                                    description: |
                                      Уровень доступа к воронке
                                      + **NO**: нет доступа
                                      + **OWN**: только свои
                                      + **OWN+FREE**: собственные и свободные
                                      + **FULL**: полный доступ
                                    enum:
                                      - NO
                                      - OWN
                                      - OWN+FREE
                                      - FULL
                            invoices:
                              type: string
                              description: |
                                Уровень доступа к счетам
                                + **NO**: нет доступа
                                + **OWN**: только свои
                                + **FULL**: полный доступ
                              enum:
                                - NO
                                - OWN
                                - FULL
                            calls:
                              type: string
                              description: |
                                Уровень доступа к звонкам
                                + **NO**: нет доступа
                                + **OWN**: только свои
                                + **FULL**: полный доступ
                              enum:
                                - NO
                                - OWN
                                - FULL
                            conversations:
                              type: string
                              description: |
                                Уровень доступа к перепискам
                                + **OWN**: только свои
                                + **OWN+FREE**: собственные и свободные
                                + **FULL**: полный доступ
                              enum:
                                - OWN
                                - OWN+FREE
                                - FULL
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        404:
          description: Содержимое не найдено.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.user.me:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.user.me
        url: https://developers.webasyst.ru/api/explorer/crm/crm.user.me/
      summary: Возвращает информацию о текущем пользователе.
      parameters:
        - in: query
          name: userpic_size
          description: Размер изображения сотрудника в пикселях, URL которого нужно получить
          schema:
            type: integer
            default: 32
      responses:
        200:
          description: Свойства пользователя.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/contactMinimal'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.user.settings.save:
    patch:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.user.settings.save
        url: https://developers.webasyst.ru/api/explorer/crm/crm.user.settings.save/
      summary: |
        Сохраняет персональные настройки текущего сотрудника: набор столбцов в списке контактов, сортировку списка контактов, фильтры в списке сделок, сортировку списка сделок.
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                contact_list_columns:
                  description: Массив столбцов, которые нужно показывать в списках контактов, — в том порядке, в котором должны быть показаны столбцы
                  type: array
                  items:
                    type: object
                    required:
                      - field
                      - width
                    properties:
                      field:
                        type: string
                        description: ID столбца
                      width:
                        type: string
                        enum:
                          - s
                          - m
                          - l
                        description: |
                          Ширина столбца
                          + **s**: узкий
                          + **m**: средний
                          + **l**: широкий
                contact_list_sort:
                  description: Параметры сортировки контактов
                  type: object
                  properties:
                    field:
                      type: string
                      description: ID столбца, по которому должны быть отсортированы контакты
                    asc:
                      type: boolean
                      description: Флаг, требующий сортировку по возрастанию
                deal_list_filter:
                  description: Список параметров фильтрации сделок
                  type: object
                  required:
                    - funnel_id
                    - stage_id
                    - tag_id
                    - user_id
                  properties:
                    funnel_id:
                      type: integer
                      description: ID воронки
                      nullable: true
                    stage_id:
                      nullable: true
                      oneOf:
                        - type: integer
                          description: ID этапа воронки
                        - type: string
                          enum:
                            - WON
                            - LOST
                          description: |
                            Статус сделки
                            + **WON**: выиграна
                            + **LOST**: проиграна
                    tag_id:
                      type: integer
                      description: ID тега
                      nullable: true
                    user_id:
                      type: integer
                      description: ID ответственного сотрудника
                      nullable: true
                deal_list_sort:
                  description: Параметры сортировки сделок
                  type: object
                  properties:
                    field:
                      type: string
                      description: |
                        ID поля сделки
                        + **stage_id**: ID этапа
                        + **create_datetime**: дата и время создания
                        + **reminder_datetime**: дата и время актуального напоминания
                        + **name**: название
                        + **amount**: предварительная стоимость
                        + **user_name**: имя ответственного сотрудника
                        + **last_action**: последнее действие
                      enum:
                        - stage_id
                        - create_datetime
                        - reminder_datetime
                        - name
                        - amount
                        - user_name
                        - last_action
                    asc:
                      type: boolean
                      description: Флаг, требующий сортировку по возрастанию
              required:
                - deal_list_sort
                - contact_list_sort
      responses:
        204:
          description: Успешное выполнение запроса.
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.
  /crm.vault.list:
    get:
      security:
        - BearerAuth: [ ]
      externalDocs:
        description: crm.vault.list
        url: https://developers.webasyst.ru/api/explorer/crm/crm.vault.list/
      summary: Возвращает список доступных сотруднику классов контактов.
      responses:
        200:
          description: Список классов контактов.
          content:
            application/json:
              schema:
                type: array
                items:
                  description: Свойства класса контактов
                  allOf:
                    - $ref: '#/components/schemas/vault'
        403:
          description: Запрещён доступ к приложению CRM или данному методу API.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        400:
          description: Некорректное содержимое запроса.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/errorResponse'
        500:
          description: Внутренняя ошибка сервера.

components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer

  schemas:
    contact:
      type: object
      properties:
        id:
          type: integer
          description: ID контакта
        main:
          type: object
          description: Главные свойства контакта
          properties:
            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:
                $ref: '#/components/schemas/fieldRecord'
            phone:
              type: array
              description: Телефонные номера
              items:
                $ref: '#/components/schemas/fieldRecord'
            url:
              type: array
              description: Адреса сайтов
              items:
                $ref: '#/components/schemas/fieldRecord'
            address:
              type: array
              description: Почтовые адреса
              items:
                $ref: '#/components/schemas/address'
            socialnetwork:
              type: array
              description: Аккаунты в соцсетях
              items:
                $ref: '#/components/schemas/fieldRecord'
            im:
              type: array
              description: Аккаунты в мессенджерах
              items:
                $ref: '#/components/schemas/fieldRecord'
            about:
              type: string
              description: Описание
              nullable: true
            create_app:
              type: string
              description: Название приложения, с помощью которого создали контакт
              nullable: true
            locale:
              type: string
              description: Локаль
              nullable: true
            sex:
              type: string
              description: Пол
              nullable: true
            timezone:
              type: string
              description: Часовой пояс
              nullable: true
            birthday:
              type: object
              description: Дата рождения
              nullable: true
              properties:
                value:
                  type: string
                  description: Дата рождения в виде строки
                date_parts:
                  type: object
                  description: Элементы даты рождения
                  properties:
                    year:
                      type: integer
                      description: год
                      nullable: true
                    month:
                      type: integer
                      description: месяц
                      nullable: true
                    day:
                      type: integer
                      description: день
                      nullable: true
        data:
          type: array
          description: Свойства контакта
          items:
            type: object
            properties:
              field:
                type: string
                description: ID поля
              value:
                oneOf:
                  - type: string
                    description: Значение поля
                  - type: array
                    description: Значения составных полей
                    items:
                      type: object
                      properties:
                        field:
                          type: string
                          description: ID дочернего поля
                        value:
                          type: string
                          nullable: true
                          description: Значение дочернего поля
              ext:
                type: string
                description: Обозначение типа
        fields:
          type: array
          description: Дополнительные поля
          items:
            $ref: '#/components/schemas/fieldData'
        details:
          type: object
          description: Основные свойства
          properties:
            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 сотрудника, который создал контакт
            is_company:
              type: boolean
              description: Признак того, что контакт является компанией (не персоной)
            company_contact_id:
              type: integer
              description: ID контакта компании (только для персон)
            is_user:
              type: boolean
              description: Признак того, что контакт является сотрудником
            is_banned:
              type: boolean
              description: Признак того, что контакт заблокирован
            login:
              type: string
              description: Имя для входа (только для сотрудников)
              nullable: true
            has_password:
              type: boolean
              description: Признак того, что контакт зарегистрирован (и может авторизоваться)
            last_datetime:
              type: string
              format: date-time
              description: Дата и время последней авторизации
              nullable: true
            locale:
              type: string
              description: ISO-код локали контакта
            timezone:
              type: string
              description: Идентификатор часового пояса
            sex:
              type: string
              description: |
                Обозначение пола
                + **m**: мужской
                + **f**: женский
                + пустое значение `null`: пол не указан
              nullable: true
              enum:
                - m
                - f
                - null
        is_editable:
          type: boolean
          description: Признак доступности редактирования контакта для текущего пользователя
        is_pinned:
          type: boolean
          description: Признак присутствия контакта в числе избранных
        segments:
          type: array
          description: Статические сегменты, в которых содержится контакт
          items:
            $ref: '#/components/schemas/segment'
        tags:
          type: array
          description: Теги
          items:
            $ref: '#/components/schemas/tag'
        counters:
          type: array
          description: счётчики данных, связанных с контактом
          items:
            type: object
            properties:
              name:
                type: string
                description: |
                  Тип данных
                  + **deals**: сделки
                  + **reminders**: напоминания
                  + **invoices**: счета
                  + **calls**: звонки
                  + **notes**: заметки
                  + **files**: файлы
                  + **messages**: сообщения
                  + **employees**: сотрудники — для контактов-компаний
              value:
                type: integer
                description: Количество данных
        userpic:
          type: object
          description: Варианты изображения
          properties:
            original:
              type: string
              format: uri
              description: URL оригинального полноразмерного изображения
            original_crop:
              type: string
              format: uri
              description: URL оригинального изображения, обрезанного в его профиле в редакторе изображения
            thumb:
              type: string
              format: uri
              description: URL изображения размером 96х96 пикселей
        creator:
          nullable: true
          description: Сотрудник, создавший контакт
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        responsible:
          nullable: true
          description: Сотрудник, ответственный за контакт
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        owners:
          type: array
          description: Сотрудники, выбранные в настройках видимости контакта
          items:
            $ref: '#/components/schemas/contactMinimal'
        vault:
          description: Свойства класса контакта
          allOf:
            - $ref: '#/components/schemas/vault'
    contactMinimal:
      type: object
      properties:
        id:
          type: integer
          description: ID контакта
        name:
          type: string
          description: Имя контакта
        userpic:
          type: string
          format: uri
          description: URL изображения
    contactShort:
      type: object
      properties:
        id:
          type: integer
          description: ID контакта
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        last_datetime:
          type: string
          format: date-time
          description: Дата и время последней авторизации
          nullable: true
        name:
          type: string
          description: Имя
        userpic:
          type: string
          format: uri
          description: URL изображения
        online_status:
          type: string
          description: Онлайн-статус
          enum:
            - online
            - offline
        company:
          type: string
          description: Название компании
        jobtitle:
          type: string
          description: Должность
        company_contact_id:
          type: integer
          description: ID контакта компании
        tags:
          type: array
          description: Теги
          items:
            $ref: '#/components/schemas/tag'
        last_action:
          description: Последнее действие, связанное с контактом
          allOf:
            - $ref: '#/components/schemas/logRecord'
        acl:
          type: string
          description: |
            Уровень доступа к данным контакта
            + **own**: у текущего сотрудника есть исключительный доступ к данным контакта
            + **group**: у указанной группы сотрудников есть доступ к данным контакта
            + **vault**: контакт принадлежит к классу
            + **all**: данные контакта доступны всем сотрудникам
          enum:
            - own
            - group
            - vault
            - all
        is_pinned:
          type: boolean
          description: Присутствие в числе избранных
          nullable: true
        is_banned:
          type: boolean
          description: Признак того, что контакт заблокирован
        vault_id:
          type: integer
          description: ID класса
          nullable: true
        fields:
          type: array
          description: Поля контакта
          items:
            type: object
            required:
              - id
              - value
            properties:
              id:
                type: string
                description: ID поля
              value:
                oneOf:
                  - type: string
                    description: Отформатированное значение
                  - type: array
                    description: Массив отформатированных значений
                    items:
                      type: string
    logRecord:
      type: object
      description: Запись о выполненном действии
      properties:
        id:
          type: integer
          description: ID записи
        create_datetime:
          type: string
          format: date-time
          description: Дата и время
        action:
          type: string
          description: ID действия
        action_name:
          type: string
          description: Название действия
        object_type:
          type: string
          description: |
            Тип связанного с действием объекта
            + **CONTACT**: контакт
            + **DEAL**: сделка
            + **REMINDER**: напоминание
            + **INVOICE**: счёт
            + **MESSAGE**: сообщение
            + **NOTE**: заметка
            + **FILE**: файл
            + **CALL**: звонок
            + **ORDER**: заказ
          enum:
            - CONTACT
            - DEAL
            - REMINDER
            - INVOICE
            - MESSAGE
            - NOTE
            - FILE
            - CALL
            - ORDER
        object_id:
          type: integer
          description: ID связанного с действием объекта
          nullable: true
        content:
          type: string
          description: Содержимое связанного с действием объекта
        before:
          type: string
          description: Данные связанного объекта до выполнения действия
          nullable: true
        after:
          type: string
          description: Данные связанного объекта после выполнения действия
          nullable: true
        stage_before:
          description: Этап сделки до выполнения действия (только для действия смены этапа)
          nullable: true
          allOf:
            - $ref: '#/components/schemas/dealStage'
        stage_after:
          description: Этап сделки после выполнения действия (только для действия смены этапа)
          nullable: true
          allOf:
            - $ref: '#/components/schemas/dealStage'
        actor:
          description: Контакт, выполнивший действие
          nullable: true
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        contact:
          description: Связанный с действием контакт
          nullable: true
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        deal:
          description: Связанная с действием сделка
          nullable: true
          allOf:
            - $ref: '#/components/schemas/dealShort'
        message:
          description: Связанное с действием сообщение
          allOf:
            - $ref: '#/components/schemas/message'
        file:
          description: Связанный с действием файл
          allOf:
            - $ref: '#/components/schemas/file'
        reminder:
          description: Связанное с действием напоминание
          allOf:
            - $ref: '#/components/schemas/reminder'
        invoice:
          description: Связанный с действием счёт
          allOf:
            - $ref: '#/components/schemas/invoice'
        call:
          description: Связанный с действием звонок
          allOf:
            - $ref: '#/components/schemas/call'
        order_log_item:
          description: Связанная с действием запись о заказе Shop-Script
          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: Отформатированное описание действия
        order:
          description: Заказ Shop-Script
          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_datetime:
              type: string
              format: date-time
              description: Дата и время оплаты
              nullable: true
            comment:
              type: string
              description: Комментарий
              nullable: true
            shipping_datetime:
              type: string
              format: date-time
              description: Дата и время доставки
              nullable: true
            number:
              type: string
              description: Отформатированный номер заказа
            contact:
              description: Покупатель
              allOf:
                - $ref: '#/components/schemas/contactMinimal'
        icon:
          description: Иконка для отображения записи
          type: object
          properties:
            fa:
              type: string
              description: Класс иконки Font Awesome из классического набора
            fab:
              type: string
              description: Класс иконки Font Awesome из набора брендов
            color:
              type: string
              description: HTML-значение цвета
            url:
              type: string
              format: uri
              description: URL изображения
    invoice:
      type: object
      description: Счёт
      properties:
        contact:
          description: Клиент
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        id:
          type: integer
          description: ID счёта
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        update_datetime:
          type: string
          format: date-time
          description: Дата и время последнего обновления
        number:
          type: string
          description: Редактируемый номер
        invoice_date:
          type: string
          format: date
          description: Редактируемая дата счёта
        creator_contact_id:
          type: integer
          description: ID создавшего контакта
        company_id:
          type: integer
          description: ID компании
        contact_id:
          type: integer
          description: ID клиента
        deal_id:
          type: integer
          description: ID сделки
        due_days:
          type: integer
          description: Срок действия в днях
        due_date:
          type: string
          format: date
          description: Дата окончания срока действия
        amount:
          type: number
          description: Итоговая сумма
        currency_id:
          type: string
          description: ISO-код валюты
        currency_rate:
          type: number
          description: Курс валюты счёта по отношению к основной валюте
        tax_name:
          type: string
          description: Название налога
        tax_percent:
          type: number
          description: Размер налога в процентах
        tax_type:
          type: string
          description: |
            Тип налога
            + **INCLUDE**: включён в сумму счёта
            + **APPEND**: не включён в сумму счёта
            + **NONE**: не применяется
          enum:
            - INCLUDE
            - APPEND
            - NONE
        tax_amount:
          type: number
          description: Сумма налога в валюте счёта
        discount_percent:
          type: number
          description: Размер скидки в процентах
        discount_amount:
          type: number
          description: Размер скидки в валюте счёта
        summary:
          type: string
          description: Названия товаров и услуг в счёте, перечисленные через запятую
        comment:
          type: string
          description: Комментарий
        state_id:
          type: string
          description: |
            Статус счёта
            + **PENDING**: ожидает оплату
            + **PAID**: оплачен
            + **REFUNDED**: выполнен возврат
            + **ARCHIVED**: в архиве
            + **DRAFT**: черновик
            + **PROCESSING**: обработка
          enum:
            - PENDING
            - PAID
            - REFUNDED
            - ARCHIVED
            - DRAFT
            - PROCESSING
        state_name:
          type: string
          description: Локализованное название статуса
        payment_datetime:
          type: string
          format: date-time
          description: Дата и время оплаты
    invoiceItem:
      type: object
      description: Позиция счёта
      properties:
        id:
          type: integer
          description: ID позиции
        name:
          type: string
          description: Название
        price:
          type: number
          description: Цена
        quantity:
          type: number
          description: Количество
        tax_percent:
          type: number
          description: Размер налога в процентах
        tax_type:
          type: string
          description: |
            Тип налога
            + **INCLUDE**: включен в сумму счёта
            + **APPEND**: не включён в сумму счёта
            + **NONE**: не применяется
          enum:
            - INCLUDE
            - APPEND
            - NONE
        product_id:
          type: string
          description: ID товара Shop-Script
          nullable: true
    invoiceAuxData:
      type: object
      description: Дополнительная информация о счёте
      properties:
        creator:
          description: Создатель счёта
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        company:
          type: string
          description: Название компании
        items:
          type: array
          description: Позиции счёта
          items:
            $ref: '#/components/schemas/invoiceItem'
    invoiceFullInfo:
      description: Полная информация о счёте
      allOf:
        - $ref: '#/components/schemas/invoice'
        - $ref: '#/components/schemas/invoiceAuxData'
    reminder:
      type: object
      properties:
        id:
          type: integer
          description: ID напоминания
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        creator_contact_id:
          type: integer
          description: ID создавшего контакта
        contact_id:
          type: integer
          description: ID контакта, связанного с напоминанием
          nullable: true
        deal_id:
          type: integer
          description: ID сделки, связанной с напоминанием
          nullable: true
        user_contact_id:
          type: integer
          description: ID сотрудника, для которого создано напоминание
        due_date:
          type: string
          format: date
          description: Дата напоминания
        due_datetime:
          type: string
          format: date-time
          description: Дата и время напоминания
        complete_datetime:
          type: string
          format: date-time
          description: Дата и время выполнения напоминания
          nullable: true
        content:
          type: string
          description: Текст напоминания
        type:
          type: string
          description: |
            Тип напоминания
            + **MEETING**: встреча
            + **CALL**: телефонный звонок
            + **MESSAGE**: сообщение
            + **OTHER**: другое
          enum:
            - MEETING
            - CALL
            - MESSAGE
            - OTHER
        state:
          type: string
          description: |
            Статус напоминания
            + **completed**: выполнено
            + **overdue**: просрочено
            + **burn**: сильно просрочено
            + **actual**: актуальное
            + **normal**: обычное
          enum:
            - completed
            - overdue
            - burn
            - actual
            - normal
        can_edit:
          type: boolean
          description: Доступность редактирования напоминания
        user:
          description: Сотрудник
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        creator:
          description: Создатель
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        contact:
          nullable: true
          description: Клиент
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        deal:
          nullable: true
          description: Сделка
          allOf:
            - $ref: '#/components/schemas/dealShort'
    conversation:
      type: object
      properties:
        id:
          type: integer
          description: ID переписки
        create_datetime:
          type: string
          format: date-time
          description: Дата и время начала
        update_datetime:
          type: string
          format: date-time
          description: Дата и время регистрации последнего сообщения
        type:
          type: string
          description: |
            Тип транспорта
            + **EMAIL**: email
            + **IM**: мессенджер
          enum:
            - EMAIL
            - IM
        supported_features:
          type: object
          description: Доступные возможности источника
          properties:
            html:
              type: boolean
              description: Поддержка HTML-форматирования
            attachments:
              type: boolean
              description: Возможность прикрепления файлов
            images:
              type: boolean
              description: Возможность отображения изображений в сообщениях
        summary:
          type: string
          description: Краткое описание
        last_message_id:
          type: integer
          description: ID последнего сообщения
        count:
          type: integer
          description: Количество сообщений
        read:
          type: boolean
          description: Признак того, что все сообщения прочитаны пользователем
        icon_url:
          type: string
          format: uri
          description: URL файла изображения иконки
        icon:
          type: string
          description: Класс иконки Font Awesome для обозначения типа транспорта
        icon_color:
          type: string
          description: HTML-код цвета иконки
        icon_fab:
          type: string
          description: Класс иконки Font Awesome из набора брендов
        transport_name:
          type: string
          description: Название источника
        can_view:
          type: boolean
          description: Признак того, что пользователь может просматривать эту переписку
        contact:
          description: Клиент
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        user:
          description: Сотрудник
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        source:
          description: Источник сообщений
          allOf:
            - $ref: '#/components/schemas/source'
        deal:
          description: Сделка, связанная с перепиской
          allOf:
            - $ref: '#/components/schemas/dealShort'
    dealShort:
      type: object
      properties:
        id:
          type: integer
          description: ID сделки
        status_id:
          type: string
          description: |
            Статус
            + **OPEN**: открытая
            + **WON**: выигранная
            + **LOST**: проигранная
          enum:
            - OPEN
            - WON
            - LOST
        name:
          type: string
          description: Название
        amount:
          type: number
          description: Предварительная стоимость
        currency_id:
          type: string
          description: ISO-код валюты
        contact:
          description: Клиент
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        funnel:
          description: Воронка
          allOf:
            - $ref: '#/components/schemas/dealFunnel'
        stage:
          description: Этап воронки
          allOf:
            - $ref: '#/components/schemas/dealStage'
    message:
      type: object
      properties:
        id:
          type: integer
          description: ID сообщения
        creator_contact_id:
          type: integer
          description: ID создавшего контакта
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        transport:
          type: string
          description: |
            Тип транспорта
            + **EMAIL**: email
            + **IM**: мессенджер
          enum:
            - EMAIL
            - IM
        direction:
          type: string
          description: |
            Направление
            + **IN**: входящее
            + **OUT**: исходящее
          enum:
            - IN
            - OUT
        conversation_id:
          type: integer
          description: ID переписки
        conversation_count:
          type: integer
          description: Количество сообщений в переписке
        subject:
          type: string
          description: Тема сообщения
        body:
          type: string
          description: Текст сообщения (HTML)
        body_sanitized:
          type: string
          description: Содержимое сообщения, подготовленное для отображения в веб-интерфейсе (HTML)
        body_plain:
          type: string
          description: Содержимое сообщения без HTML-тегов
        from:
          type: string
          description: Идентификатор отправителя
        to:
          type: string
          description: Идентификатор получателя
        original:
          type: boolean
          description: Признак наличия сохраненной оригинальной версии сообщения
        contact:
          description: Клиент
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        deal:
          description: Связанная с сообщением сделка
          allOf:
            - $ref: '#/components/schemas/dealShort'
        author:
          description: Автор сообщения
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        conversation_participants:
          type: array
          description: Участники переписки
          items:
            $ref: '#/components/schemas/contactMinimal'
        source:
          description: Источник сообщения
          allOf:
            - $ref: '#/components/schemas/source'
        recipients:
          type: object
          description: Участники переписки
          properties:
            TO:
              type: array
              description: Основные получатели
              items:
                $ref: '#/components/schemas/recipient'
            CC:
              type: array
              description: Получатели копии
              items:
                $ref: '#/components/schemas/recipient'
            BCC:
              type: array
              description: Получатели скрытой копии
              items:
                $ref: '#/components/schemas/recipient'
        attachments:
          type: array
          description: Приложенные файлы
          items:
            $ref: '#/components/schemas/file'
        extras:
          type: object
          description: Дополнительные элементы сообщения
          properties:
            images:
              type: array
              description: Изображения
              items:
                $ref: '#/components/schemas/file'
            stickers:
              type: array
              description: Стикеры
              items:
                $ref: '#/components/schemas/file'
            videos:
              type: array
              description: Видеоролики
              items:
                $ref: '#/components/schemas/file'
            audios:
              type: array
              description: Аудиозаписи
              items:
                $ref: '#/components/schemas/file'
            locations:
              type: array
              description: Геометки
              items:
                type: object
                properties:
                  point:
                    type: string
                    description: |
                      Координаты: широта и долгота
                  title:
                    type: string
                    description: Название места
                  address:
                    type: string
                    description: Адрес места
                  foursquare_id:
                    type: string
                    description: Foursquare Venue ID
        caption:
          description: Заголовок встроенного объекта
          type: string
        read:
          type: boolean
          description: Признак того, что сообщение прочитано текущим пользователем
        can_view:
          type: boolean
          description: Признак того, что пользователь может просматривать эту переписку
        event:
          type: string
          description: ID события (только для сообщений, отправленных при срабатывании событий)
    recipient:
      type: object
      properties:
        destination:
          type: string
          description: Адрес получателя
        name:
          type: string
          description: Имя получателя (как указано в сообщении)
        contact:
          description: Получатель
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
    deal:
      type: object
      properties:
        id:
          type: integer
          description: ID сделки
        creator_contact_id:
          type: integer
          description: ID создавшего контакта
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        update_datetime:
          type: string
          format: date-time
          description: Дата и время последнего действия со сделкой
        reminder_datetime:
          type: string
          format: date-time
          description: Дата и время ближайшего связанного со сделкой напоминания
        funnel_id:
          type: integer
          description: ID воронки
        stage_id:
          type: integer
          description: ID этапа воронки
        status_id:
          type: string
          description: |
            Статус
            + **OPEN**: открытая
            + **WON**: выигранная
            + **LOST**: проигранная
          enum:
            - OPEN
            - WON
            - LOST
        name:
          type: string
          description: Название
        description:
          type: string
          description: Описание (HTML)
        description_sanitized:
          type: string
          description: Описание, подготовленное для отображения в веб-интерфейсе (HTML)
        description_plain:
          type: string
          description: Описание без HTML-тегов
        expected_date:
          type: string
          format: date
          description: Предварительная дата закрытия
        closed_datetime:
          type: string
          format: date-time
          description: Дата закрытия
        amount:
          type: number
          description: Предварительная стоимость
        currency_id:
          type: string
          description: ISO-код валюты
        currency_rate:
          type: number
          description: Курс валюты счёта по отношению к основной валюте
        contact_id:
          type: integer
          description: ID клиента
        user_contact_id:
          type: integer
          description: ID сотрудника, ответственного за сделку
        lost_id:
          type: integer
          description: ID одной из настроенных причин проигрыша сделки
        lost_text:
          type: string
          description: Описание причины закрытия сделки
        external_id:
          type: string
          description: Идентификатор объекта другого приложения, с которым связана сделка
        last_message_id:
          type: integer
          description: ID самого позднего сообщения, связанного со сделкой
        email:
          type: string
          description: Email-адрес для прикрепления переписки с клиентом к сделке
        is_pinned:
          type: boolean
          description: Присутствие в числе избранных
        rights:
          description: Права доступа
          allOf:
            - $ref: '#/components/schemas/dealUserRights'
        users:
          type: array
          description: Исполнители
          items:
            $ref: '#/components/schemas/dealUser'
        contacts:
          type: array
          description: Заказчики
          items:
            $ref: '#/components/schemas/dealClient'
        fields:
          type: array
          description: Дополнительные поля
          items:
            $ref: '#/components/schemas/fieldData'
        tags:
          type: array
          description: Теги
          items:
            $ref: '#/components/schemas/tag'
        source:
          description: Источник
          allOf:
            - $ref: '#/components/schemas/source'
        aux_tabs:
          type: array
          description: Дополнительные вкладки плагинов
          items:
            type: object
            properties:
              id:
                type: string
                description: Идентификатор
              title:
                type: string
                description: Название
              url:
                type: string
                format: uri
                description: URL для загрузки содержимого
        aux_blocks:
          type: array
          description: Дополнительные блоки плагинов
          items:
            type: object
            properties:
              id:
                type: string
                description: Идентификатор
              title:
                type: string
                description: Название
                nullable: true
              html:
                type: string
                description: Содержимое
    dealParticipant:
      type: object
      properties:
        label:
          type: string
          description: Редактируемое название роли
        assigned_at:
          type: string
          format: date-time
          description: Дата и время прикрепления к сделке
    dealUser:
      allOf:
        - $ref: '#/components/schemas/dealParticipant'
        - type: object
          properties:
            contact:
              description: Свойства контакта
              allOf:
                - $ref: '#/components/schemas/contactMinimal'
    dealClient:
      allOf:
        - $ref: '#/components/schemas/dealParticipant'
        - type: object
          properties:
            counters:
              type: object
              description: счётчики данных
              properties:
                deal:
                  type: string
                  description: Количество сделок с клиентом
                shop_order:
                  type: string
                  description: Количество заказов клиента в магазине Shop-Script
            contact:
              allOf:
                - $ref: '#/components/schemas/contactMinimal'
                - type: object
                  properties:
                    jobtitle:
                      type: string
                      description: Должность
                    company:
                      type: string
                      description: Название компании
                    company_contact_id:
                      type: integer
                      description: ID контакта компании
                    address:
                      type: array
                      description: Почтовые адреса
                      items:
                        type: object
                        description: Информация об адресе
                        properties:
                          value:
                            type: string
                            description: Адрес в виде строки
                          map_url:
                            type: string
                            format: uri
                            description: Ссылка на карту
                    email:
                      type: array
                      nullable: true
                      description: Email-адреса
                      items:
                        $ref: '#/components/schemas/fieldRecord'
                    phone:
                      type: array
                      nullable: true
                      description: Телефонные номера
                      items:
                        $ref: '#/components/schemas/fieldRecord'
    dealUserRights:
      type: object
      properties:
        has_access_to_funnel:
          type: boolean
          description: Признак наличия доступа к воронке сделки
        can_edit:
          type: boolean
          description: Признак наличия доступа к редактированию сделки
        can_delete:
          type: boolean
          description: Признак наличия доступа к удалению сделки
        can_manage_responsible:
          type: boolean
          description: Признак наличия доступа к изменению ответственного за сделку
    dealListRow:
      type: object
      properties:
        id:
          type: integer
          description: ID сделки
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        update_datetime:
          type: string
          format: date-time
          description: Дата и время последнего обновления
        reminder_datetime:
          type: string
          format: date-time
          description: Дата и время актуального напоминания
        name:
          type: string
          description: Название
        funnel_id:
          type: integer
          description: ID воронки
        stage_id:
          type: integer
          description: ID этапа воронки
        funnel:
          $ref: '#/components/schemas/dealFunnel'
        stage:
          $ref: '#/components/schemas/dealStage'
        status_id:
          type: string
          description: |
            Статус
            + **OPEN**: открытая
            + **WON**: выигранная
            + **LOST**: проигранная
          enum:
            - OPEN
            - WON
            - LOST
        expected_date:
          type: string
          format: date
          description: Предварительная дата закрытия
        closed_datetime:
          type: string
          format: date-time
          description: Дата закрытия
        amount:
          type: number
          nullable: true
          description: Предварительная стоимость в основной валюте
        currency_id:
          type: string
          nullable: true
          description: ISO-код основной валюты
        currency_rate:
          type: number
          nullable: true
          description: Курс валюты сделки по отношению к основной валюте
        original_amount:
          type: number
          description: Предварительная стоимость в валюте сделки
        original_currency_id:
          type: string
          description: ISO-код валюты сделки
        lost_id:
          type: integer
          description: ID одной из настроенных причин проигрыша сделки
        lost_text:
          type: string
          description: Описание причины закрытия сделки
        external_id:
          type: string
          description: Идентификатор объекта другого приложения, с которым связана сделка
        user:
          $ref: '#/components/schemas/contactMinimal'
        contact:
          $ref: '#/components/schemas/contactMinimal'
        source:
          description: Источник
          allOf:
            - $ref: '#/components/schemas/source'
        shop_order:
          type: object
          description: Заказ Shop-Script, связанный со сделкой
          properties:
            id:
              type: integer
              description: ID заказа
            paid_date:
              type: string
              format: date
              description: Дата оплаты заказа
        can_delete:
          type: boolean
          description: Признак наличия доступа у пользователя для удаления сделки
        reminder_state:
          type: string
          description: ID статуса актуального напоминания
        reminder_title:
          type: string
          description: Заголовок актуального напоминания
        message_unread:
          type: boolean
          description: Признак наличия непрочитанных сообщений, связанных со сделкой
        tags:
          type: array
          description: Теги
          items:
            $ref: '#/components/schemas/tag'
        last_action:
          description: Последнее действие со сделкой
          allOf:
            - $ref: '#/components/schemas/logRecord'
        fields:
          type: array
          description: Дополнительные поля
          items:
            type: object
            required:
              - id
              - value
            properties:
              id:
                type: string
                description: ID поля
              value:
                type: string
                description: Отформатированное значение
    dealStage:
      type: object
      description: Этап сделки
      properties:
        id:
          type: integer
          description: ID этапа воронки
        name:
          type: string
          description: Название этапа воронки
        color:
          type: string
          description: HTML-значение цвета
    dealFunnel:
      type: object
      description: Воронка сделки
      properties:
        id:
          type: integer
          description: ID воронки
        name:
          type: string
          description: Название воронки
        color:
          type: string
          description: HTML-значение цвета
    dealPin:
      type: object
      properties:
        id:
          type: integer
          description: ID сделки
        name:
          type: string
          description: Название
        status_id:
          type: string
          description: |
            Статус
            + **OPEN**: открытая
            + **WON**: выигранная
            + **LOST**: проигранная
          enum:
            - OPEN
            - WON
            - LOST
        amount:
          type: number
          description: Предварительная стоимость
        currency_id:
          type: string
          description: ISO-код валюты
        contact:
          description: Клиент
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
    call:
      type: object
      properties:
        id:
          type: integer
          description: ID звонка
        direction:
          type: string
          description: |
            Направление
            + **IN**: входящее
            + **OUT**: исходящее
          enum:
            - IN
            - OUT
        status_id:
          type: string
          description: |
            Статус звонка
            + **PENDING**: ожидание
            + **CONNECTED**: подключен
            + **FINISHED**: завершен
            + **DROPPED**: сброшен
            + **REDIRECTED**: переадресован
            + **VOICEMAIL**: автоответчик
          enum:
            - PENDING
            - CONNECTED
            - FINISHED
            - DROPPED
            - REDIRECTED
            - VOICEMAIL
        create_datetime:
          type: string
          format: date-time
          description: Дата и время начала звонка
        finish_datetime:
          type: string
          format: date-time
          description: Дата и время завершения звонка
        plugin_id:
          type: string
          description: Идентификатор плагина телефонии
        plugin_call_id:
          type: string
          description: ID звонка, выданный провайдером
        plugin_gateway:
          type: string
          description: Телефонный номер провайдера
        plugin_user_number:
          type: string
          description: Телефонный номер сотрудника, используемый провайдером
        plugin_client_number:
          type: string
          description: Телефонный номер клиента, используемый провайдером
        client_phone_formatted:
          type: string
          description: Отформатированный телефонный номер клиента
        plugin_record_id:
          type: string
          description: ID записи звонка, выданный провайдером
        notification_sent:
          type: boolean
        deal_id:
          type: integer
          description: ID сделки
        client_contact_id:
          type: integer
          description: ID клиента
        contact:
          description: Клиент
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        user_contact_id:
          type: integer
          description: ID сотрудника
        user:
          description: Сотрудник
          allOf:
            - $ref: '#/components/schemas/contactMinimal'
        duration:
          type: integer
          description: Длительность звонка в секундах
        comment:
          type: string
          description: Комментарий
        has_access:
          type: boolean
        plugin_icon:
          type: string
          format: uri
          description: URL иконки плагина телефонии
        plugin_name:
          type: string
          description: Название плагина телефонии
        redirect_allowed:
          type: boolean
          description: Признак доступности переадресации, полученный от плагина телефонии
    field:
      type: object
      required:
        - id
        - name
        - type
        - is_multi
        - is_unique
        - is_required
      properties:
        id:
          type: string
          description: ID поля
        name:
          type: string
          description: Название для текущей локали пользователя
        type:
          description: Тип
          allOf:
            - $ref: '#/components/schemas/fieldType'
        is_multi:
          type: boolean
          description: Признак возможности сохранения нескольких значений
        is_unique:
          type: boolean
          description: Признак хранения уникальных значений
        is_required:
          type: boolean
          description: Признак обязательного поля
        option_values:
          type: array
          description: Неформатированные значения, доступные для выбора
          items:
            $ref: '#/components/schemas/fieldOption'
        ext:
          type: array
          description: Обозначения типа
          items:
            $ref: '#/components/schemas/fieldOption'
        fields:
          type: array
          description: Дочерние поля
          items:
            $ref: '#/components/schemas/subField'
    subField:
      type: object
      required:
        - id
        - name
        - type
      properties:
        id:
          type: string
          description: ID поля
        name:
          type: string
          description: Название для текущей локали пользователя
        type:
          description: Тип
          allOf:
            - $ref: '#/components/schemas/fieldType'
        options:
          type: array
          description: Доступные для выбора значения
          items:
            type: string
        option_values:
          type: array
          description: Доступные для выбора неформатированные значения
          items:
            $ref: '#/components/schemas/fieldOption'
    fieldType:
      type: string
      description: |
        Тип поля
        + **string**: однострочный текст
        + **text**: многострочный текст
        + **number**: число
        + **select**: выпадающий список
        + **radio**: группа радиокнопок
        + **checkbox**: флажок
        + **date**: дата
        + **composite**: составное
      enum:
        - string
        - text
        - number
        - select
        - radio
        - checkbox
        - date
        - composite
    fieldOption:
      type: object
      required:
        - id
        - value
      properties:
        id:
          type: string
          description: Неформатированное значение
        value:
          type: string
          description: Отформатированное значение
    fieldData:
      description: Свойства поля
      oneOf:
        - $ref: '#/components/schemas/fieldDataSingle'
        - $ref: '#/components/schemas/fieldDataMulti'
    fieldDataSingle:
      type: object
      required:
        - id
        - name
        - type
        - value
        - data
      properties:
        id:
          type: string
          description: ID поля
        name:
          type: string
          description: Название поля
        type:
          description: Тип
          allOf:
            - $ref: '#/components/schemas/fieldType'
        value:
          type: string
          description: Отформатированное значение
        data:
          type: string
          description: Неформатированное значение
    fieldDataMulti:
      type: object
      required:
        - id
        - name
        - type
        - values
      properties:
        id:
          type: string
          description: ID поля
        name:
          type: string
          description: Название поля
        type:
          description: Тип
          allOf:
            - $ref: '#/components/schemas/fieldType'
        values:
          type: array
          description: Значения
          items:
            $ref: '#/components/schemas/fieldRecord'
    fieldRecord:
      type: object
      required:
        - value
        - data
      properties:
        value:
          type: string
          description: Отформатированное значение
        data:
          description: Значение поля
          oneOf:
            - type: string
              description: Неформатированное значение
            - type: array
              description: Составные дочерние поля
              items:
                $ref: '#/components/schemas/fieldDataSingle'
        ext:
          type: string
          description: Обозначение типа
        ext_value:
          type: string
          description: Локализованное обозначение типа
        status:
          type: string
          description: Статус поля
          nullable: true
    address:
      type: object
      properties:
        data:
          type: object
          properties:
            country:
              type: string
              description: ISO-код страны
            country_value:
              type: string
              description: Отформатированное название
            zip:
              type: string
              description: Индекс
            region:
              type: string
              description: Код региона
            region_value:
              type: string
              description: Отформатированное название региона
            street:
              type: string
              description: Улица, дом, квартира
            city:
              type: string
              description: Название населённого пункта
            lat:
              type: string
              description: Географическая широта
            lng:
              type: string
              description: Географическая долгота
        aux_data:
          type: array
          description: Дополнительные поля адреса
          items:
            $ref: '#/components/schemas/fieldDataSingle'
        value:
          type: string
          description: Отформатированный полный адрес
        ext:
          type: string
          description: Тип адреса
        ext_value:
          type: string
          description: Локализованное обозначение типа
        status:
          type: string
          description: Статус
          nullable: true
        map_url:
          type: string
          format: uri
          description: URL ссылки на карту
    segment:
      type: object
      properties:
        id:
          type: integer
          description: ID сегмента
        name:
          type: string
          description: Название
        count:
          type: integer
          description: Количество контактов в статическом сегменте
        archived:
          type: boolean
          description: Признак архивного сегмента
        type:
          type: string
          description: |
            Тип сегмента
            + **category**: статический
            + **search**: динамический
          enum:
            - category
            - search
        hash:
          type: string
          description: Хеш-строка с описанием параметров фильтрации контактов для динамического сегмента
          nullable: true
        sort:
          type: integer
          description: Значение сортировки
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        contact_id:
          type: integer
          description: ID создавшего контакта
        shared:
          type: boolean
          description: Признак общего сегмента
        icon:
          type: string
          description: Класс иконки Font Awesome
          nullable: true
        icon_path:
          type: string
          format: uri
          description: URL файла иконки
          nullable: true
        app_id:
          type: string
          description: ID приложения, создавшего сегмент
          nullable: true
        category_id:
          type: integer
          description: ID категории контактов (только для статических сегментов)
          nullable: true
        system_id:
          type: string
          description: ID системной категории
          nullable: true
        is_editable:
          type: boolean
          description: Доступность редактирования текущим пользователем
    tag:
      type: object
      properties:
        id:
          type: integer
          description: ID тега
        name:
          type: string
          description: Название
        count:
          type: integer
          description: Количество связанных контактов и сделок
        size:
          type: integer
          description: Относительный размер для облака тегов
        opacity:
          type: number
          description: Значение прозрачности для облака тегов
    file:
      type: object
      properties:
        id:
          type: integer
          description: ID файла
        name:
          type: string
          description: Имя файла
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        size:
          type: integer
          description: Размер в байтах
        ext:
          type: string
          description: Расширение имени
        comment:
          type: string
          description: Комментарий
          nullable: true
        url:
          type: string
          format: uri
          description: URL для скачивания
        thumb_url:
          type: string
          format: uri
          description: URL изображения эскиза (только для графических файлов)
        source_type:
          type: string
          description: |
            Тип источника
            + **FILE**: загружен в бекенде
            + **MESSAGE**: получен в сообщении
            + **NOTE**: добавлен в заметке
          enum:
            - FILE
            - MESSAGE
            - NOTE
    source:
      type: object
      properties:
        id:
          type: integer
          description: ID источника
        type:
          type: string
          description: |
            Тип
            + **FORM**: веб-форма
            + **EMAIL**: email-адрес
            + **IM**: мессенджер
            + **SHOP**: Shop-Script
          enum:
            - FORM
            - EMAIL
            - IM
            - SHOP
        name:
          type: string
          description: Название
        provider:
          type: string
          description: ID плагина
        icon_url:
          type: string
          format: uri
          description: URL иконки плагина
        icon_fab:
          type: string
          description: Класс иконки Font Awesome из набора брендов
        icon_color:
          type: string
          description: HTML-обозначение цвета иконки
    vault:
      type: object
      properties:
        id:
          type: integer
          description: ID класса контактов
        name:
          type: string
          description: Название класса
        color:
          type: string
          description: HTML-значение цвета иконки
        create_datetime:
          type: string
          format: date-time
          description: Дата и время создания
        count:
          type: integer
          description: Количество контактов в классе
    errorResponse:
      type: object
      properties:
        error:
          type: string
          description: Код ошибки
        error_description:
          type: string
          description: Описание ошибки
