openapi: 3.0.1
info:
  title: "YuChat Bot API"
  version: 2.7.0
  description: "Публичный API для работы с YuChat."
  contact:
    name: "Команда YuChat"
    url: "https://www.yuchat.ai"
    email: "support@yuchat.ai"
servers:
  - url: "https://yuchat.ai"
tags:
  - name: message
    description: Отправка/редактирование/удаление сообщений
  - name: chat
    description: Создание чатов, просмотр/приглашение участников в чат
  - name: member
    description: Просмотр участников воркспейса
  - name: updates
    description: Получение всех событий, адресованных боту
  - name: webhook
    description: Создание, просмотр, удаление вебхуков
  - name: file
    description: Получение ссылки для загрузки файлов
  - name: transcription
    description: Получение транскрипции голосовых сообщений и записей звонков
  - name: poll
    description: Голосование в опросах
paths:
  /public/v2/getUpdates:
    post:
      description: Получение списка событий для бота
      tags:
        - update
      operationId: getUpdates
      requestBody:
        content:
          application/json:
            schema:
              properties:
                offset:
                  example: "31"
                  description: Id события, с которого нужно получить последующие события
                  type: integer
                  format: int64
                limit:
                  example: "25"
                  description: Количество событий, возвращаемых в ответе. Максимальное значение - 1000. По умолчанию - 20
                  type: integer
      responses:
        "200":
          description: Список обновлений
          content:
            application/json:
              schema:
                properties:
                  updates:
                    type: array
                    items:
                      $ref: "#/components/schemas/Update"
                required:
                  - updates
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/setUpdateSettings:
    post:
      description: Устанавливает, какие типы обновлений будет получать бот. По умолчанию бот получает типы MESSAGE и WORKSPACE_INVITE
      tags:
        - me
      operationId: setUpdateSettings
      requestBody:
        content:
          application/json:
            schema:
              properties:
                updateSettings:
                  description: Настройки активны только при получении обновлений по API v2. Массив из UpdateSetting, которые получает бот. По умолчанию бот получает типы MESSAGE и WORKSPACE_INVITE
                  type: array
                  items:
                    $ref: "#/components/schemas/UpdateSetting"
                autoAcceptWorkspaceInvites:
                  description: Настройка активна только при получении обновлений по API v2. Устанавливает, будет ли бот автоматически принимать приглашения в рабочие пространства. По умолчанию false
                  example: "false"
                  default: false
                  type: boolean
                updateApiVersion:
                  description: Версия API, через которую бот получает обновления по методу getUpdates или по вебхукам. Может быть 1 или 2
                  example: "1"
                  type: integer
              required:
                - updateSettings
                - updateApiVersion
      responses:
        "200":
          description: Типы получаемых обновлений сохранены
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getMyWorkspaceInvites:
    post:
      description: Получение списка приглашений в рабочие пространства для бота
      tags:
        - me
      operationId: getMyWorkspaceInvites
      responses:
        "200":
          description: Массив из объектов WorkspaceInvite. Размер ограничен 100 элементами
          content:
            application/json:
              schema:
                properties:
                  workspaceInvites:
                    type: array
                    items:
                      $ref: "#/components/schemas/WorkspaceInvite"
                required:
                  - workspaceInvites
        "403":
          description: Ошибка аутентификации
        "429":
          description: Превышен лимит запросов
  /public/v2/acceptWorkspaceInvite:
    post:
      description: Принять приглашение в рабочее пространство
      tags:
        - me
      operationId: acceptWorkspaceInvite
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  type: string
                  description: Идентификатор рабочего пространства, из которого отправлено приглашение
                  example: BIQffAsGi9
              required:
                - workspaceId
      responses:
        "200":
          description: Приглашение успешно принято
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или приглашение в данное рабочее пространство не найдено
        "429":
          description: Превышен лимит запросов
  /public/v2/rejectAllWorkspaceInvites:
    post:
      description: Отклонить все существующие приглашения в рабочее пространство
      tags:
        - me
      operationId: rejectAllWorkspaceInvites
      responses:
        "200":
          description: Все приглашения отклонены
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации
        "429":
          description: Превышен лимит запросов
  /public/v2/getMessages:
    post:
      description: Получение списка сообщений из чата
      tags:
        - message
      operationId: getMessages
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находится чат
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата из которого нужно получить сообщения
                  type: string
                pageSize:
                  example: "25"
                  description: Количество возвращаемых сообщений. Допустимый диапазон от 1 до 100. По умолчанию 20
                  type: integer
                anchorMessageId:
                  example: ADK5NyCqIK
                  description: Id сообщения, перед/после которого будет выполнен поиск сообщений. Если не указан - возвращаются последние сообщения в чате
                  type: string
                getBefore:
                  example: "true"
                  default: true
                  description: Направление поиска сообщений, если указан anchorMessageId. По умолчанию - true, то есть будут возвращены сообщения, отправленные перед anchorMessageId
                  type: boolean
              required:
                - workspaceId
                - chatId
      responses:
        "200":
          description: Список сообщений
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetMessagesResponse"
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getPinnedMessages:
    post:
      description: Получение списка закреплённых сообщений чата, упорядоченных по дате закрепления
      tags:
        - message
      operationId: getPinnedMessages
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находится чат
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, для которого нужно получить закреплённые сообщения
                  type: string
                pageSize:
                  example: "25"
                  description: Количество возвращаемых закреплённых сообщений. Допустимый диапазон от 1 до 100. По умолчанию 20
                  type: integer
                pageToken:
                  example: AIQffAsGi4
                  description: Токен следующей/предыдущей страницы списка закреплённых сообщений
                  type: string
              required:
                - workspaceId
                - chatId
      responses:
        "200":
          description: Список закреплённых сообщений чата
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetPinnedMessagesResponse"
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getMessageById:
    post:
      description: Получение детальной информации о сообщении по его идентификатору
      tags:
        - message
      operationId: getMessageById
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находится чат
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, в котором находится сообщение
                  type: string
                messageId:
                  example: AIQffAsGi8
                  description: Id сообщения
                  type: string
              required:
                - workspaceId
                - chatId
                - messageId
      responses:
        "200":
          description: Информация о сообщении
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/Message"
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/sendMessage:
    post:
      description: Отправка сообщения в чат
      tags:
        - message
      operationId: sendMessage
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором отправляется сообщение
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, в который отправляется сообщение
                  type: string
                text:
                  example: Привет!
                  description: Сообщение в формате Markdown
                  type: string
                fileIds:
                  example: "[ADK5NyCqIK, BDK5NyCqIK]"
                  description: Массив из Id файлов, которые будут прикреплены к сообщению
                  type: array
                  items:
                    type: string
                buttonBar:
                  description: Блок кнопок
                  $ref: "#/components/schemas/ButtonBar"
                poll:
                  description: Опрос
                  $ref: "#/components/schemas/SendPoll"
                replyTo:
                  example: gIQffAsGi8
                  description: Id сообщения, на который ссылается отправляемое сообщение (ответ на сообщение)
                  type: string
              required:
                - workspaceId
                - chatId
      responses:
        "200":
          description: Сообщение успешно отправлено
          content:
            application/json:
              schema:
                properties:
                  messageId:
                    example: gIQffAsGi8
                    description: Id отправленного сообщения
                    type: string
                required:
                  - messageId
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/editMessage:
    post:
      description: Редактирование сообщения
      tags:
        - message
      operationId: editMessage
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: gIQffAsGi8
                  description: Id рабочего пространства, в котором редактируется сообщение
                  type: string
                chatId:
                  example: w:gIQffAsGi8
                  description: Id чата, в котором редактируется сообщение
                  type: string
                messageId:
                  example: gIQffAsGi8
                  description: Id редактируемого сообщения
                  type: string
                text:
                  example: Привет!
                  description: Сообщение в формате Markdown
                  type: string
                fileIds:
                  example: "[ADK5NyCqIK, BDK5NyCqIK]"
                  description: Массив из Id файлов, которые будут прикреплены к сообщению
                  type: array
                  items:
                    type: string
                buttonBar:
                  description: Блок кнопок
                  $ref: "#/components/schemas/ButtonBar"
              required:
                - workspaceId
                - chatId
                - messageId
      responses:
        "200":
          description: Сообщение отредактировано
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/deleteMessages:
    post:
      description: Удаление сообщений
      tags:
        - message
      operationId: deleteMessages
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: gIQffAsGi8
                  description: Id рабочего пространства, в котором удаляются сообщения
                  type: string
                chatId:
                  example: fIQffAsGi8
                  description: Id чата, в котором удаляются сообщения
                  type: string
                messageIds:
                  example: "[ADK5NyCqIK, BDK5NyCqIK]"
                  description: Массив из Id удаляемых сообщений
                  type: array
                  items:
                    type: string
              required:
                - workspaceId
                - chatId
                - messageIds
      responses:
        "200":
          description: Информация об удаленных сообщениях
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeleteMessagesResponse"
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/forwardMessage:
    post:
      description: Переслать сообщение
      tags:
        - message
      operationId: forwardMessage
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в которое пересылается сообщение
                  type: string
                sourceChatId:
                  example: w:AIQffAsGi7
                  description: Id чата, из которого пересылается сообщение
                  type: string
                sourceMessageIds:
                  description: Id пересылаемых сообщений
                  type: array
                  example: "[ADK5NyCqIK, BDK5NyCqIK]"
                  items:
                    type: string
                targetChatId:
                  example: w:AIQffAsGi8
                  description: Id чата, в который пересылается сообщение
                  type: string
                text:
                  example: Посмотри на это
                  description: Подпись к пересылаемому сообщению в формате Markdown
                  type: string
              required:
                - workspaceId
                - sourceChatId
                - sourceMessageIds
                - targetChatId
      responses:
        "200":
          description: Сообщение успешно переслано
          content:
            application/json:
              schema:
                properties:
                  messageId:
                    example: gIQffAsGi8
                    description: Id пересланного сообщения
                    type: string
                required:
                  - messageId
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/pinMessage:
    post:
      description: Закрепление сообщения в чате
      tags:
        - message
      operationId: pinMessage
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором закрепляется сообщение
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, в котором закрепляется сообщение
                  type: string
                messageId:
                  example: dIQffAsGi7
                  description: Id закрепляемого сообщения
                  type: string
              required:
                - workspaceId
                - chatId
                - messageId
      responses:
        "200":
          description: Сообщение закреплено
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/toggleReaction:
    post:
      description: Отправка реакции на сообщение или удаление реакции, если она была поставлена до этого
      tags:
        - message
      operationId: toggleReaction
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находится сообщение
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, в котором находится сообщение
                  type: string
                messageId:
                  example: dIQffAsGi7
                  description: Id сообщения
                  type: string
                emoji:
                  description: "Emoji в виде :+1:"
                  example: ":heart:"
                  type: string
              required:
                - workspaceId
                - chatId
                - messageId
                - emoji
      responses:
        "200":
          description: Реакция успешно поставлена или убрана
          content:
            application/json:
              schema:
                properties:
                  reactionAdded:
                    example: "true"
                    description: True если реакция поставлена, false - если убрана
                    type: boolean
                required:
                  - reactionAdded
        "403":
          description: Ошибка аутентификации или авторизации, либо чат заархивирован
        "404":
          description: Сообщение не найдено
        "429":
          description: Превышен лимит запросов
  /public/v2/unpinMessage:
    post:
      description: Открепление сообщения в чате
      tags:
        - message
      operationId: unpinMessage
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором открепляется сообщение
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, в котором открепляется сообщение
                  type: string
                messageId:
                  example: dIQffAsGi7
                  description: Id открепляемого сообщения
                  type: string
              required:
                - workspaceId
                - chatId
                - messageId
      responses:
        "200":
          description: Сообщение откреплено
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/createWorkspaceChat:
    post:
      description: Создание чата в рабочем пространстве
      tags:
        - chat
      operationId: createWorkspaceChat
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором создается чат
                  type: string
                name:
                  example: Новости
                  description: Название чата
                  type: string
                participants:
                  example: "[ADK5NyCqIK, BDK5NyCqIK]"
                  description: Массив из Membership Id приглашаемых участников. Не более 100 участников в исходном запросе
                  type: array
                  items:
                    type: string
                announce:
                  description: Является ли чат анонсным. По умолчанию false
                  example: "true"
                  type: boolean
                autoJoinNewMembers:
                  description: Добавлять ли автоматически новых участников рабочего пространства в чат. По умолчанию false
                  example: "true"
                  type: boolean
                workspaceChatType:
                  description: Тип чата, устанавливать можно только PUBLIC или PRIVATE
                  $ref: "#/components/schemas/WorkspaceChatType"
                description:
                  example: Новости компании
                  description: Описание чата
                  type: string
              required:
                - workspaceId
                - name
                - workspaceChatType
      responses:
        "200":
          description: Чат создан
          content:
            application/json:
              schema:
                properties:
                  chatId:
                    description: Id созданного чата
                    example: w:BDK5NyCqIK
                    type: string
                required:
                  - chatId
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getOrCreatePersonalChat:
    post:
      description: Создание или получение существующего персонального чата с другим участником
      tags:
        - chat
      operationId: getOrCreatePersonalChat
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находится чат
                  type: string
                participant:
                  example: ADK5NyCqIK
                  description: Membership Id участника чата
                  type: string
              required:
                - workspaceId
                - participant
      responses:
        "200":
          description: Чат создан или найден
          content:
            application/json:
              schema:
                properties:
                  chatId:
                    description: Id персонального чата
                    example: p:BDK5NyCqIK
                    type: string
                required:
                  - chatId
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getOrCreateUserEventsChat:
    post:
      description: Создание или получение существующего чата с персональными нотификациями
      tags:
        - chat
      operationId: getOrCreateUserEventsChat
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находится чат
                  type: string
                eventsType:
                  example: CALLS
                  description: Тип событий, отправляемых в чат
                  type: string
                  enum:
                    - CALLS
                    - MENTIONS
              required:
                - workspaceId
      responses:
        "200":
          description: Чат создан или найден
          content:
            application/json:
              schema:
                properties:
                  chatId:
                    description: Id чата с персональными нотификациями
                    example: u:BDK5NyCqIK
                    type: string
                required:
                  - chatId
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getOrCreateThreadChat:
    post:
      description: Создание или получение существующего обсуждения под сообщением
      tags:
        - chat
      operationId: getOrCreateThreadChat
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находится обсуждение
                  type: string
                parentChatId:
                  example: w:aIQffAsGia
                  description: ChatId родительского чата, где расположено родительское сообщение
                  type: string
                parentMessageId:
                  example: bIQffAsGia
                  description: MessageId родительского сообщения, к которому относится обсуждение
                  type: string
              required:
                - workspaceId
                - parentChatId
                - parentMessageId
      responses:
        "200":
          description: Обсуждение создано или найдено
          content:
            application/json:
              schema:
                properties:
                  chatId:
                    description: Id обсуждения
                    example: t:BDK5NyCqIK
                    type: string
                required:
                  - chatId
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getWorkspaceChats:
    post:
      description: Получение списка чатов в рабочем пространстве. Архивные чаты не включаются в список
      tags:
        - chat
      operationId: getWorkspaceChats
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, для которого нужно получить список чатов
                  type: string
                pageSize:
                  example: "25"
                  description: Количество возвращаемых chatId. Допустимый диапазон от 1 до 100. По умолчанию 20
                  type: integer
                pageToken:
                  example: AIQffAsGi4
                  description: Токен следующей/предыдущей страницы списка чатов
                  type: string
              required:
                - workspaceId
      responses:
        "200":
          description: Массив из ChatId заданного рабочего пространства
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetChatsResponse"
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getMyWorkspaceChats:
    post:
      description: Получение списка чатов рабочего пространства, в которых состоит бот. Архивные чаты не включаются в список
      tags:
        - chat
      operationId: getMyWorkspaceChats
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, для которого нужно получить список чатов
                  type: string
                pageSize:
                  example: "25"
                  description: Количество возвращаемых chatId. Допустимый диапазон от 1 до 100. По умолчанию 20
                  type: integer
                pageToken:
                  example: AIQffAsGi4
                  description: Токен следующей/предыдущей страницы списка чатов
                  type: string
              required:
                - workspaceId
      responses:
        "200":
          description: Массив из ChatId заданного рабочего пространства, в которых состоит бот
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetChatsResponse"
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getChatsInfo:
    post:
      description: Получение подробной информации о чатах. Чаты, в которых бот не состоит, игнорируются и информация по ним не возвращается
      tags:
        - chat
      operationId: getChatsInfo
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находятся чаты
                  type: string
                chatIds:
                  description: Массив идентификаторов чата ChatId
                  type: array
                  example: "[w:ADK5NyCqIK, w:BDK5NyCqIK]"
                  items:
                    type: string
              required:
                - workspaceId
                - chatIds
      responses:
        "200":
          description: Массив из ChatMembership, содержащих информацию о чате и роли бота в чате
          content:
            application/json:
              schema:
                properties:
                  chatMemberships:
                    type: array
                    items:
                      $ref: "#/components/schemas/ChatMembership"
                required:
                  - chatMemberships
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/inviteToChat:
    post:
      description: Приглашение участников в чат. Используется только для Workspace чатов. Приглашение участников, которые уже состоят в чате, не имеет эффекта
      tags:
        - chat
      operationId: inviteToChat
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором приглашаются новые участники
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, в который приглашаются новые участники
                  type: string
                membershipIds:
                  example: "[ADK5NyCqIK, BDK5NyCqIK]"
                  description: Массив из Membership Id приглашаемых участников. Не более 100 участников
                  type: array
                  items:
                    type: string
              required:
                - workspaceId
                - chatId
                - membershipIds
      responses:
        "200":
          description: Новый участники успешно приглашены
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/kickFromChat:
    post:
      description: Исключение участников из чата. Используется только для Workspace чатов. Исключение участников, которых нет в чате, не имеет эффекта
      tags:
        - chat
      operationId: kickFromChat
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором исключаются участники
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, из которого исключается участники
                  type: string
                membershipIds:
                  example: "[ADK5NyCqIK, BDK5NyCqIK]"
                  description: Массив из Membership Id исключаемых участников. Не более 100 участников
                  type: array
                  items:
                    type: string
              required:
                - workspaceId
                - chatId
                - membershipIds
      responses:
        "200":
          description: Участники успешно исключены
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/leaveChat:
    post:
      description: Покинуть чат. Используется только для Workspace чатов
      tags:
        - chat
      operationId: leaveChat
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находится чат
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, из которого нужно выйти
                  type: string
              required:
                - workspaceId
                - chatId
      responses:
        "200":
          description: Чат успешно покинут
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/archiveChat:
    post:
      description: Сделать чат архивным. Используется только для Workspace чатов
      tags:
        - chat
      operationId: archiveChat
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находится чат
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, который нужно архивировать
                  type: string
              required:
                - workspaceId
                - chatId
      responses:
        "200":
          description: Чат успешно архивирован
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/unrchiveChat:
    post:
      description: Восстановить архивный чат. Используется только для Workspace чатов
      tags:
        - chat
      operationId: unarchiveChat
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находится чат
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, который нужно восстановить
                  type: string
              required:
                - workspaceId
                - chatId
      responses:
        "200":
          description: Чат успешно восстановлен
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/setChatMemberRole:
    post:
      description: Установление новой роли для участника. Используется только для Workspace чатов
      tags:
        - chat
      operationId: setChatMemberRole
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором изменяется роль
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, для которого изменяется роль
                  type: string
                membershipId:
                  example: gIQffAsGi8
                  description: Id участника для изменения роли
                  type: string
                role:
                  $ref: "#/components/schemas/ChatRole"
              required:
                - workspaceId
                - chatId
                - membershipId
                - role
      responses:
        "200":
          description: Роль успешно назначена
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getChatMembersList:
    post:
      description: Получение списка участников чата по chatId. Возвращает массив membershipId участников, состоящих в указанном чате
      tags:
        - chat
      operationId: getChatMembersList
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, для которого нужно получить список участников
                  type: string
                pageSize:
                  example: "25"
                  description: Количество возвращаемых membershipId. Допустимый диапазон от 1 до 100. По умолчанию 20
                  type: integer
                pageToken:
                  example: AIQffAsGi4
                  description: Токен следующей/предыдущей страницы списка участников
                  type: string
              required:
                - workspaceId
                - chatId
      responses:
        "200":
          description: Список участников чата
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetChatMembersListResponse"
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getMembers:
    post:
      description: Получение списка участников рабочего пространства
      tags:
        - member
      operationId: getMembers
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, для которого нужно получить список участников
                  type: string
                pageSize:
                  example: "25"
                  description: Количество возвращаемых membershipId. Допустимый диапазон от 1 до 100. По умолчанию 20
                  type: integer
                pageToken:
                  example: AIQffAsGi4
                  description: Токен следующей/предыдущей страницы списка участников
                  type: string
              required:
                - workspaceId
      responses:
        "200":
          description: Список участников рабочего пространства
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetMembersResponse"
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/inviteMember:
    post:
      description: Приглашение нового участника в рабочее пространство
      tags:
        - member
      operationId: inviteMember
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в которое приглашается участник
                  type: string
                emails:
                  example: "[ivanov@example.com,sidorov@example.com]"
                  description: Массив E-mail пользователей, которым отправляется приглашение. Не более 100 пользователей в 1 запросе
                  type: array
                  items:
                    type: string
              required:
                - workspaceId
                - emails
      responses:
        "200":
          description: Приглашение успешно отправлено
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/removeMember:
    post:
      description: Исключение участника из рабочего пространства. Для выполнения у бота должны быть права администратора. После исключения участник будет удален из списка контактов и персональных чатов
      tags:
        - member
      operationId: removeMember
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, из которого исключается участник
                  type: string
                membershipId:
                  example: gIQffAsGi8
                  description: Id участника для исключения из рабочего пространства
                  type: string
              required:
                - workspaceId
                - membershipId
      responses:
        "200":
          description: Участник успешно исключен
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/setWorkspaceMemberRole:
    post:
      description: Назначение роли для участника рабочего пространства. Нельзя назначить гостевую роль
      tags:
        - member
      operationId: setWorkspaceMemberRole
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, из которого исключается участник
                  type: string
                membershipId:
                  example: gIQffAsGi8
                  description: Id участника для исключения из рабочего пространства
                  type: string
                role:
                  $ref: "#/components/schemas/WorkspaceRole"
              required:
                - workspaceId
                - membershipId
                - role
      responses:
        "200":
          description: Роль успешно назначена
          content:
            application/json:
              schema:
                type: object
                nullable: true
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getMembersInfo:
    post:
      description: Получение информации об участниках рабочего пространства
      tags:
        - member
      operationId: getMembersInfo
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находятся участники
                  type: string
                membershipIds:
                  example: "[gIQffAsGi8,gIQffAsGi9]"
                  description: Id участников рабочего пространства, по которым нужно получить детальную информацию. Не более 100 участников в 1 запросе
                  type: array
                  items:
                    type: string
              required:
                - workspaceId
                - membershipIds
      responses:
        "200":
          description: Информация об участниках
          content:
            application/json:
              schema:
                properties:
                  members:
                    description: Массив данных об участниках
                    type: array
                    items:
                      $ref: "#/components/schemas/MemberInfo"
                required:
                  - members
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getFileUploadUrl:
    post:
      description: "Получение адреса для загрузки файла. В ответе содержится URL, по которому через запрос HTTP PUT отправляется файл. Пример отправки запроса через cURL: curl -X PUT -T \"/path/to/file\" \"URL_FROM_RESPONSE\""
      tags:
        - file
      operationId: getFileUploadUrl
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором отправляется файл
                  type: string
                accessChatId:
                  example: w:IQffAsGi8
                  description: Id чата, у участников которого будет доступ к файлу. Если поле не установлено - доступ к файлу будет у всех участников рабочего пространства
                  type: string
                fileName:
                  example: image.png
                  description: Имя загружаемого файла
                  type: string
              required:
                - workspaceId
                - fileName
      responses:
        "200":
          description: Информация для загрузки файла
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/FileUploadResponse"
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/getFileDownloadUrl:
    post:
      description: Получение ссылки для скачивания файла
      tags:
        - file
      operationId: getFileDownloadUrl
      requestBody:
        content:
          application/json:
            schema:
              properties:
                fileId:
                  example: AIQffAsGi8
                  description: Id файла, который нужно скачать
                  type: string
              required:
                - fileId
      responses:
        "200":
          description: URL адрес для скачивания файла
          content:
            application/json:
              schema:
                properties:
                  url:
                    example: "true"
                    description: URL адрес для скачивания файла
                    type: string
                required:
                  - url
        "403":
          description: Ошибка аутентификации или авторизации, либо нет доступа к файлу
        "404":
          description: Файл с таким Id не найден
        "429":
          description: Превышен лимит запросов
  /public/v2/getVoiceNoteTranscription:
    post:
      description: Получение транскрипции голосового сообщения.
      tags:
        - transcription
      operationId: getVoiceNoteTranscription
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства
                  type: string
                chatId:
                  example: w:BIQffAsGi8
                  description: Id чата
                  type: string
                messageId:
                  example: CIQffAsGi8
                  description: Id сообщения с голосовым сообщением
                  type: string
              required:
                - workspaceId
                - chatId
                - messageId
      responses:
        "200":
          description: Транскрипция голосового сообщения
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VoiceNoteTranscriptionResponse"
        "403":
          description: Ошибка аутентификации или авторизации, либо нет доступа к сообщению
        "404":
          description: Сообщение не найдено, не содержит голосовое сообщение, или транскрипция недоступна
        "429":
          description: Превышен лимит запросов
  /public/v2/getConferenceTranscription:
    post:
      description: Получение транскрипции записи звонка.
      tags:
        - transcription
      operationId: getConferenceTranscription
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства
                  type: string
                conferenceId:
                  example: gIQffAsGi8
                  description: Id конференции (звонка)
                  type: string
              required:
                - workspaceId
                - conferenceId
      responses:
        "200":
          description: Транскрипция записи звонка
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ConferenceTranscriptionResponse"
        "403":
          description: Ошибка аутентификации или авторизации, либо нет доступа к записи
        "404":
          description: Конференция не найдена, запись отсутствует, или транскрипция недоступна
        "429":
          description: Превышен лимит запросов
  /public/v2/getMe:
    post:
      description: Получение сведений о боте, в том числе список рабочих пространств, в которых состоит бот, а также информация о профиле бота
      tags:
        - me
      operationId: getMe
      responses:
        "200":
          description: Сведения о боте
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/MeInfo"
        "403":
          description: Ошибка аутентификации
        "429":
          description: Превышен лимит запросов
  /public/v2/getWorkspaceInfo:
    post:
      description: Получение информации о рабочих пространствах, в которых состоит бот, включая идентификатор организации. Рабочие пространства, в которых бот не состоит, игнорируются
      tags:
        - workspace
      operationId: getWorkspacesInfo
      requestBody:
        required: true
        content:
          application/json:
            schema:
              properties:
                workspaceIds:
                  description: Массив идентификаторов рабочих пространств. Максимум 100 элементов
                  type: array
                  maxItems: 100
                  example: "[ADK5NyCqIK, BDK5NyCqIK]"
                  items:
                    type: string
              required:
                - workspaceIds
      responses:
        "200":
          description: Информация о рабочих пространствах
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetWorkspacesInfoResponse"
        "403":
          description: Ошибка аутентификации
        "429":
          description: Превышен лимит запросов
  /public/v2/setWebhook:
    post:
      description: Устанавливает вебхук, на который будут отправляться update события
      operationId: setWebhook
      tags:
        - webhook
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: "#/components/schemas/SetWebhookRequest"
      responses:
        "200":
          description: Вебхук сохранен
          content:
            application/json:
              schema:
                type: object
                nullable: true
  /public/v2/deleteWebhook:
    delete:
      description: Удаляет вебхук, на который будут отправляться update события
      operationId: deleteWebhook
      tags:
        - webhook
      responses:
        "200":
          description: Вебхук удален
          content:
            application/json:
              schema:
                type: object
                nullable: true
  /public/v2/getWebhookInfo:
    get:
      description: Получение информации о зарегистрированном вебхуке
      operationId: getWebhookInfo
      tags:
        - webhook
      responses:
        "200":
          description: Информация о найденном вебхуке
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/WebhookInfo"
        "404":
          description: Вебхук не найден
          content:
            application/json:
              schema:
                type: object
                nullable: true
  /public/v2/votePoll:
    post:
      description: Голосование в опросе
      tags:
        - poll
      operationId: votePoll
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находится опрос
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, в котором находится сообщение с опросом
                  type: string
                messageId:
                  example: gIQffAsGi8
                  description: Id сообщения с опросом
                  type: string
                options:
                  description: Массив индексов выбранных вариантов ответа (начиная с 0)
                  type: array
                  example:
                    - 0
                    - 2
                  items:
                    type: integer
              required:
                - workspaceId
                - chatId
                - messageId
                - options
      responses:
        "200":
          description: Голос успешно учтен
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/VotePollResponse"
        "403":
          description: Ошибка аутентификации или авторизации
        "404":
          description: Сообщение с опросом не найдено
        "429":
          description: Превышен лимит запросов
  /public/v2/getPollInfo:
    post:
      description: Получение информации об опросе
      tags:
        - poll
      operationId: getPollInfo
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находится опрос
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, в котором находится сообщение с опросом
                  type: string
                pollId:
                  example: gIQffAsGi8
                  description: Id опроса
                  type: string
              required:
                - workspaceId
                - chatId
                - pollId
      responses:
        "200":
          description: Информация об опросе
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetPollInfoResponse"
        "403":
          description: Ошибка аутентификации или авторизации
        "404":
          description: Опрос не найден
        "429":
          description: Превышен лимит запросов
  /public/v2/getPollVotes:
    post:
      description: Получение индивидуальных голосов в неанонимном опросе
      tags:
        - poll
      operationId: getPollVotes
      requestBody:
        content:
          application/json:
            schema:
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором находится опрос
                  type: string
                chatId:
                  example: w:AIQffAsGi8
                  description: Id чата, в котором находится сообщение с опросом
                  type: string
                messageId:
                  example: gIQffAsGi8
                  description: Id сообщения с опросом
                  type: string
                pageSize:
                  example: 25
                  description: Количество возвращаемых голосов. Допустимый диапазон от 1 до 100. По умолчанию 20
                  type: integer
                pageToken:
                  example: AIQffAsGi4
                  description: Токен следующей/предыдущей страницы списка голосов
                  type: string
              required:
                - workspaceId
                - chatId
                - messageId
      responses:
        "200":
          description: Список голосов в опросе
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/GetPollVotesResponse"
        "400":
          description: Опрос является анонимным
        "403":
          description: Ошибка аутентификации или авторизации
        "404":
          description: Сообщение с опросом не найдено
        "429":
          description: Превышен лимит запросов
  /public/v2/searchMessages:
    post:
      description: Полнотекстовый поиск по сообщениям в рабочем пространстве
      tags:
        - search
      operationId: searchMessages
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Запрос на полнотекстовый поиск сообщений
              required:
                - workspaceId
                - query
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства, в котором будет производиться поиск
                  type: string
                query:
                  example: поисковый запрос
                  description: Текст поискового запроса
                  type: string
                  minLength: 1
                  maxLength: 255
                chatIds:
                  description: Массив Id чатов, в которых будет производиться поиск. Если не указан, поиск производится во всех доступных чатах
                  type: array
                  items:
                    type: string
                  example: "[w:ADK5NyCqIK, w:BDK5NyCqIK]"
                from:
                  description: Начало периода для поиска
                  example: "2024-01-01T00:00:00.000+03:00"
                  type: string
                  format: date-time
                to:
                  description: Конец периода для поиска
                  example: "2024-12-31T23:59:59.000+03:00"
                  type: string
                  format: date-time
                sortBy:
                  description: Тип сортировки результатов. DATE - по дате (по умолчанию), RELEVANCE - по релевантности
                  $ref: "#/components/schemas/SearchSortBy"
                authorMembershipIds:
                  description: Массив MembershipId авторов сообщений для фильтрации
                  type: array
                  items:
                    type: string
                  example: "[ADK5NyCqIK, BDK5NyCqIK]"
                pageSize:
                  description: Количество результатов на страницу. Максимум 100, по умолчанию 20
                  example: 20
                  type: integer
                  minimum: 1
                  maximum: 100
                pageToken:
                  description: Токен для пагинации. Используйте nextPageToken или prevPageToken из предыдущего ответа
                  type: string
      responses:
        "200":
          description: Результаты поиска по сообщениям
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchMessagesResponse"
        "400":
          description: Невалидный запрос
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/searchRecordings:
    post:
      description: Поиск по записям конференций (транскрипции, краткое содержание, заголовки)
      tags:
        - search
      operationId: searchRecordings
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Запрос на поиск записей конференций
              required:
                - workspaceId
                - query
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства
                  type: string
                query:
                  example: транскрипция
                  description: Текст поискового запроса
                  type: string
                  minLength: 1
                  maxLength: 255
                chatIds:
                  description: Массив Id чатов для фильтрации
                  type: array
                  items:
                    type: string
                from:
                  description: Начало периода для поиска
                  type: string
                  format: date-time
                to:
                  description: Конец периода для поиска
                  type: string
                  format: date-time
                sortBy:
                  description: Тип сортировки результатов
                  $ref: "#/components/schemas/SearchSortBy"
                searchTargets:
                  description: Типы контента записи для поиска. Если не указан, поиск по всем типам
                  type: array
                  items:
                    $ref: "#/components/schemas/OccurrenceType"
                pageSize:
                  description: Количество результатов на страницу. Максимум 100, по умолчанию 20
                  example: 20
                  type: integer
                  minimum: 1
                  maximum: 100
                pageToken:
                  description: Токен для пагинации
                  type: string
      responses:
        "200":
          description: Результаты поиска по записям
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchRecordingsResponse"
        "400":
          description: Невалидный запрос
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/searchMembers:
    post:
      description: Поиск участников рабочего пространства по имени, email, должности или департаменту
      tags:
        - search
      operationId: searchMembers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Запрос на поиск участников рабочего пространства
              required:
                - workspaceId
                - query
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства
                  type: string
                query:
                  example: Иванов
                  description: Текст поискового запроса
                  type: string
                  minLength: 1
                  maxLength: 255
                searchBy:
                  description: Критерии поиска. Если не указан, поиск по имени
                  type: array
                  items:
                    $ref: "#/components/schemas/MemberSearchBy"
                includeGuests:
                  description: Включать гостей в результаты. По умолчанию false
                  type: boolean
                  default: false
                pageSize:
                  description: Количество результатов на страницу. Максимум 100, по умолчанию 20
                  example: 20
                  type: integer
                  minimum: 1
                  maximum: 100
                pageToken:
                  description: Токен для пагинации
                  type: string
      responses:
        "200":
          description: Результаты поиска участников
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchMembersResponse"
        "400":
          description: Невалидный запрос
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
  /public/v2/searchChats:
    post:
      description: Поиск чатов рабочего пространства по названию
      tags:
        - search
      operationId: searchChats
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              description: Запрос на поиск чатов рабочего пространства по названию
              required:
                - workspaceId
                - query
              properties:
                workspaceId:
                  example: AIQffAsGi8
                  description: Id рабочего пространства
                  type: string
                query:
                  example: Документация
                  description: Текст поискового запроса по названию чата
                  type: string
                  minLength: 1
                  maxLength: 255
                archivedFilter:
                  description: Фильтр по архивности чатов. По умолчанию UNARCHIVED_ONLY
                  $ref: "#/components/schemas/ArchivedFilter"
                pageSize:
                  description: Количество результатов на страницу. Максимум 100, по умолчанию 20
                  example: 20
                  type: integer
                  minimum: 1
                  maximum: 100
                pageToken:
                  description: Токен для пагинации
                  type: string
      responses:
        "200":
          description: Результаты поиска чатов
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/SearchChatsResponse"
        "400":
          description: Невалидный запрос
        "403":
          description: Ошибка аутентификации или авторизации
        "429":
          description: Превышен лимит запросов
