openapi: 3.0.1

info:
  title: YuChat Bot API
  version: 2.0.0
  description: Публичный API для работы с YuChat.
  contact:
    name: Команда YuChat
    url: https://www.yuchat.ai
    email: support@yuchat.ai

servers:
  - url: https://yuchat.ai

tags:
  - name: me
    description: Управление ботом

paths:
  /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/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'
                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:
                  - wasAdded
        "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/inviteToChat:
    post:
      description: "Приглашение участников в чат. Используется только для Workspace и Announce чатов. Приглашение участников, которые уже состоят в чате, не имеет эффекта"
      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 и Announce чатов. Исключение участников, которых нет в чате, не имеет эффекта"
      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 и Announce чатов"
      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 и Announce чатов"
      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 и Announce чатов"
      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 и Announce чатов"
      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: "пIQffAsGi8"
                  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/getMe:
    post:
      description: "Получение сведений о боте, в том числе список рабочих пространств, в которых состоит бот, а также информация о профиле бота"
      tags:
        - me
      operationId: getMe
      responses:
        "200":
          description: "Сведения о боте"
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MeInfo'
        "403":
          description: "Ошибка аутентификации"
        "429":
          description: "Превышен лимит запросов"

components:
  schemas:
    GetMessagesResponse:
      type: object
      description: "Данные о запрошенном списке сообщений"
      required:
        - messages
      properties:
        messages:
          description: "Массив из объектов Message"
          type: array
          items:
            $ref: '#/components/schemas/Message'

    DeleteMessagesResponse:
      type: object
      description: "Информация об удаленных сообщениях"
      required:
        - updatedAt
        - deletedMessageIds
      properties:
        updatedAt:
          description: "Время удаления сообщений"
          type: string
          format: date-time
          example: "2024-07-21T17:32:28Z"
        deletedMessageIds:
          description: "Массив из messageId, которые были удалены"
          type: array
          example: "[ADK5NyCqIK, BDK5NyCqIK]"
          items:
            type: string

    MeInfo:
      type: object
      description: "Сведения о боте, в том числе список рабочих пространств, в которых состоит бот, а также информация о профиле бота"
      required:
        - profile
        - workspaces
      properties:
        profile:
          description: "Профиль бота"
          $ref: '#/components/schemas/Profile'
        workspaces:
          description: "Массив из workspaceId, в которых состоит бот"
          type: array
          example: "[ADK5NyCqIK, BDK5NyCqIK]"
          items:
            type: string

    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
        updatedAt:
          description: "Дата и время последнего изменения аккаунта"
          example: "2024-02-26T18:58:36.154+03:00"
          type: string
        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

    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: "пIQffAsGi8"
          description: "Id сообщения"
          type: string
        messageType:
          $ref: '#/components/schemas/MessageType'
        inReplyToMessageId:
          example: "пIQffAsGi8"
          description: "Id сообщения, на которое было отвечено этим сообщением"
          type: string
        membershipId:
          example: "пIQffAsGi8"
          description: "Id автора сообщения"
          type: string
        createdAt:
          description: "Дата и время создания сообщения"
          example: "2023-02-26T18:58:36.154+03:00"
          type: string
        updatedAt:
          description: "Дата и время последнего изменения сообщения"
          example: "2024-02-26T18:58:36.154+03:00"
          type: string
        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

    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: "пIQffAsGi8"
          description: "Id конференции"
          type: string
        systemEvent:
          $ref: '#/components/schemas/SystemEvent'
        forwardedContent:
          $ref: '#/components/schemas/ForwardedContent'

    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

    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'

    MessageType:
      description: "Тип сообщения - от пользователя либо системное"
      example: "USER"
      type: string
      enum:
        - USER
        - SYSTEM

    ChatRole:
      description: "Роль участника в чате"
      example: "ADMIN"
      type: string
      enum:
        - MEMBER
        - ADMIN
        - OWNER

  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: Токен, который можно получить от aibot@yuchat.ai с помощью команды /botcreate.
security:
  - bearerAuth: [ ]