components:
  schemas:
    Update:
      type: object
      description: Объект какого-либо события (обновления), которое относится к боту. Содержит идентификатор и одно из заполненных полей в зависимости от типа события.
      properties:
        updateId:
          description: Идентификатор обновления, монотонно возрастает. Более поздние обновления имеют бОльший идентификатор
          type: integer
          format: int64
        message:
          description: Объект обновления - сообщение
          $ref: "#/components/schemas/Message"
        notification:
          description: Объект обновления - уведомление
          $ref: "#/components/schemas/Notification"
        messageAction:
          description: Объект обновления - интерактивное действие с сообщением (нажатие кнопки)
          $ref: "#/components/schemas/messageAction"
        workspaceInvite:
          description: Объект обновления - приглашение в новое рабочее пространство
          $ref: "#/components/schemas/WorkspaceInvite"
    Notification:
      type: object
      description: Тип обновления - уведомление. Содержит Id рабочего пространства, время создания и одно заполненное поле, в зависимости от вида уведомления
      required:
        - workspaceId
        - timestamp
      properties:
        workspaceId:
          example: AIQffAsGi8
          description: Id рабочего пространства, к которому относится уведомление
          type: string
        timestamp:
          description: Время создания уведомления
          example: "2024-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
        memberJoinedEvent:
          type: object
          description: Уведомление о присоединении нового участника к рабочему пространству
          required:
            - memberId
          properties:
            memberId:
              example: ADK5NyCqIK
              description: Membership Id присоединившегося участника
              type: string
        memberInvitedEvent:
          type: object
          description: Уведомление о приглашении нового участника в рабочее пространство
          required:
            - memberId
          properties:
            memberId:
              example: ADK5NyCqIK
              description: Membership Id приглашенного участника
              type: string
        memberLeftEvent:
          type: object
          description: Уведомление о выходе участника из рабочего пространства
          required:
            - memberId
          properties:
            memberId:
              example: ADK5NyCqIK
              description: Membership Id участника, покинувшего рабочее пространство
              type: string
        memberChangedRoleEvent:
          type: object
          description: Уведомление об изменении роли участника в рабочем пространстве
          required:
            - memberId
            - newRole
          properties:
            memberId:
              example: ADK5NyCqIK
              description: Membership Id участника с новой ролью
              type: string
            newRole:
              description: Новая роль участника
              $ref: "#/components/schemas/WorkspaceRole"
        chatCreatedEvent:
          type: object
          description: Уведомление о создании нового чата в рабочем пространстве
          required:
            - chatId
            - metadata
          properties:
            chatId:
              example: w:AIQffAsGi8
              description: Id созданного чата
              type: string
            metadata:
              $ref: "#/components/schemas/ChatMetadata"
        reactionToggledEvent:
          type: object
          description: Уведомление о добавлении/удалении реакции на сообщение
          required:
            - chatId
            - messageId
            - emoji
            - reactedBy
            - wasSet
          properties:
            chatId:
              example: w:AIQffAsGi8
              description: Id чата, в котором содержится сообщение с реакцией
              type: string
            messageId:
              example: bIQffAsGia
              description: Message Id сообщения с реакцией
              type: string
            emoji:
              description: "Emoji в виде :+1:"
              example: ":heart:"
              type: string
            reactedBy:
              example: ADK5NyCqIK
              description: Membership Id участника, который поставил или убрал реакцию
              type: string
            wasSet:
              example: "true"
              description: Если значение true - реакция была поставлена, в противном случае - убрана
              type: boolean
        messageEditedEvent:
          type: object
          description: Уведомление об изменении сообщения
          required:
            - chatId
            - messageId
          properties:
            chatId:
              example: w:AIQffAsGi8
              description: Id чата, в котором содержится измененное сообщение
              type: string
            messageId:
              example: bIQffAsGia
              description: Message Id измененного сообщения
              type: string
        messageDeletedEvent:
          type: object
          description: Уведомление об удалении сообщения
          required:
            - chatId
            - messageId
          properties:
            chatId:
              example: w:AIQffAsGi8
              description: Id чата, в котором содержалось удаленное сообщение
              type: string
            messageId:
              example: bIQffAsGia
              description: Message Id удаленного сообщения
              type: string
        chatMemberJoinedEvent:
          type: object
          description: Уведомление о новом участнике в чате
          required:
            - chatId
            - memberId
          properties:
            chatId:
              example: w:AIQffAsGi8
              description: Id чата, в котором появился новый участник
              type: string
            memberId:
              example: ADK5NyCqIK
              description: Membership Id нового участника чата
              type: string
        chatMemberLeftEvent:
          type: object
          description: Уведомление о том, что участник покинул чат
          required:
            - chatId
            - memberId
          properties:
            chatId:
              example: w:AIQffAsGi8
              description: Id чата, который покинул частник
              type: string
            memberId:
              example: ADK5NyCqIK
              description: Membership Id участника, который покинул чат
              type: string
        chatMemberInvitedEvent:
          type: object
          description: Уведомление о приглашении нового участника в чат
          required:
            - chatId
            - memberId
            - inviterMemberId
          properties:
            chatId:
              example: w:AIQffAsGi8
              description: Id чата, в который пригласили нового участника
              type: string
            memberId:
              example: ADK5NyCqIK
              description: Membership Id приглашенного участника
              type: string
            inviterMemberId:
              example: ADK5NyCqIK
              description: Membership Id пригласившего участника
              type: string
        chatMemberChangedRoleEvent:
          type: object
          description: Уведомление об изменении роли участника в чате
          required:
            - chatId
            - memberId
            - newRole
          properties:
            chatId:
              example: w:AIQffAsGi8
              description: Id чата, в котором содержалось удаленное сообщение
              type: string
            memberId:
              example: ADK5NyCqIK
              description: Membership Id нового участника чата
              type: string
            newRole:
              description: Новая роль участника
              $ref: "#/components/schemas/ChatRole"
        chatArchivedEvent:
          type: object
          description: Уведомление об архивации чата
          required:
            - chatId
          properties:
            chatId:
              example: w:AIQffAsGi8
              description: Id чата, который был архивирован
              type: string
        chatUnarchivedEvent:
          type: object
          description: Уведомление об разархивации чата
          required:
            - chatId
          properties:
            chatId:
              example: w:AIQffAsGi8
              description: Id чата, который был разархивирован
              type: string
        pollVotedEvent:
          type: object
          description: Уведомление об обновлении голосов в опросе
          required:
            - chatId
            - messageId
            - pollId
            - summary
          properties:
            chatId:
              example: w:AIQffAsGi8
              description: Id чата, в котором содержится опрос
              type: string
            messageId:
              example: bIQffAsGia
              description: Message Id сообщения с опросом
              type: string
            pollId:
              example: AIQffAsGi8
              description: Id опроса
              type: string
            summary:
              $ref: "#/components/schemas/PollSummary"
            myVote:
              description: Индексы вариантов, за которые проголосовал текущий пользователь
              type: array
              items:
                type: integer
    messageAction:
      type: object
      description: Тип обновления - интерактивное действие пользователя с сообщение
      required:
        - workspaceId
        - chatId
        - messageId
      properties:
        workspaceId:
          example: AIQffAsGi8
          description: Id рабочего пространства, в котором находится сообщение
          type: string
        chatId:
          example: w:AIQffAsGi8
          description: Id чата, в котором находится сообщение
          type: string
        messageId:
          example: gIQffAsGi8
          description: Id сообщения
          type: string
        pressedButtonCommand:
          description: Команда кнопки, которая была нажата
          $ref: "#/components/schemas/CommandButton"
    WorkspaceInvite:
      type: object
      description: Тип обновления - приглашение в новое рабочее пространство
      required:
        - workspaceId
        - inviterName
        - inviterEmail
      properties:
        workspaceId:
          example: AIQffAsGi8
          description: Id рабочего пространства, в которое был приглашен бот
          type: string
        inviterName:
          description: Имя участника, который отправил приглашение
          example: Иванов Иван
          type: string
        inviterEmail:
          description: E-mail участника, который отправил приглашение
          example: ivanov@example.org
          type: string
    GetMessagesResponse:
      type: object
      description: Данные о запрошенном списке сообщений
      required:
        - messages
      properties:
        messages:
          description: Массив из объектов Message
          type: array
          items:
            $ref: "#/components/schemas/Message"
    GetPinnedMessagesResponse:
      type: object
      description: Данные о закреплённых сообщениях чата
      required:
        - messages
      properties:
        messages:
          description: Массив закреплённых сообщений, упорядоченный по дате закрепления
          type: array
          items:
            $ref: "#/components/schemas/Message"
        prevPageToken:
          description: Токен предыдущей страницы списка закреплённых сообщений
          type: string
          example: BDK5NyCqI4
        nextPageToken:
          description: Токен следующей страницы списка закреплённых сообщений
          type: string
          example: BDK5NyCqI4
    DeleteMessagesResponse:
      type: object
      description: Информация об удаленных сообщениях
      required:
        - updatedAt
        - deletedMessageIds
      properties:
        updatedAt:
          description: Время удаления сообщений
          example: "2024-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
        deletedMessageIds:
          description: Массив из messageId, которые были удалены
          type: array
          example: "[ADK5NyCqIK, BDK5NyCqIK]"
          items:
            type: string
    GetChatMembersListResponse:
      type: object
      description: Ответ на запрос списка участников чата
      required:
        - membershipIds
      properties:
        membershipIds:
          description: Массив из membershipId участников чата
          type: array
          example: "[ADK5NyCqIK, BDK5NyCqIK]"
          items:
            type: string
        prevPageToken:
          description: Токен предыдущей страницы списка участников чата
          type: string
          example: BDK5NyCqI4
        nextPageToken:
          description: Токен следующей страницы списка участников чата
          type: string
          example: BDK5NyCqI4
    GetMembersResponse:
      type: object
      description: Ответ на запрос списка участников
      required:
        - membershipIds
      properties:
        membershipIds:
          description: Массив из membershipId, которые находятся в указанном рабочем пространстве
          type: array
          example: "[ADK5NyCqIK, BDK5NyCqIK]"
          items:
            type: string
        prevPageToken:
          description: Токен предыдущей страницы списка участников рабочего пространства
          type: string
          example: BDK5NyCqI4
        nextPageToken:
          description: Токен следующей страницы списка участников рабочего пространства
          type: string
          example: BDK5NyCqI4
    GetChatsResponse:
      type: object
      description: Ответ на запрос списка чатов в рабочем пространстве
      required:
        - chatIds
      properties:
        chatIds:
          description: Массив из chatId, которые находятся в указанном рабочем пространстве
          type: array
          example: "[w:ADK5NyCqIK, w:BDK5NyCqIK]"
          items:
            type: string
        prevPageToken:
          description: Токен предыдущей страницы списка чатов рабочего пространства
          type: string
          example: BDK5NyCqI4
        nextPageToken:
          description: Токен следующей страницы списка чатов рабочего пространства
          type: string
          example: BDK5NyCqI4
    VoiceNoteTranscriptionResponse:
      type: object
      description: Транскрипция голосового сообщения
      required:
        - state
      properties:
        text:
          description: Текст транскрипции
          type: string
          example: Привет, как дела?
        state:
          description: Состояние транскрипции
          type: string
          enum:
            - READY
            - PROCESSING
            - NOT_AVAILABLE
          example: READY
        language:
          description: Определённый язык транскрипции (ISO 639-1)
          type: string
          example: ru
    ConferenceTranscriptionResponse:
      type: object
      description: Транскрипция записи звонка с разбивкой по участникам
      required:
        - state
      properties:
        state:
          description: Состояние транскрипции
          type: string
          enum:
            - READY
            - PROCESSING
            - NOT_AVAILABLE
          example: READY
        summary:
          description: Краткое содержание звонка (если доступно)
          type: string
          example: Обсудили план на неделю и распределили задачи
        segments:
          description: Сегменты транскрипции с указанием участников и временных меток
          type: array
          items:
            $ref: "#/components/schemas/ConferenceTranscriptionSegment"
    ConferenceTranscriptionSegment:
      type: object
      description: Сегмент транскрипции звонка
      required:
        - text
        - startTimeMs
        - endTimeMs
      properties:
        memberId:
          description: Id участника (membership), если известен
          type: string
          example: ADK5NyCqIK
        participantName:
          description: Имя участника
          type: string
          example: Иван Иванов
        text:
          description: Текст, произнесённый участником
          type: string
          example: Давайте начнём с обсуждения плана
        startTimeMs:
          description: Время начала сегмента от начала записи (миллисекунды)
          type: integer
          format: int64
          example: 5000
        endTimeMs:
          description: Время окончания сегмента от начала записи (миллисекунды)
          type: integer
          format: int64
          example: 8500
    FileUploadResponse:
      type: object
      description: Информация для загрузки файла
      required:
        - fileId
        - uploadUrl
      properties:
        fileId:
          description: Идентификатор отправляемого файла
          example: BDK5NyCqIK
          type: string
        uploadUrl:
          description: URL, по которому необходимо выполнить PUT запрос для загрузки файла
          type: string
          example: "https://yuchat-files-presigned.storage.net/d2f19302"
    MeInfo:
      type: object
      description: Сведения о боте, в том числе список рабочих пространств, в которых состоит бот, а также информация о профиле бота
      required:
        - profile
        - workspaces
        - updateApiVersion
        - updateSettings
        - autoAcceptWorkspaceInvites
        - scope
      properties:
        profile:
          description: Профиль бота
          $ref: "#/components/schemas/Profile"
        workspaces:
          description: Массив из workspaceId, в которых состоит бот
          type: array
          example: "[ADK5NyCqIK, BDK5NyCqIK]"
          items:
            type: string
        updateApiVersion:
          description: Версия API, через которую бот получает обновления по методу getUpdates или по вебхукам. Может быть 1 или 2
          example: "1"
          type: integer
        updateSettings:
          description: Настройки активны только при получении обновлений по API v2. Массив из UpdateSetting, которые получает бот. По умолчанию бот получает типы MESSAGE и WORKSPACE_INVITE
          type: array
          items:
            $ref: "#/components/schemas/UpdateSetting"
        autoAcceptWorkspaceInvites:
          description: Настройка активна только при получении обновлений по API v2. Устанавливает, будет ли бот автоматически принимать приглашения в рабочие пространства. По умолчанию false
          example: "false"
          default: false
          type: boolean
        memberships:
          description: Массив membershipId бота в каждом воркспейсе. Позволяет боту узнать свой membershipId без отправки сообщений
          type: array
          items:
            $ref: "#/components/schemas/WorkspaceMembership"
        scope:
          description: Область видимости бота - определяет, в каких пространствах бот может работать
          $ref: "#/components/schemas/BotScope"
    GetWorkspacesInfoResponse:
      type: object
      description: Ответ на запрос информации о рабочих пространствах
      required:
        - workspaces
      properties:
        workspaces:
          description: Массив объектов WorkspaceInfo. Содержит только рабочие пространства, в которых бот является участником
          type: array
          items:
            $ref: "#/components/schemas/WorkspaceInfo"
    WorkspaceInfo:
      type: object
      description: Информация о рабочем пространстве
      required:
        - workspaceId
        - organizationId
        - displayName
        - membersCount
        - type
        - createdAt
      properties:
        workspaceId:
          description: Идентификатор рабочего пространства
          type: string
          example: RBhSX3OSNk
        organizationId:
          description: Идентификатор организации, к которой принадлежит рабочее пространство
          type: string
          example: pFs0S4EZwO
        displayName:
          description: Отображаемое название рабочего пространства
          type: string
          example: DevTeam
        membersCount:
          description: Количество участников в рабочем пространстве
          type: integer
          format: int64
          example: 42
        type:
          description: Тип рабочего пространства
          $ref: "#/components/schemas/WorkspaceType"
        createdAt:
          description: Дата и время создания рабочего пространства
          type: string
          format: date-time
          example: "2024-01-15T10:00:00Z"
    WorkspaceType:
      type: string
      description: Тип рабочего пространства
      enum:
        - REGULAR
        - UBER
      example: REGULAR
    WorkspaceMembership:
      type: object
      description: "Связь бота с рабочим пространством: workspaceId и соответствующий membershipId"
      required:
        - workspaceId
        - membershipId
      properties:
        workspaceId:
          description: Идентификатор рабочего пространства
          type: string
          example: ADK5NyCqIK
        membershipId:
          description: Идентификатор участника (membershipId) бота в данном рабочем пространстве
          type: string
          example: YKcsFqDNXk
    Profile:
      description: Информация о профиле участника
      type: object
      required:
        - accountId
        - createdAt
        - updatedAt
        - accountType
      properties:
        accountId:
          description: Идентификатор аккаунта
          example: AIQffAsGi8
          type: string
        email:
          description: Почтовый адрес
          example: i.ivanov@example.ru
          type: string
        createdAt:
          description: Дата и время создания аккаунта
          example: "2023-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
        updatedAt:
          description: Дата и время последнего изменения аккаунта
          example: "2024-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
        fullName:
          description: Отображаемое имя
          example: Иванов Иван Иванович
          type: string
        accountType:
          $ref: "#/components/schemas/AccountType"
        accountDetails:
          $ref: "#/components/schemas/AccountDetails"
    AccountDetails:
      description: Дополнительные данные о пользователе
      type: object
      properties:
        position:
          description: Должность
          example: Аналитик
          type: string
        department:
          description: Департамент
          example: B2B
          type: string
        phoneNumber:
          description: Номер телефона
          example: "88001234567"
          type: string
        location:
          $ref: "#/components/schemas/AccountLocation"
        bio:
          description: Краткая информация
          example: Не беспокоить после 20:00
          type: string
        status:
          example: В командировке
          description: Статус
          type: string
        customFields:
          description: Произвольные кастомные поля профиля, заданные пользователем. Порядок элементов значим.
          type: array
          items:
            $ref: "#/components/schemas/UserProfileCustomField"
    UserProfileCustomField:
      description: Кастомное поле профиля (пара ключ-значение)
      type: object
      required:
        - key
        - value
      properties:
        key:
          description: Название поля
          example: telegram
          type: string
          maxLength: 64
        value:
          description: Значение поля
          example: "@ivanov"
          type: string
          maxLength: 256
    MemberInfo:
      description: Данные о пользователе в рабочем пространстве
      type: object
      required:
        - membershipId
        - profile
        - createdAt
        - updatedAt
        - presence
        - memberStatus
      properties:
        membershipId:
          example: gIQffAsGi8
          description: Id участника в рабочем пространстве
          type: string
        profile:
          $ref: "#/components/schemas/Profile"
        createdAt:
          description: Дата и время создания участника
          example: "2023-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
        updatedAt:
          description: Дата и время последнего изменения информации об участнике
          example: "2024-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
        joinedAt:
          description: Дата и время присоединения участника к рабочему пространству
          example: "2024-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
        workspaceRole:
          $ref: "#/components/schemas/WorkspaceRole"
        presence:
          $ref: "#/components/schemas/Presence"
        timeZone:
          example: Europe/Moscow
          description: Id временной зоны участника
          type: string
        memberStatus:
          $ref: "#/components/schemas/MemberStatus"
        leftAt:
          description: Дата и время исключения участника из рабочего пространства
          example: "2024-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
    Presence:
      description: Информация об онлайн статусе участника
      type: object
      required:
        - online
        - onCall
        - since
      properties:
        online:
          description: Участник онлайн
          example: "true"
          type: boolean
        onCall:
          description: Участник на звонке
          example: "true"
          type: boolean
        since:
          description: Дата и время последнего изменения статуса
          example: "2024-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
    SendPoll:
      description: Опрос для отправки
      type: object
      required:
        - question
        - options
      properties:
        question:
          description: Вопрос опроса
          example: Какой ваш любимый язык программирования?
          type: string
          maxLength: 255
        options:
          description: Варианты ответа
          type: array
          minItems: 2
          maxItems: 20
          items:
            type: string
            maxLength: 100
          example:
            - Kotlin
            - Java
            - Python
        isMultiple:
          description: Можно ли выбрать несколько вариантов ответа
          type: boolean
          default: false
        isAnonymous:
          description: Анонимное голосование (нельзя увидеть кто как проголосовал)
          type: boolean
          default: true
    ButtonBar:
      description: Блок кнопок
      type: object
      required:
        - buttonGroups
      properties:
        buttonGroups:
          description: Ряд кнопок
          type: array
          items:
            $ref: "#/components/schemas/ButtonGroup"
    ButtonGroup:
      description: Ряд кнопок
      type: object
      required:
        - buttons
      properties:
        buttons:
          description: Кнопки
          type: array
          items:
            $ref: "#/components/schemas/Button"
    Button:
      description: Кнопка. Заполняется одно из полей в зависимости от типа кнопки.
      type: object
      properties:
        commandButton:
          $ref: "#/components/schemas/CommandButton"
        linkButton:
          $ref: "#/components/schemas/LinkButton"
    CommandButton:
      description: Кнопка с командой
      type: object
      required:
        - displayText
        - commandKey
      properties:
        displayText:
          example: Нажмите на кнопку
          description: Текст на кнопке
          type: string
        commandKey:
          example: /button_pushed
          description: Команда, пересылаемая при нажатии на кнопку
          type: string
    LinkButton:
      type: object
      required:
        - displayText
        - link
      properties:
        displayText:
          example: Нажмите на кнопку
          description: Текст на кнопке
          type: string
        link:
          example: "https://www.yuchat.ai"
          description: Ссылка, открываемая при нажатии на кнопку
          type: string
    AccountType:
      description: Тип аккаунта
      example: REGULAR
      type: string
      enum:
        - REGULAR
        - BOT
        - GUEST
    AccountLocation:
      description: Место нахождения
      example: OFFICE
      type: string
      enum:
        - NOT_SET
        - OFFICE
        - HOME
        - VACATION
    Message:
      type: object
      description: Объект сообщения
      required:
        - workspaceId
        - chatId
        - messageId
        - messageType
        - membershipId
        - createdAt
        - updatedAt
        - content
      properties:
        workspaceId:
          example: AIQffAsGi8
          description: Id рабочего пространства, в котором было отправлено сообщение
          type: string
        chatId:
          example: w:AIQffAsGi8
          description: Id чата, в который отправлено сообщение
          type: string
        messageId:
          example: gIQffAsGi8
          description: Id сообщения
          type: string
        messageType:
          $ref: "#/components/schemas/MessageType"
        inReplyToMessageId:
          example: gIQffAsGi8
          description: Id сообщения, на которое было отвечено этим сообщением
          type: string
        membershipId:
          example: gIQffAsGi8
          description: Id автора сообщения
          type: string
        createdAt:
          description: Дата и время создания сообщения
          example: "2023-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
        updatedAt:
          description: Дата и время последнего изменения сообщения
          example: "2024-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
        content:
          $ref: "#/components/schemas/MessageContent"
        reactions:
          description: Массив из реакций к сообщению
          type: array
          items:
            $ref: "#/components/schemas/Reaction"
        threadId:
          example: t:AIQffAsGi8
          description: Id обсуждения под этим сообщением
          type: string
        pinnedAt:
          description: Дата и время закрепления сообщения
          example: "2024-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
    Reaction:
      type: object
      description: Содержимое реакции на сообщение
      required:
        - emoji
        - count
      properties:
        emoji:
          description: "Emoji в виде :+1:"
          example: ":heart:"
          type: string
        count:
          description: Количество реакций
          example: "5"
          type: integer
    MessageContent:
      type: object
      description: Содержимое сообщения. Как минимум одно поле не пустое
      properties:
        text:
          example: Привет!
          description: Сообщение в формате Markdown
          type: string
        fileIds:
          example: "[ADK5NyCqIK, BDK5NyCqIK]"
          description: Массив из Id файлов, которые прикреплены к сообщению
          type: array
          items:
            type: string
        conferenceId:
          example: gIQffAsGi8
          description: Id конференции
          type: string
        systemEvent:
          $ref: "#/components/schemas/SystemEvent"
        forwardedContent:
          $ref: "#/components/schemas/ForwardedContent"
        userEvent:
          $ref: "#/components/schemas/UserEvent"
        pollId:
          example: gIQffAsGi8
          description: Id опроса, если сообщение содержит опрос
          type: string
    SystemEvent:
      type: object
      description: Содержимое системного сообщения. Как минимум одно поле не пустое
      properties:
        chatCreated:
          type: object
          description: Системное сообщение создания чата
          required:
            - creatorMembershipId
          properties:
            creatorMembershipId:
              example: ADK5NyCqIK
              description: Membership Id создателя чата
              type: string
            membershipIds:
              example: "[ADK5NyCqIK, BDK5NyCqIK]"
              description: Массив из Membership Id участников созданного чата
              type: array
              items:
                type: string
        chatConvertedToPrivate:
          type: object
          description: Системное сообщение создания чата
          required:
            - initiatorMembershipId
          properties:
            initiatorMembershipId:
              example: ADK5NyCqIK
              description: Membership Id инициатора конвертации чата в приватный
              type: string
        membersJoined:
          type: object
          description: Системное сообщение присоединения новых участников к чату
          required:
            - membershipIds
          properties:
            inviterMembershipId:
              example: ADK5NyCqIK
              description: Membership Id участника, который пригласил новых участников
              type: string
            membershipIds:
              example: "[ADK5NyCqIK, BDK5NyCqIK]"
              description: Массив из Membership Id приглашенных участников
              type: array
              items:
                type: string
        membersLeft:
          type: object
          description: Системное сообщение исключения участников из чата
          required:
            - membershipIds
          properties:
            kickerMembershipId:
              example: ADK5NyCqIK
              description: Membership Id участника, который исключил участников
              type: string
            membershipIds:
              example: "[ADK5NyCqIK, BDK5NyCqIK]"
              description: Массив из Membership Id исключенных участников
              type: array
              items:
                type: string
        chatRenamed:
          type: object
          description: Системное сообщение переименования чата
          required:
            - initiatorMembershipId
            - newName
          properties:
            initiatorMembershipId:
              example: ADK5NyCqIK
              description: Membership Id участника, который переименовал чат
              type: string
            newName:
              example: Документация
              description: Новое название чата
              type: string
    UserEvent:
      type: object
      description: Содержимое персональной нотификации. Как минимум одно поле не пустое
      properties:
        conferenceMissed:
          type: object
          description: Персональная нотификация о пропущенной конференции
          required:
            - conferenceId
            - conferenceTarget
            - startedAt
          properties:
            conferenceId:
              example: ADK5NyCqIK
              description: Идентификатор конференции
              type: string
            inviterMemberId:
              example: ADK5NyCqIK
              description: Membership Id инициатора конференции
              type: string
            conferenceTarget:
              $ref: "#/components/schemas/ConferenceTarget"
            startedAt:
              description: Дата и время старта конференции
              example: "2023-02-26T18:58:36.154+03:00"
              type: string
              format: date-time
        conferenceDeclined:
          type: object
          description: Персональная нотификация об отклоненной конференции
          required:
            - conferenceId
            - conferenceTarget
            - startedAt
          properties:
            conferenceId:
              example: ADK5NyCqIK
              description: Идентификатор конференции
              type: string
            inviterMemberId:
              example: ADK5NyCqIK
              description: Membership Id инициатора конференции
              type: string
            conferenceTarget:
              $ref: "#/components/schemas/ConferenceTarget"
            startedAt:
              description: Дата и время старта конференции
              example: "2023-02-26T18:58:36.154+03:00"
              type: string
              format: date-time
        conferenceDirectInvite:
          type: object
          description: Персональная нотификация о персональном приглашении на конференцию
          required:
            - conferenceId
            - conferenceTarget
            - startedAt
          properties:
            conferenceId:
              example: ADK5NyCqIK
              description: Идентификатор конференции
              type: string
            inviterMemberId:
              example: ADK5NyCqIK
              description: Membership Id инициатора конференции
              type: string
            conferenceTarget:
              $ref: "#/components/schemas/ConferenceTarget"
            startedAt:
              description: Дата и время старта конференции
              example: "2023-02-26T18:58:36.154+03:00"
              type: string
              format: date-time
        conferenceAnnounce:
          type: object
          description: Персональная нотификация о старте доступной конференции
          required:
            - conferenceId
            - conferenceTarget
            - startedAt
          properties:
            conferenceId:
              example: ADK5NyCqIK
              description: Идентификатор конференции
              type: string
            inviterMemberId:
              example: ADK5NyCqIK
              description: Membership Id инициатора конференции
              type: string
            conferenceTarget:
              $ref: "#/components/schemas/ConferenceTarget"
            startedAt:
              description: Дата и время старта конференции
              example: "2023-02-26T18:58:36.154+03:00"
              type: string
              format: date-time
        chatMessageMention:
          type: object
          description: Персональная нотификация об упоминании в чате
          required:
            - chatId
            - chatMessage
          properties:
            chatId:
              example: w:AIQffAsGi8
              description: Id чата, в который было отправлено сообщение
              type: string
            chatMessage:
              $ref: "#/components/schemas/Message"
    ConferenceTarget:
      type: object
      description: Данные о конференции. Как минимум одно поле не пустое
      properties:
        channelCall:
          type: object
          description: Конференция в чате
          required:
            - chatId
          properties:
            chatId:
              example: w:AIQffAsGi8
              description: Id чата, в котором инициирована конференция
              type: string
        watercooler:
          type: object
          description: Персональный звонок
          required:
            - scope
            - membershipIds
          properties:
            scope:
              description: Тип конференции. PUBLIC - публичный, другие участники могут присоединяться без приглашений, PRIVATE - доступ только по приглашениям
              example: PUBLIC
              type: string
              enum:
                - PRIVATE
                - PUBLIC
            membershipIds:
              example: "[ADK5NyCqIK, BDK5NyCqIK]"
              description: Массив из Membership Id участников конференции
              type: array
              items:
                type: string
    ForwardedContent:
      type: object
      description: Содержимое пересланного сообщения
      required:
        - sourceWorkspaceId
        - sourceChatId
        - forwardedMessages
      properties:
        sourceWorkspaceId:
          example: AIQffAsGi8
          description: Id рабочего пространства, из которого пересылаются сообщение
          type: string
        sourceChatId:
          example: w:AIQffAsGi8
          description: Id чата, из которого пересылаются сообщение
          type: string
        forwardedMessages:
          description: Массив пересылаемых сообщений. В сообщениях не будет информации о реакциях, обсуждениях, закреплении и о том, является ли сообщение ответом на другое сообщение
          type: array
          items:
            $ref: "#/components/schemas/Message"
    ChatMembership:
      type: object
      description: Содержит информацию о чате и роли бота в чате
      required:
        - chatId
        - workspaceId
        - metadata
        - createdAt
        - updatedAt
      properties:
        chatId:
          example: w:AIQffAsGia
          description: Id чата
          type: string
        workspaceId:
          example: w:AIQffAsGi8
          description: Id рабочего пространства, в котором находится чат
          type: string
        metadata:
          $ref: "#/components/schemas/ChatMetadata"
        createdAt:
          description: Дата и время создания чата
          example: "2023-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
        updatedAt:
          description: Дата и время последнего изменения чата. Поле используется только для Workspace чатов
          example: "2023-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
        archivedAt:
          description: Дата и время архивации чата. Поле используется только для Workspace чатов
          example: "2023-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
        archivedBy:
          example: fIQffAsGi8
          description: MembershipId участника, который заархивировал чат
          type: string
        chatRole:
          description: Роль бота в чате. Поле используется только для Workspace чатов
          $ref: "#/components/schemas/ChatRole"
        chatPermissions:
          description: Массив из ChatPermission бота в этом чате. Поле используется только для Workspace чатов
          type: array
          items:
            $ref: "#/components/schemas/ChatPermission"
    ChatMetadata:
      type: object
      description: Содержит специфичную для типа чата информацию. Заполняется одно из полей в зависимости от типа чата
      properties:
        personal:
          $ref: "#/components/schemas/PersonalChatMetadata"
        workspace:
          description: Информация о чате в рабочем пространстве
          $ref: "#/components/schemas/WorkspaceChatMetadata"
        thread:
          description: Информация об обсуждении
          $ref: "#/components/schemas/ThreadChatMetadata"
        conference:
          description: Информация о чате конференции
          $ref: "#/components/schemas/ConferenceChatMetadata"
        userEvents:
          description: Информация о чате с персональными нотификациями
          $ref: "#/components/schemas/UserEventsChatMetadata"
    PersonalChatMetadata:
      type: object
      description: Содержит информацию о персональном чате
      required:
        - otherMembershipId
      properties:
        otherMembershipId:
          example: aIQffAsGia
          description: MembershipId собеседника
          type: string
    UserEventsChatMetadata:
      type: object
      description: Содержит информацию о персональных нотификациях
      required:
        - owner
      properties:
        owner:
          example: aIQffAsGia
          description: MembershipId владельца
          type: string
    WorkspaceChatMetadata:
      type: object
      description: Содержит информацию о чате в рабочем пространстве
      required:
        - name
        - announce
        - chatType
        - autoJoinNewMembers
        - memberCount
      properties:
        name:
          example: Новости
          description: Название чата
          type: string
        announce:
          description: Является ли чат анонсным
          example: "true"
          type: boolean
        chatType:
          description: Тип чата
          $ref: "#/components/schemas/WorkspaceChatType"
        autoJoinNewMembers:
          description: Добавляются ли автоматически новые участники рабочего пространства в чат
          example: "true"
          type: boolean
        description:
          example: Новости компании
          description: Описание чата
          type: string
        memberCount:
          description: Число участников
          example: "5"
          type: integer
    ThreadChatMetadata:
      type: object
      description: Содержит информацию об обсуждении
      required:
        - parentChatId
        - parentMessageId
      properties:
        parentChatId:
          example: w:aIQffAsGia
          description: ChatId родительского чата, где расположено родительское сообщение
          type: string
        parentMessageId:
          example: bIQffAsGia
          description: MessageId родительского сообщения, к которому относится обсуждение
          type: string
    ConferenceChatMetadata:
      type: object
      description: Содержит информацию об чате конференции
      required:
        - conferenceId
      properties:
        conferenceId:
          example: dIQffAsGia
          description: Идентификатор конференции, к которой относится чат
          type: string
    ChatPermission:
      description: Разрешение на действие в чате
      example: CHANGE_ROLE
      type: string
      enum:
        - CHANGE_ROLE
        - ARCHIVE_CHAT
        - RENAME_CHAT
        - UPDATE_CONFIG
        - KICK_FROM_CHAT
        - SEND_MESSAGES_TO_ANNOUNCE_CHANNEL
        - PIN_CHAT_MESSAGE
        - SCHEDULE_CONFERENCE
        - DELETE_CHAT_MESSAGE
        - UPDATE_PERMISSIONS
        - FORWARD_MESSAGES
    MessageType:
      description: Тип сообщения - от пользователя либо системное
      example: USER
      type: string
      enum:
        - USER
        - SYSTEM
    ChatRole:
      description: Роль участника в чате
      example: ADMIN
      type: string
      enum:
        - MEMBER
        - ADMIN
        - OWNER
    WorkspaceRole:
      description: Роль участника в рабочем пространстве. GUEST - гость, приглашенный в пространство по ссылке, GUEST_CALLER - гость, приглашенный на звонок по ссылке
      example: ADMIN
      type: string
      enum:
        - MEMBER
        - ADMIN
        - OWNER
        - GUEST
        - GUEST_CALLER
    WorkspaceChatType:
      description: Тип чата в рабочем пространстве. PUBLIC - публичный, другие участники могут присоединяться без приглашений, PRIVATE - доступ только по приглашениям, GENERAL - главный чат рабочего пространства, создаваемый по умолчанию
      example: PUBLIC
      type: string
      enum:
        - PRIVATE
        - PUBLIC
        - GENERAL
    MemberStatus:
      description: Статус участника в рабочем пространстве. ACTIVE - активный, PENDING - ожидание принятие приглашения на вступление, SUSPENDED - участник удален и пространства
      example: ACTIVE
      type: string
      enum:
        - ACTIVE
        - PENDING
        - SUSPENDED
    UpdateSetting:
      description: Тип обновления, который может получать бот
      example: MESSAGE
      type: string
      enum:
        - MESSAGE
        - MESSAGE_ACTION
        - NOTIFICATION
        - WORKSPACE_INVITE
    BotScopeType:
      type: string
      description: Тип области видимости бота
      enum:
        - pub
        - org
        - ws
      example: org
    BotScope:
      type: object
      description: Область видимости бота. Определяет, в каких пространствах бот может работать. Для type=PUB не требуются дополнительные поля, бот может быть приглашен в любой воркспейс любой организации. Для type=ORG требуется organizationId, бот может быть приглашел в любой вокрспейс огранизации, в которой был создан. Для type=WS требуются workspaceId, бот не может быть приглашен ни в один воркспейс.
      required:
        - type
      properties:
        type:
          $ref: "#/components/schemas/BotScopeType"
        organizationId:
          type: string
          description: Идентификатор организации (требуется для type=ORG)
          example: AIQffAsGi8
        workspaceId:
          type: string
          description: Идентификатор рабочего пространства (требуется для type=WS)
          example: BIQffAsGi9
    WebhookInfo:
      type: object
      required:
        - url
        - hasCustomCertificate
      properties:
        url:
          type: string
          description: URL адрес, на который будут отправляться события
          example: https://webhook.me
        hasCustomCertificate:
          type: boolean
          description: Установлен или нет для вебхука самоподписанный сертификат
          example: "true"
        pendingUpdateCount:
          type: integer
          description: Количество доступных неполученных событий
          example: "5"
        lastErrorDate:
          type: string
          format: date-time
          description: Дата и время последнего неудачного обращения к вебхуку
          example: "2024-02-26T18:58:36.154+03:00"
        lastErrorMessage:
          type: string
          description: Сообщение об ошибке из последнего неудачного обращения к вебхуку
          example: 500 Internal server error
    SetWebhookRequest:
      type: object
      required:
        - url
      properties:
        url:
          type: string
          description: URL адрес, на который будут отправляться события
          example: https://webhook.me
        certificate:
          type: string
          description: Полное содержимое .pem сертификата, закодированное в формате Base64 (вместе с BEGIN/END CERTIFICATE). Устанавливается, если для вебхука используется самоподписанный сертификат
          example: c2FkZmdoamdnZnJkZ2VzZmFkZmdkaGZqZ2Zkc2ZnZGg=
        secretToken:
          type: string
          description: Если установлен, будет содержаться в Header "X-YuChat-Bot-Api-Secret-Token"
          example: MIIDXTCCAkWgAwIBAgIUeKd8rP8XJGjH5Z2Q6VJq3m8Qk8AwDQYJKoZIhvcNAQEL
    VotePollResponse:
      type: object
      description: Результат голосования в опросе
      required:
        - summary
        - myVote
      properties:
        summary:
          $ref: "#/components/schemas/PollSummary"
        myVote:
          description: Массив индексов выбранных вариантов ответа
          type: array
          items:
            type: integer
    GetPollInfoResponse:
      type: object
      description: Информация об опросе
      required:
        - pollId
        - messageId
        - question
        - options
        - isMultiple
        - isAnonymous
        - summary
        - myVote
      properties:
        pollId:
          example: gIQffAsGi8
          description: Id опроса
          type: string
        messageId:
          example: gIQffAsGi8
          description: Id сообщения, в котором был создан опрос
          type: string
        question:
          example: Какой вариант выбираете?
          description: Текст вопроса опроса
          type: string
        options:
          description: Массив вариантов ответа
          type: array
          example:
            - Вариант 1
            - Вариант 2
            - Вариант 3
          items:
            type: string
        isMultiple:
          description: Возможность выбора нескольких вариантов ответа
          type: boolean
          example: true
        isAnonymous:
          description: Анонимное голосование
          type: boolean
          example: false
        summary:
          $ref: "#/components/schemas/PollSummary"
        myVote:
          description: Массив индексов выбранных текущим пользователем вариантов ответа
          type: array
          items:
            type: integer
    PollSummary:
      type: object
      description: Сводка результатов опроса
      required:
        - votes
        - totalVoters
      properties:
        votes:
          description: Массив счетчиков голосов по вариантам ответа
          type: array
          items:
            $ref: "#/components/schemas/OptionVoteCount"
        totalVoters:
          description: Общее количество проголосовавших
          example: 42
          type: integer
          format: int64
        firstVotedMemberIds:
          description: Массив membershipId первых проголосовавших участников
          type: array
          items:
            type: string
    OptionVoteCount:
      type: object
      description: Количество голосов за вариант ответа
      required:
        - option
        - votesCount
      properties:
        option:
          description: Индекс варианта ответа (начиная с 0)
          example: 0
          type: integer
        votesCount:
          description: Количество голосов за этот вариант
          example: 15
          type: integer
          format: int64
    GetPollVotesResponse:
      type: object
      description: Список индивидуальных голосов в опросе
      required:
        - votes
        - totalVoters
        - allResultCount
      properties:
        votes:
          description: Массив голосов
          type: array
          items:
            $ref: "#/components/schemas/PollVote"
        totalVoters:
          description: Общее количество проголосовавших
          example: 42
          type: integer
        allResultCount:
          description: Общее количество записей голосов (для пагинации)
          example: 100
          type: integer
          format: int64
        prevPageToken:
          description: Токен предыдущей страницы
          type: string
          example: BDK5NyCqI4
        nextPageToken:
          description: Токен следующей страницы
          type: string
          example: BDK5NyCqI4
    PollVote:
      type: object
      description: Индивидуальный голос в опросе
      required:
        - memberId
        - option
      properties:
        memberId:
          example: ADK5NyCqIK
          description: Membership Id участника, который проголосовал
          type: string
        option:
          description: Индекс выбранного варианта ответа
          type: integer
    SearchMessagesResponse:
      type: object
      description: Результаты поиска сообщений
      required:
        - messages
        - allResultCount
      properties:
        messages:
          description: Массив найденных сообщений
          type: array
          items:
            $ref: "#/components/schemas/FoundMessage"
        nextPageToken:
          description: Токен следующей страницы
          type: string
        prevPageToken:
          description: Токен предыдущей страницы
          type: string
        allResultCount:
          description: Общее количество найденных результатов
          type: integer
          format: int64
    FoundMessage:
      type: object
      description: Найденное сообщение с выделением совпадений
      required:
        - chatId
        - message
        - searchResult
      properties:
        chatId:
          example: w:AIQffAsGi8
          description: Id чата, в котором находится сообщение
          type: string
        message:
          description: Найденное сообщение
          $ref: "#/components/schemas/Message"
        searchResult:
          description: Текст совпадения с выделением (маркерами ==)
          example: Привет, это ==поисковый запрос==
          type: string
    SearchRecordingsResponse:
      type: object
      description: Результаты поиска записей конференций
      required:
        - recordings
        - allResultCount
      properties:
        recordings:
          description: Массив найденных записей
          type: array
          items:
            $ref: "#/components/schemas/FoundRecording"
        nextPageToken:
          description: Токен следующей страницы
          type: string
        prevPageToken:
          description: Токен предыдущей страницы
          type: string
        allResultCount:
          description: Общее количество найденных результатов
          type: integer
          format: int64
    FoundRecording:
      type: object
      description: Найденная запись конференции с совпадениями
      required:
        - recording
        - searchOccurrences
      properties:
        recording:
          $ref: "#/components/schemas/Recording"
        searchOccurrences:
          description: Массив найденных совпадений в записи
          type: array
          items:
            $ref: "#/components/schemas/SearchOccurrence"
    Recording:
      type: object
      description: Информация о записи конференции
      required:
        - recordingId
        - conferenceId
        - createdAt
      properties:
        recordingId:
          example: AIQffAsGi8
          description: Id записи
          type: string
        conferenceId:
          example: BIQffAsGi8
          description: Id конференции
          type: string
        chatId:
          example: w:AIQffAsGi8
          description: Id чата конференции
          type: string
        title:
          example: Еженедельная встреча
          description: Заголовок записи
          type: string
        createdAt:
          description: Дата и время создания записи
          example: "2024-02-26T18:58:36.154+03:00"
          type: string
          format: date-time
    SearchOccurrence:
      type: object
      description: Совпадение поискового запроса в записи
      required:
        - phrase
        - occurrence
        - type
      properties:
        phrase:
          description: Оригинальный текст
          example: транскрипция текста
          type: string
        occurrence:
          description: Текст совпадения с выделением
          example: "==транскрипция== текста"
          type: string
        fromStart:
          description: Смещение от начала записи в формате ISO 8601 Duration
          example: PT1M30S
          type: string
        membershipId:
          description: MembershipId спикера
          example: AIQffAsGi8
          type: string
        guestId:
          description: Id гостя конференции
          example: AIQffAsGi8
          type: string
        type:
          description: Тип контента, в котором найдено совпадение
          $ref: "#/components/schemas/OccurrenceType"
    SearchMembersResponse:
      type: object
      description: Результаты поиска участников
      required:
        - members
        - allResultCount
      properties:
        members:
          description: Массив из MemberInfo найденных участников
          type: array
          items:
            $ref: "#/components/schemas/MemberInfo"
        nextPageToken:
          description: Токен следующей страницы
          type: string
        prevPageToken:
          description: Токен предыдущей страницы
          type: string
        allResultCount:
          description: Общее количество найденных результатов
          type: integer
          format: int64
    SearchChatsResponse:
      type: object
      description: Результаты поиска чатов
      required:
        - chats
        - allResultCount
      properties:
        chats:
          description: Массив найденных чатов
          type: array
          items:
            $ref: "#/components/schemas/ChatMembership"
        nextPageToken:
          description: Токен следующей страницы
          type: string
        prevPageToken:
          description: Токен предыдущей страницы
          type: string
        allResultCount:
          description: Общее количество найденных результатов
          type: integer
          format: int64
    SearchSortBy:
      description: Тип сортировки результатов поиска
      example: DATE
      type: string
      enum:
        - DATE
        - RELEVANCE
    OccurrenceType:
      description: Тип контента, в котором было найдено совпадение
      example: TRANSCRIPTION
      type: string
      enum:
        - TRANSCRIPTION
        - SUMMARY
        - TITLE
    MemberSearchBy:
      description: Критерий поиска участников
      example: FULL_NAME
      type: string
      enum:
        - FULL_NAME
        - EMAIL
        - POSITION
        - DEPARTMENT
    ArchivedFilter:
      description: Фильтр по архивности чатов
      example: UNARCHIVED_ONLY
      type: string
      enum:
        - UNARCHIVED_ONLY
        - ARCHIVED_ONLY
        - ALL
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: "Токен, который можно получить от aibot@yuchat.ai с помощью команды /botcreate."
security:
  - bearerAuth: []
