# Объекты API

В данном разделе представлены основные структуры данных, используемые при обмене сообщениями по WebSocket-протоколу.

TrueConf Server API для чат-ботов построен на модели обмена сообщениями, где каждая сущность описывается на языке TypeScript через интерфейсы (interface) и перечисления (enum). Это позволяет задать строгую структуру как для клиентских запросов, так и для серверных ответов и событий.

  • Interfaces определяют формат сообщений и их полезной нагрузки (payload).
  • Enums описывают допустимые значения для полей сообщений (например, типы сообщений, коды ошибок и т. д.).

Эти определения являются основой для сериализации и обработки сообщений на клиенте и сервере.

# Перечисления (Enums)

# ChatParticipantRoleEnum

Перечисление содержит список возможных ролей участника чата:

enum ChatParticipantRoleEnum {
    OWNER = 0,
    ADMIN = 1,
    USER = 2,
    CONF_OWNER = 3,
    CONF_MODERATOR = 4,
    FAVORITES_OWNER = 5,
    WRITER = 6
}

где:

  • OWNER - владелец чата;

  • ADMIN - назначенный администратор чата;

  • USER - обычный участник чата;

  • CONF_OWNER - данная роль присутствует только в чатах конференциях, и означает что пользователь является владельцем конференции;

  • CONF_MODERATOR - данная роль присутствует только в чатах конференциях, и означает что пользователь является модератором конференции;

  • FAVORITES_OWNER - данная роль присутствует только в чате "Избранное" (Сохраненные сообщения).

  • WRITER - данная роль присутствует только в канале и означает, что пользователь может писать сообщения в канал.

С описанием прав для каждой роли вы можете ознакомиться в отдельном разделе.

# MESSAGE_TYPE

Есть три типа сообщений:

enum MESSAGE_TYPE {
  RESERVED = 0,
  REQUEST = 1,
  RESPONSE = 2
}

Применяются только REQUEST и RESPONSE.

# OAUTH_ERROR

Коды ошибок, согласно спецификации OAuth 2.0 (opens new window), представлены в виде ASCII-строк из указанного в спецификации перечня (opens new window). Поддерживаются следующие коды ошибок:

enum OAUTH_ERROR {
  INVALID_REQUEST = "invalid_request",
  INVALID_CLIENT = "invalid_client",
  INVALID_GRANT = "invalid_grant",
  UNSUPORTED_GRANT_TYPE = "unsupported_grant_type"
}
Код ошибки Значение Описание
invalid_request Неправильный запрос Заголовки или тело запроса имеют неправильный формат. Например, отсутствуют обязательные поля или указан некорректный заголовок Content-Type.
invalid_client Неправильный клиент Значение поля client_id отличается от допустимого (например, не равно chat_bot).
invalid_grant Неправильные авторизационные данные Пользователь с указанным логином не найден, либо пароль неверен.
unsupported_grant_type Неправильный тип авторизации Значение поля grant_type отличается от допустимого (например, не равно password).

# ChatTypeEnum

Перечисление содержит возможные типы чатов.

enum ChatTypeEnum {
    UNDEF = 0,
    P2P = 1,
    GROUP = 2,
    SYSTEM = 3,
    FAVORITES = 5,
    CHANNEL = 6
}

где:

  • UNDEF - неизвестный тип чата
  • P2P - личные сообщения (чат с другим пользователем)
  • GROUP - групповой чат
  • SYSTEM - системный чат
  • FAVORITES - чат "Избранное" (сохраненные сообщения)
  • CHANNEL - канал

# EnvelopeTypeEnum

Перечисление содержит тип сообщения. Используя данное перечисление, можно определить тип контента в сообщении.

enum EnvelopeTypeEnum {
    ADD_PARTICIPANT = 1,
    REMOVE_PARTICIPANT = 2,
    PLAIN_MESSAGE = 200,
    FORWARDED_MESSAGE = 201,
    ATTACHMENT = 202,
    SURVEY = 204,
}

где:

  • ADD_PARTICIPANT – системное сообщение добавления пользователя в чат.

  • REMOVE_PARTICIPANT – системное сообщение удаления пользователя из чата.

  • PLAIN_MESSAGE – обычное текстовое сообщение от пользователя сервера.

  • FORWARDED_MESSAGE – пересланное сообщение.

  • ATTACHMENT – сообщение содержащее информацию о вложении (файле).

  • SURVEY - сообщение-опрос

Следует учитывать, что системные сообщения, такие как ADD_PARTICIPANT или REMOVE_PARTICIPANT, не являются фактом того или иного действия, например, появление участника в чате. Они нужны только для логирования факта. При этом, для каждого действия, например,добавления нового участника в чат, существуют отдельные команды и события.

Чтобы определить, является ли сообщение системным, достаточно проверить, что значение параметра type меньше 200.

# EnvelopeAuthorTypeEnum

enum EnvelopeAuthorTypeEnum {
    SYSTEM,
    USER,
}
  • SYSTEM – автором сообщения является сервер. В большинстве случаев это будет обозначать то, что сообщение является системны сообщением. В качестве идентификатора автора будет использоваться идентификатор сервера (TrueConf Server Name).

  • USER – автором сообщения является пользователь сервера. В качестве идентификатора автора будет использоваться TrueConf ID этого пользователя.

# TextParseModeEnum

Данное перечисление используется для указания режима обработки текстового контента сообщений.

enum TextParseModeEnum {
    TEXT = "text",
    MARKDOWN = "markdown",
    HTML = "html",
}

где:

  • TEXT – контент сообщения будет обработан как текст. Все html-теги будут экранированы (преобразованы в HTML-сущности).

  • MARKDOWN – контент будет обработан как markdown. Список поддерживаемых правил Markdown приведен ниже.

  • HTML – контент будет обработан как HTML. Список поддерживаемых тегов HTML приведен ниже.

# FileReadyStateEnum

Данное перечисление используется для указания состояния файла на сервере.

enum FileReadyStateEnum {
    NOT_AVAILABLE = 0,
    UPLOADING = 1,
    READY = 2
}

где:

  • NOT_AVAILABLE – файл удален из-за ограничений квоты, времени хранения, и т.д.;
  • UPLOADING – файл в процессе загрузки;
  • READY – файл загружен.

# Структуры (Interfaces)

# AbstractEnvelopeContent

Данный объект является базовым для хранения данных сообщения. На текущий момент объект не имеет никаких собственных полей, однако они могут появиться в будущем:

interface AbstractEnvelopeContent {}

# AddParticipantEnvelopeContent

Данный объект используется в качестве контента сообщения с типом EnvelopeTypeEnum.ADD_PARTICIPANT, отправляемым в случае добавления участника в чат, и имеет следующий интерфейс:

interface AddParticipantEnvelopeContent extends ChatParticipant, AbstractEnvelopeContent {}

Объект не имеет собственных полей, и наследует поля из объекта ChatParticipant.

Пример:

{
  "chatId": "51ffe1b1-1515-498e-8501-233116adf9da",
  "messageId": "2913538a-90e3-4323-9048-b599e4248796",
  "timestamp": 1735330912,
  "author": {
    "id": "trueconf.server.name",
    "type": 0 //0 - server, 1 - user
  },
  "replyMessageId": null, //string if this message is reply
  "isEdited": false, //true if edited
  "box": {
    "id": 2,
    "position": "" //for sorting undelivered messages
  },
  "type": 1, //1 - ADD_PARTICIPANT
  "content": {
    "userId": "user@video.example.com",
    "role": "owner"
  }
}

# AuthRequest

Сообщение запроса авторизации имеет следующий вид:

interface AuthRequest extends RequestMessage<"auth", AuthRequestPayload> {}

Интерфейс AuthRequest наследует поля из объекта AuthRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# AuthRequestPayload

Тело сообщения (payload) для объекта запроса авторизации имеет следующий вид:

interface AuthRequestPayload {
  token: string;
  tokenType: "JWE";
}
Параметр Тип Обяз. Значение по умолчанию Описание
token string Да auth Авторизационный токен, полученный посредством HTTP-запроса
tokenType string Да JWE Строка «JWE»

# SuccessAuthResponse

Ответ от сервера в случае успешной авторизации:

interface SuccessAuthResponse extends ResponseMessage<SuccessAuthResponsePayload> {}

Интерфейс SuccessAuthResponse наследует поля из объекта SuccessAuthResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessAuthResponsePayload

Тело сообщения (payload) для объекта успешной авторизации имеет следующий вид:

interface SuccessAuthResponsePayload {
  userId: string;
}
Параметр Тип Обяз. Описание
userId string Да TrueConf ID авторизованного бота (пользователя сервера)

# ErrorAuthResponse

Ответ в случае ошибки авторизации:

interface ErrorAuthResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorAuthResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# UnathorizedErrorResponse

Ответ в случае, если начать отправлять сообщения без авторизации.

interface UnathorizedErrorResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс UnathorizedErrorResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# CreateGroupChatRequest

Интерфейс для создания группового чата:

interface CreateGroupChatRequest extends RequestMessage<"createGroupChat",CreateGroupChatRequestPayload> {}

Интерфейс CreateGroupChatRequest наследует поля из CreateGroupChatRequestPayload, поэтому описание полей приводится там.

# CreateGroupChatRequestPayload

interface CreateGroupChatRequestPayload {
  title: string;
}
Параметр Тип Обяз.Описание
title string ДаНазвание группового чата

# SuccessCreateGroupChatResponse

Ответ в случае успешного создания группового чата:

interface SuccessCreateGroupChatResponse
  extends ResponseMessage<SuccessCreateGroupChatResponsePayload> {}

Интерфейс SuccessCreateGroupChatResponse наследует поля из SuccessCreateGroupChatResponsePayload, поэтому описание полей приводится там.

# SuccessCreateGroupChatResponsePayload

interface SuccessCreateGroupChatResponse
  extends ResponseMessage<SuccessCreateGroupChatResponsePayload> {}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата

# ErrorCreateGroupChatResponse

Ответ в случае ошибки создания группового чата:

interface ErrorCreateGroupChatResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorCreateGroupChatResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# RemoveChatRequest

Исходящая команда удаления чата:

interface RemoveChatRequest extends RequestMessage<"removeChat",RemoveChatRequestPayload> {}

Интерфейс RemoveChatRequest наследует поля из RemoveChatRequestPayload, поэтому описание полей приводится там.

# RemoveChatRequestPayload

Тело сообщения (payload) для запроса удаления чата имеет следующий вид:

interface RemoveChatRequestPayload {
  chatId: string;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата

# SuccessRemoveChatResponse

Ответ в случае успешного удаления чата:

interface SuccessRemoveChatResponse
  extends ResponseMessage<SuccessRemoveChatResponsePayload> {}

Интерфейс SuccessRemoveChatResponse наследует поля из объекта SuccessRemoveChatResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessRemoveChatResponsePayload

interface SuccessRemoveChatResponsePayload {
  chatId: string;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата

# ErrorRemoveChatResponse

interface ErrorRemoveChatResponse extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorRemoveChatResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# AddChatParticipantRequest

Команда добавления участника в чат:

interface AddChatParticipantRequest extends RequestMessage<"addChatParticipant",AddChatParticipantRequestPayload> {}

Интерфейс AddChatParticipantRequest наследует поля из объекта AddChatParticipantRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# AddChatParticipantRequestPayload

interface AddChatParticipantRequestPayload {
  chatId: string;
  userId: string;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата в который добавляется пользователь
userId string ДаTrueConf ID пользователя добавляемого в чат

# SuccessAddChatParticipantResponse

Ответ в случае успешного добавления участника в чат:

interface SuccessAddChatParticipantResponse
  extends ResponseMessage<SuccessAddChatParticipantResponsePayload> {}

Интерфейс SuccessAddChatParticipantResponse наследует поля из SuccessAddChatParticipantResponsePayload, поэтому описание полей приводится там.

# SuccessAddChatParticipantResponsePayload

Тело сообщения (payload) для объекта успешного добавления участника в чат имеет следующий вид:

interface SuccessAddChatParticipantResponsePayload {}

# ErrorAddChatParticipantResponse

Ответ в случае ошибки удаления участника из чата:

interface ErrorAddChatParticipantResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorAddChatParticipantResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# CreateP2PChatRequest

Команда для создания личного чата (peer-to-peer):

interface CreateP2PChatRequest extends RequestMessage<"createP2PChat",CreateP2PChatRequestPayload> {}

Интерфейс CreateP2PChatRequest наследует поля из объекта CreateP2PChatRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# CreateP2PChatRequestPayload

interface CreateP2PChatRequestPayload {
  userId : string;
}
Параметр Тип Обяз.Описание
userId string ДаTrueConf ID пользователя, с которым мы хотим создать чат

Если бот никогда не писал данному пользователю - будет создан новый чат. Если бот отправлял данному пользователю сообщения - будет возвращен уже существующий чат.

# SuccessCreateP2PChatResponse

Ответ в случае успешного создания личного (peer-to-peer) чата:

interface SuccessCreateP2PChatResponse
  extends ResponseMessage<SuccessCreateP2PChatResponsePayload> {}

Интерфейс SuccessCreateP2PChatResponse наследует поля из объекта CreateP2PChatRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessCreateP2PChatResponsePayload

interface SuccessCreateP2PChatResponsePayload {
  chatId : string;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор созданного чата

# ErrorCreateP2PChatResponse

interface ErrorCreateP2PChatResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorCreateP2PChatResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# RemoveChatParticipantRequest

Команда для удаления участника из чата:

interface RemoveChatParticipantRequest
  extends RequestMessage<"removeChatParticipant",RemoveChatParticipantRequestPayload> {}

Интерфейс RemoveChatParticipantRequest наследует поля из объекта RemoveChatParticipantRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# RemoveChatParticipantRequestPayload

interface RemoveChatParticipantRequestPayload {
  chatId : string;
  userId : string;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата из которого удаляют пользователя
userId string ДаTrueConf ID удаляемого пользователя

# SuccessRemoveChatParticipantResponse

Ответ в случае успешного удаления участника из чата:

interface SuccessRemoveChatParticipantResponse
  extends ResponseMessage<SuccessRemoveChatParticipantResponsePayload> {}

Интерфейс SuccessRemoveChatParticipantResponse наследует поля из объекта SuccessRemoveChatParticipantResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessRemoveChatParticipantResponsePayload

interface SuccessRemoveChatParticipantResponsePayload {}

# ErrorRemoveChatParticipantResponse

interface ErrorRemoveChatParticipantResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorRemoveChatParticipantResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# HasChatParticipantRequest

Команда для проверки наличия участника в чате:

interface HasChatParticipantRequest extends RequestMessage<"hasChatParticipant",HasChatParticipantRequestPayload> {}

Интерфейс HasChatParticipantRequest наследует поля из объекта HasChatParticipantRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# HasChatParticipantRequestPayload

interface HasChatParticipantRequestPayload {
  chatId: string;
  userId: string;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата в котором проверяется наличие пользователя
userId string ДаTrueConf ID проверяемого пользователя

# SuccessHasChatParticipantResponse

Ответ в случае успешного получения информации о наличии участника в чате:

interface SuccessHasChatParticipantResponse
  extends ResponseMessage<SuccessHasChatParticipantResponsePayload> {}

Интерфейс SuccessHasChatParticipantResponse наследует поля из объекта SuccessHasChatParticipantResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessHasChatParticipantResponsePayload

interface SuccessHasChatParticipantResponsePayload {
  result: boolean;
}
Параметр Тип Обяз.Описание
result boolean ДаФлаг наличия участника в чате. Если true – участник присутствует в чате

# ErrorHasChatParticipantResponse

Ответ в случае ошибки удаления участника из чата:

interface ErrorHasChatParticipantResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorHasChatParticipantResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# GetChatParticipantListRequest

Команда для получения списка участников чата:

interface GetChatParticipantListRequest extends RequestMessage<"getChatParticipants",GetChatParticipantListRequestPayload> {}

Интерфейс GetChatParticipantListRequest наследует поля из объекта GetChatParticipantListRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# GetChatParticipantListRequestPayload

interface GetChatParticipantListRequestPayload {
  chatId: string;
  pageSize: uint32;
  pageNumber: uint32;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата
pageSize uint32 ДаКоличество записей с информацией об участниках чата в ответе на запрос
pageNumber uint32 ДаСмещение с которым будет возвращен список участников. Смещение рассчитывается по формуле startOffset = pageSize * pageNumber

# SuccessGetChatParticipantListResponse

Ответ в случае успешного получения списка участников в чата:

interface SuccessGetChatParticipantListResponse
  extends ResponseMessage<SuccessGetChatParticipantListResponsePayload> {}

Интерфейс SuccessGetChatParticipantListResponse наследует поля из объекта SuccessGetChatParticipantListResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessGetChatParticipantListResponsePayload

interface SuccessGetChatParticipantListResponsePayload {
  participants: Array<ChatParticipant>;
}
Параметр Тип Обяз.Описание
participants Array<ChatParticipant> Да Массив объектов, содержащий информацию обо всех участниках чата

# ErrorGetChatParticipantListResponse

Ответ в случае ошибки получения списка участников чата:

interface ErrorGetChatParticipantListResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorGetChatParticipantListResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# AddChatParticipantIncomingRequest

Входящее сообщение с информацией о появлении нового участников чата:

interface AddChatParticipantIncomingRequest extends RequestMessage<"addChatParticipant",AddChatParticipantIncomingRequestPayload> {}

Интерфейс AddChatParticipantIncomingRequest наследует поля из объекта AddChatParticipantIncomingRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# AddChatParticipantIncomingRequestPayload

interface AddChatParticipantIncomingRequestPayload {
  chatId: string;
  userId: string;
  addedBy: MessageAuthor;
  timestamp: uint64;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата
userId string ДаTrueConf ID добавленного в чат пользователя
addedBy MessageAuthor ДаКто добавил участника. Подробнее смотрите объект MessageAuthor
timestamp uint64 ДаВременная метка добавления участника в чат в формате UNIX timestamp c точностью до миллисекунд

# SuccessProceedAddChatParticipantResponse

Ответ от клиента не содержит какой-либо полезной нагрузки.

interface SuccessProceedAddChatParticipantResponse
  extends ResponseMessage<{}> {}

# RemoveChatParticipantIncomingRequest

Входящее сообщение с информацией об удалении участника из чата:

interface RemoveChatParticipantIncomingRequest
  extends RequestMessage<"removeChatParticipant",RemoveChatParticipantIncomingRequestPayload> {}

Интерфейс RemoveChatParticipantIncomingRequest наследует поля из объекта RemoveChatParticipantIncomingRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# RemoveChatParticipantIncomingRequestPayload

interface RemoveChatParticipantIncomingRequestPayload {
  chatId: string;
  userId: string;
  removedBy: MessageAuthor;
  timestamp: uint64;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата
userId string ДаTrueConf ID удаленного из чата пользователя
addedBy MessageAuthor ДаКто удалил участника. Подробнее смотрите объект MessageAuthor
timestamp uint64 ДаВременная метка удаления участника из чата в формате UNIX timestamp c точностью до миллисекунд

# SuccessProceedRemoveChatParticipantResponse

Ответ от клиента не содержит какой-либо полезной нагрузки.

interface SuccessProceedRemoveChatParticipantResponse
  extends ResponseMessage<{}> {}

# SendChatMessageRequest

Команда для отправки сообщения:

interface SendChatMessageRequest extends RequestMessage<"sendMessage",SendChatMessageRequestPayload> {}

Интерфейс SendChatMessageRequest наследует поля из объекта SendChatMessageRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SendChatMessageRequestPayload

interface SendChatMessageRequestPayload {
  chatId: string;
  replyMessageId?: string;
  content: TextMessageContent;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата
replyMessageId string НетВ случае если мы отвечаем на сообщение, поле должно содержать идентификатор этого сообщения. Необязательное поле
content TextMessageContent ДаДанные сообщения

# TextMessageContent

interface TextMessageContent {
  text: string;
  parseMode: TextParseModeEnum;
}
Параметр Тип Обяз.Описание
text string ДаТекст сообщения
parseMode TextParseModeEnum ДаРежим обработки текста сообщения

# SuccessSendChatMessageResponse

Ответ в случае успешной отправки сообщения:

interface SuccessSendChatMessageResponse
  extends ResponseMessage<SuccessSendChatMessageResponsePayload> {}

Интерфейс SuccessSendChatMessageResponse наследует поля из объекта SuccessSendChatMessageResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessSendChatMessageResponsePayload

interface SuccessSendChatMessageResponsePayload {
  chatId: string;
  messageId: string;
  timestamp: uint64;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата в который отправлялось сообщение
messageId string ДаИдентификатор сообщения. Можно использовать данный идентификатор в дальнейшем, для изменения, пересылки или удаления сообщения
timestamp uint64 Да Временная метка оправки сообщения в формате UNIX timestamp c точностью до миллисекунд

# ErrorSendChatMessageResponse

Ответ в случае ошибки отправки сообщения в чат:

interface ErrorSendChatMessageResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorSendChatMessageResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# EditChatMessageRequest

Команда для изменения сообщения:

interface EditChatMessageRequest extends RequestMessage<"editMessage",EditChatMessageRequestPayload> {}

Интерфейс EditChatMessageRequest наследует поля из объекта EditChatMessageRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# EditChatMessageRequestPayload

interface EditChatMessageRequestPayload {
  messageId: string;
  content: TextMessageContent;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата
content TextMessageContent ДаДанные сообщения

# SuccessEditChatMessageResponse

Ответ в случае успешного изменения сообщения:

interface SuccessEditChatMessageResponse
  extends ResponseMessage<SuccessEditChatMessageResponsePayload> {}

Интерфейс SuccessEditChatMessageResponse наследует поля из объекта SuccessSendChatMessageResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessEditChatMessageResponsePayload

interface SuccessSendChatMessageResponsePayload {
  timestamp: uint64;
}
Параметр Тип Обяз.Описание
timestamp uint64 ДаВременная метка редактирования сообщения в формате UNIX timestamp c точностью до миллисекунд

# ErrorEditChatMessageResponse

Ответ в случае ошибки изменения сообщения:

interface ErrorEditChatMessageResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorEditChatMessageResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# ForwardChatMessageRequest

Команда для пересылки сообщения:

interface ForwardChatMessageRequest
  extends RequestMessage<"forwardMessage", ForwardChatMessageRequestPayload> {}

Интерфейс ForwardChatMessageRequest наследует поля из объекта ForwardChatMessageRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# ForwardChatMessageRequestPayload

interface ForwardChatMessageRequestPayload {
  chatId: string;
  messageId: string;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата, в который вы будете пересылать сообщение
messageId string ДаИдентификатор пересылаемого сообщения

# SuccessForwardChatMessageResponse

Ответ в случае успешной пересылки сообщения:

interface SuccessForwardChatMessageResponse
  extends ResponseMessage<SuccessForwardChatMessageResponsePayload> {}

Интерфейс SuccessForwardChatMessageResponse наследует поля из объекта SuccessForwardChatMessageResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessForwardChatMessageResponsePayload

interface SuccessForwardChatMessageResponsePayload {
  chatId: string;
  messageId: string;
  timestamp: uint64;
}
Параметр Тип Обяз.Описание
chatId string Да Уникальный идентификатор чата, в который мы переслали сообщение
messageId string Да Уникальный идентификатор нового сообщения, содержащего ваше пересланное сообщение
timestamp uint64 Да Временная метка пересылки сообщения в формате UNIX timestamp c точностью до миллисекунд

# ErrorForwardChatMessageResponse

Ответ в случае ошибки пересылки сообщения:

interface ErrorForwardChatMessageResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorForwardChatMessageResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# GetChatMessageRequest

Команда для получения сообщения:

interface GetChatMessageRequest
  extends RequestMessage<"getMessageById", GetChatMessageRequestPayload> {}

Интерфейс GetChatMessageRequest наследует поля из объекта GetChatMessageRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# GetChatMessageRequestPayload

interface GetChatMessageRequestPayload {
  messageId: string;
}
Параметр Тип Обяз.Описание
messageId string ДаИдентификатор запрашиваемого сообщения

# SuccessGetChatMessageResponse

Ответ в случае успешного получения сообщения:

interface SuccessGetChatMessageResponse
  extends ResponseMessage<SuccessGetChatMessageResponsePayload> {}

Интерфейс SuccessGetChatMessageResponse наследует поля из объекта SuccessGetChatMessageResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessGetChatMessageResponsePayload

interface SuccessGetChatMessageResponsePayload extends Envelope {}

Объект SuccessGetChatMessageResponsePayload не содержит собственных полей, и наследуется от объекта Envelope.

# ErrorGetChatMessageResponse

Ответ в случае ошибки получения сообщения:

interface ErrorGetChatMessageResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorGetChatMessageResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# GetChatHistoryRequest

Команда для получения истории чата:

interface GetChatHistoryRequest
  extends RequestMessage<"getChatHistory", GetChatHistoryRequestPayload> {}

Интерфейс GetChatHistoryRequest наследует поля из объекта GetChatHistoryRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# GetChatHistoryRequestPayload

interface GetChatHistoryRequestPayload {
  chatId: string;
  count: uint32;
  fromMessageId?: string;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата для которого запрашивается история сообщений
count uint32 ДаКоличество возвращаемых в ответе сообщений
fromMessageId string НетИдентификатор сообщения чата, с которого будут возвращена история чата

Сообщения возвращаются в порядке от самого нового сообщения (или от fromMessageId) и до самого старого по дате добавления сообщения в чат.

# SuccessGetChatHistoryResponse

interface SuccessGetChatHistoryResponse
  extends ResponseMessage<SuccessGetChatHistoryResponsePayload> {}

Интерфейс SuccessGetChatHistoryResponse наследует поля из объекта SuccessGetChatHistoryResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessGetChatHistoryResponsePayload

Ответ в случае успешного получения истории чата:

interface SuccessGetChatMessageResponsePayload {
  chatId: string;
  count: uint32;
  messages: Array<Envelope>;
}
Параметр Тип Обяз.Описание
chatId string ДаИдентификатор чата для которого запрашивалась история сообщений
count uint32 ДаКоличество полученных сообщений
messages Array<Envelope> НетМассив с объектами Envelope

# ErrorGetChatHistoryResponse

Ответ в случае ошибки получения истории чата:

interface ErrorGetChatHistoryResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorGetChatHistoryResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# RemoveChatMessageRequest

Команда для удаления сообщения:

interface RemoveChatMessageRequest
  extends RequestMessage<"removeMessage", RemoveChatMessageRequestPayload> {}

Интерфейс RemoveChatMessageRequest наследует поля из объекта RemoveChatMessageRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# RemoveChatMessageRequestPayload

interface RemoveChatMessageRequestPayload {
  messageId: string;
  forAll: boolean;
}
Параметр Тип Обяз.Описание
messageId string ДаИдентификатор удаляемого сообщения
forAll boolean Да Флаг удаления сообщения. Если установлено в true, сообщение будет удалено у всех пользователей

# SuccessRemoveChatMessageResponse

Ответ в случае успешного удаления сообщения:

interface SuccessRemoveChatMessageResponse
  extends ResponseMessage<SuccessRemoveChatMessageResponsePayload> {}

Интерфейс SuccessRemoveChatMessageResponse наследует поля из объекта SuccessRemoveChatMessageResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessRemoveChatMessageResponsePayload

interface SuccessRemoveChatMessageResponsePayload {}

# ErrorRemoveChatMessageResponse

Ответ в случае ошибки удаления сообщения:

interface ErrorRemoveChatMessageResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorRemoveChatMessageResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# UploadFileRequest

Команда для создания задачи на загрузку файла:

interface UploadFileRequest
  extends RequestMessage<"uploadFile", UploadFileRequestPayload> {}

Интерфейс UploadFileRequest наследует поля из объекта UploadFileRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# UploadFileRequestPayload

interface UploadFileRequestPayload {
  fileName: string;
  fileSize: number;
  mimeType: string;
}
Параметр Тип Обяз.Описание
fileName string ДаИмя файла
fileSize number ДаРазмер файла
mimeType string ДаMIME-тип файла

# SuccessUploadFileResponse

Ответ в случае успешного создания задачи на загрузку файла:

interface SuccessUploadFileResponse
  extends ResponseMessage<SuccessUploadFileResponsePayload> {}

Интерфейс SuccessUploadFileResponse наследует поля из объекта SuccessUploadFileResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessUploadFileResponsePayload

interface SuccessUploadFileResponsePayload {
  uploadTaskId: string;
}
Параметр Тип Обяз. Описание
uploadTaskId string ДаИдентификатор задачи на загрузку файла

# ErrorUploadFileResponse

Ответ в случае ошибки создания задачи на загрузку файла:

interface ErrorUploadFileResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorUploadFileResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# SendFileRequest

команда для отправки файла в сообщении:

interface SendFileRequest
  extends RequestMessage<"sendFile", SendFileRequestPayload> {}

Интерфейс SendFileRequest наследует поля из объекта SendFileRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SendFileRequestPayload

interface SendFileRequestPayload {
  chatId: string;
  content: {
    fileId: string,
  };
}
Параметр Тип Обяз. Описание
chatId string ДаИдентификатор чата для отправки сообщения
fileId string ДаИдентификатор файла полученный в ответе на HTTP-запрос

# SuccessSendFileResponse

Ответ в случае успешной отправки файла:

interface SuccessSendFileResponse
  extends ResponseMessage<SuccessSendFileResponsePayload> {}

Интерфейс SuccessSendFileResponse наследует поля из объекта SuccessSendFileResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessSendFileResponsePayload

interface SuccessSendFileResponsePayload {
  chatId: string;
  timestamp: number;
  messageId: string;
}
Параметр Тип Обяз. Описание
chatId string ДаИдентификатор чата
timestamp number ДаВремя отправки сообщения
messageId string ДаИдентификатор сообщения

# ErrorSendFileResponse

interface ErrorSendFileResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorSendFileResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# FileMessageContent

Получение нотификации об отправке файла:

interface FileMessageContent {
  name: string;
  mimeType: string;
  size: number;
  fileId: string;
}
Параметр Тип Обяз. Описание
name string ДаИмя файла
size number ДаРазмер файла
mimeType string ДаMIME-тип файла
fileId string ДаИдентификатор файла на сервере

# GetFileInfoRequest

Команда для получения информации о файле и скачивание:

interface GetFileInfoRequest
  extends RequestMessage<"getFileInfo", GetFileInfoRequestPayload> {}

Интерфейс GetFileInfoRequest наследует поля из объекта GetFileInfoRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# GetFileInfoRequestPayload

interface GetFileInfoRequestPayload {
  fileId: string;
}
Параметр Тип Обяз. Описание
fileId string ДаИдентификатор файла, полученный из события об отправке сообщения

# SuccessGetFileInfoResponse

Ответ в случае нахождения файла:

interface SuccessGetFileInfoResponse
  extends ResponseMessage<SuccessGetFileInfoResponsePayload> {}

Интерфейс SuccessGetFileInfoResponse наследует поля из объекта SuccessGetFileInfoResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessGetFileInfoResponsePayload

interface SuccessGetFileInfoResponsePayload {
    name: string,
    size: number,
    mimeType: string,
    downloadUrl: string | null,
    readyState: FileReadyStateEnum,
    infoHash: string,
    previews: null | Array<{
      name: string,
      mimeType: string,
      size: number,
      downloadUrl: string,
    }>,
  }
Параметр Тип Обяз. Описание
name string ДаИмя файла
size number ДаРазмер файла в байтах
mimeType string ДаMIME-тип файла
downloadUrl string ДаURL для скачивания файла
readyState FileReadyStateEnum ДаСостояние файла на сервере
infoHash string ДаИдентификатор файла на сервере
previews Array ДаМассив превью файла

Для скачивания файла необходимо отправить GET-запрос на адрес, указанный в downloadUrl.

# ErrorGetFileInfoResponse

Ответ, если файл на сервере не найден:

interface ErrorGetFileInfoResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorGetFileInfoResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# SubscribeFileProgressRequest

Команда для подписки на прогресс загрузки файла на сервер:

interface SubscribeFileProgressRequest extends RequestMessage<"subscribeFileProgress", SubscribeFileProgressRequestPayload> {}

Интерфейс SubscribeFileProgressRequest наследует поля из объекта SubscribeFileProgressRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SubscribeFileProgressRequestPayload

interface SubscribeFileProgressRequestPayload {
  fileId: string;
}
Параметр Тип Обяз.Описание
fileId string ДаИдентификатор файла на сервере

# SuccessSubscribeFileProgressResponse

Ответ в случае успешной подписки:

interface SuccessSubscribeFileProgressResponse
  extends ResponseMessage<SuccessSubscribeFileProgressResponsePayload> {}

Интерфейс SuccessSubscribeFileProgressResponse наследует поля из объекта SuccessSubscribeFileProgressResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessSubscribeFileProgressResponsePayload

interface SuccessSubscribeFileProgressResponsePayload {
  result: boolean;
}
Параметр Тип Обяз.Описание
result boolean ДаПолучилось ли подписаться на загрузку

# ErrorSubscribeFileProgressResponse

Ответ, в случае неудачной подписки на загрузку файла:

interface ErrorSubscribeFileProgressResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorSubscribeFileProgressResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# UploadProgressContent

Интерфейс сообщения события о загрузке файла:

interface UploadProgressContent {
  fileId: string;
  progress: number;
}
Параметр Тип Обяз.Описание
fileId string ДаИдентификатор файла на сервере
progress number ДаКоличество байт загруженных на сервер

# UnsubscribeFileProgressRequest

Команда для отписки от получения событий загрузки файла на сервер.

interface UnsubscribeFileProgressRequest extends RequestMessage< "unsubscribeFileProgress", UnsubscribeFileProgressRequestPayload> {}

Интерфейс UnsubscribeFileProgressRequest наследует поля из объекта UnsubscribeFileProgressRequestPayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# UnsubscribeFileProgressRequestPayload

interface UnsubscribeFileProgressRequestPayload {
  fileId: string;
}
Параметр Тип Обяз.Описание
id string ДаИдентификатор файла на сервере

# SuccessUnsubscribeFileProgressResponse

Ответ в случае успешной отписки от получения событий загрузки файла на сервер:

interface SuccessUnsubscribeFileProgressResponse extends ResponseMessage<SuccessUnsubscribeFileProgressResponsePayload> {}

Интерфейс SuccessUnsubscribeFileProgressResponse наследует поля из объекта SuccessUnsubscribeFileProgressResponsePayload, по сути он и является телом сообщения, поэтому описание полей будет приведено там.

# SuccessUnsubscribeFileProgressResponsePayload

interface SuccessUnsubscribeFileProgressResponsePayload {
  result: boolean;
}
Параметр Тип Обяз.Описание
result boolean ДаПолучилось ли отписаться от получения событий

# ErrorUnubscribeFileProgressResponse

Ответ в случае ошибки отписки от получения событий загрузки файла на сервер:

interface ErrorUnubscribeFileProgressResponse
  extends GenericErrorResponse<GenericErrorPayload<uint32>> {}

Интерфейс ErrorUnubscribeFileProgressResponse наследует поля из GenericErrorResponse, поэтому описание полей приводится там.

# Envelope

Каждое сообщение, полученное в виде события, загруженное по идентификатору сообщения или полученное в истории сообщений чата соответствует интерфейсу Envelope:

interface Envelope {
  messageId: string;
  chatId: string;
  timestamp: number;
  replyMessageId?: string;
  isEdited: boolean;
  type: EnvelopeTypeEnum;
  author: EnvelopeAuthor;
  box: EnvelopeBox;
  content: AbstractEnvelopeContent;
}
Параметр Тип Обяз. Описание
messageId string Да Уникальный идентификатор сообщения
chatId string Да Уникальный идентификатор чата, в котором находится сообщение
timestamp uint64 Да Временная метка отправки сообщения в формате UNIX timestamp с точностью до миллисекунд
replyMessageId string Нет Если это ответ на сообщение — содержит идентификатор этого сообщения
isEdited boolean Да Было ли сообщение когда-либо отредактировано
type EnvelopeTypeEnum Да Тип сообщения
author EnvelopeAuthor Да Автор сообщения
box EnvelopeBox Да Порядковые номера сообщения
content AbstractEnvelopeContent Да Контент сообщения. Может быть текстом, файлом или другим типом данных — в зависимости от поля type.

# EnvelopeAuthor

Объект содержит информацию об авторе сообщения.

interface EnvelopeAuthor {
  id: string;
  type: EnvelopeAuthorTypeEnum;
}
Параметр Тип Обяз. Описание
id string Да Уникальный идентификатор автора сообщения. Это может быть либо TrueConf ID пользователя, отправившего сообщение, либо имя сервера, с которого оно пришло. Тип идентификатора зависит от значения поля type
type EnvelopeAuthorTypeEnum Да Тип автора сообщения

# EnvelopeBox

Данный объект применяется для сортировки сообщений и имеет следующий интерфейс:

interface EnvelopeBox {
  id: number;
  position: string;
}
Параметр Тип Обяз. Описание
id number Да Порядковый номер "коробки" в которой находится сообщение
position string Да Порядковый номер сообщения в "коробке"

О том, как работать с данным объектом вы можете ознакомиться в соответствующем разделе.

# GenericErrorResponse

На большинство запросов в случае какой-либо ошибки будет отправляться ответ следующего вида:

interface GenericErrorResponse<T extends GenericErrorPayload> extends ResponseMessage<T> { }

Интерфейс GenericErrorResponse наследует поля из GenericErrorPayload и ResponseMessage поэтому описание полей смотрите там.

# GenericErrorPayload

interface GenericErrorPayload<ErrorCodeEnum extends uint32> {
errorCode: ErrorCodeEnum ;
}
Параметр Тип Обяз. Описание
errorCode uint32 ДаКод ошибки

# Message

Базовый формат сообщения. Любое сообщение (как входящее, так и исходящее) будет иметь следующие поля:

interface Message {
  type: MESSAGE_TYPE;
  id: uint64;
}
Параметр Тип Обяз. Описание
type enum MESSAGE_TYPE Да Тип сообщения из перечисления MESSAGE_TYPE
id uint32 Да Уникальный идентификатор сообщения, представляющий собой инкрементируемое число (в некоторых протоколах, например TCP, такое число называется sequence id).

Идентификатор может быть идентичным для исходящих и входящих сообщений.

Значение идентификатора может инкрементироваться более чем на одну единицу за раз. Подробнее см. ниже.

# RequestMessage

Cообщение с типом Request.

interface RequestMessage<Method extends string, Payload extends JSONObject> extends Message {
  type: MESSAGE_TYPE.REQUEST;
  method: Method;
  payload: Payload;
}
Параметр Тип Обяз. Описание
type MESSAGE_TYPE.REQUEST Да Тип сообщения (по умолчанию 1).
method string Да Тип отправляемой команды
payload JSONObject Нет Любой объект в формате JSON, который применим для данного method. Поле может отсутствовать если для данного method не предусмотрено никаких дополнительных параметров

Пример:

{
  "type": 1,
  "id": 1,
  "method": "ping",
  "payload": {
    "data": "Hello, World!",
    "some_additional_data": {
      "internal_additional_field_124": [true, false, 1234]
    }
  }
}

# ResponseMessage

Сообщение с типом Response.

interface ResponseMessage<Payload extends JSONObject> extends Message {
  type: MESSAGE_TYPE.RESPONSE;
  payload: Payload;
}
Параметр Тип Обяз. Описание
type MESSAGE_TYPE.RESPONSE Да Тип сообщения (по умолчанию 2).
payload JSONObject Нет Любой объект в формате JSON, который применим в качестве полезных данных для ответа на запрос. Поле может отсутствовать если ответ на запрос не содержит полезных данных

Пример:

{
  "type": 2,
  "id": 123456,
  "payload": {
    "data": "Hello, World!"
  }
}

# JSONObject

Объект JSONObject, передаваемый в payload, должен соответствовать следующему типу:

type JSONValue = null | string | number | boolean | JSONArray | JSONObject;
interface JSONArray extends Array<JSONValue> {}

type JSONObject = {
    [key: string] ?: JSONValue;
    [key: number] ?: JSONValue;
}

# OAuthTokenRequest

Структура запроса для получения идентификационного токена.

interface OAuthTokenRequest {
  client_id: string;
  grant_type: string;
  username: string;
  password: string;
}
Параметр Тип Обяз. По умолчанию Описание
client_id string Да "chat_bot" Константная строка "chat_bot"
grant_type string Да "password" Константная строка "password"
username string Да Логин пользователя (см. ниже)
password string Да Пароль пользователя

Логин пользователя сервера TrueConf. Поддерживаются следующие форматы:

  • Простой логин — логин пользователя текущего сервера, например: vasya или alex_smith

  • С указанием сервера TrueConf — например: vasya@server1.local

  • С указанием LDAP-домена — например: web-department.mycompany\\alex_smith

  • С указанием сервера и LDAP-домена — например: web-department.mycompany\\alex_smith@server1.local

# OAuthTokenSuccessResponse

Структура ответа в случае успешной авторизации при получении идентификационного токена.

interface OAuthTokenSuccessResponse {
  access_token: string;
  token_type: string;
  expires_in: uint32;
}
Параметр Тип Обяз. По умолчанию Описание
access_token string Да Идентификационный токен, используемый для авторизации WebSocket-соединения.
token_type string Да "JWE" Константная строка "JWE"
expires_in uint32 Да Время жизни токена в секундах с момента формирования токена составляет один год. По истечении этого времени потребуется повторная авторизация.

# OAuthTokenErrorResponse

Структура ответа в случае ошибки авторизации при получении идентификационного токена.

interface OAuthTokenErrorResponse {
  error: "OAUTH_ERROR";
  error_description: string;
}
Параметр Тип Обяз. Описание
error enum OAUTH_ERROR Да Значение из перечисления OAUTH_ERROR
error_description string Да Человекочитаемый текст ошибки авторизации

# RemoveParticipantEnvelopeContent

Данный объект используется в качестве контента сообщения с типом EnvelopeTypeEnum.REMOVE_PARTICIPANT, отправляемым в случае удаления участника из чата, и имеет следующий интерфейс:

interface RemoveParticipantEnvelopeContent extends AbstractEnvelopeContent {
  userId: string;
}
Параметр Тип Обяз. Описание
userId string Да TrueConf ID пользователя удаленного из чата.

# PlainMessageEnvelopeContent

Данный объект используется в качестве контента сообщения с типом EnvelopeTypeEnum.PLAIN_MESSAGE и имеет следующий интерфейс:

interface RemoveParticipantEnvelopeContent extends AbstractEnvelopeContent {
  text: string;
  parseMode: TextParseModeEnum;
}
Параметр Тип Обяз. Описание
text string Да Текст сообщения
parseMode TextParseModeEnum Да Режим обработки текста сообщения. Подробнее в описании перечисления

Пример:

{
  "chatId": "51ffe1b1-1515-498e-8501-233116adf9da",
  "messageId": "fdfa8fd6-b4f5-4ecc-8c7e-11e420105056",
  "timestamp": 1735330910,
  "author": {
    "id": "user@video.example.com",
    "type": 1 //0 - server, 1 - user
  },
  "replyMessageId": null, //string if this message is reply
  "isEdited": false, //true if edited
  "box": {
    "id": 1,
    "position": "" //for sorting undelivered messages
  },
  "type": 200, //200 - PLAIN_MESSAGE
  "content": {
    "text": "Hello, chat bot!",
    "parseMode": "text"
  }
}

# ForwardMessageEnvelopeContent

Данный объект используется в качестве контента сообщения с типом EnvelopeTypeEnum.FORWARD_MESSAGE и имеет следующий интерфейс:

interface ForwardMessageEnvelopeContent extends Omit<Envelope, "box">, AbstractEnvelopeContent {}

Особенностью интерфейса объекта с контентом пересылаемого сообщения является то, что он в качестве контента содержит объект пересылаемого сообщения (Envelope), за исключением данных в поле "box".

Теоретически, цепочка вложенности пересылаемых сообщений может быть бесконечной, но на текущий момент вложенность составляет одно сообщение (Envelope).

Пример:

{
  "chatId": "51ffe1b1-1515-498e-8501-233116adf9da",
  "messageId": "552a5a7c-02fd-4c30-a4f1-60c9cfff649c",
  "timestamp": 1735330914,
  "author": {
    "id": "user@video.example.com",
    "type": 1 //0 - server, 1 - user
  },
  "replyMessageId": null, //string if this message is reply
  "isEdited": false, //true if edited
  "box": {
    "id": 5677289,
    "position": "COFFEE" //for sorting undelivered messages
  },
  "type": 201, //201 - FORWARD_MESSAGE
  "content": {
    "chatId": "51ffe1b1-1515-498e-8501-233116adf9da",
    "messageId": "fdfa8fd6-b4f5-4ecc-8c7e-11e420105056",
    "timestamp": 1735330910,
    "author": {
      "id": "user@video.example.com",
      "type": 1 //0 - server, 1 - user
    },
    "replyMessageId": null, //string if this message is reply
    "isEdited": false, //true if edited
    "type": 200, //200 - PLAIN_MESSAGE
    "content": {
      "text": "Hello, chat bot!",
      "parseMode": "text"
    }
  }
}

# AttachmentMessageEnvelopeContent

Данный объект используется в качестве контента сообщения с типом EnvelopeTypeEnum.ATTACHMENT и имеет следующий интерфейс:

interface AttachmentMessageEnvelopeContent extends AbstractEnvelopeContent {
  name: string;
  mimeType: string;
  size: number;
  id: string;
}
Параметр Тип Обяз. По умолчанию Описание
name string Да Название файла у отправляющей стороны. Например, "фото.jpg"
mimeType string Да "" MIME-тип отправляемого файла. Может быть, например, строкой "image/jpeg" или пустой строкой, если не удалось определить тип вложения
size uint64 Да Размер файла в байтах
id string Да "" Уникальный идентификатор файла для возможности его скачивания. Подробнее см. раздел по работе с вложениями

# ChatParticipant

Данный объект используется для хранения информации об участнике чата.

interface ChatParticipant {
  userId: string;
  role: ChatParticipantRoleEnum;
}
Параметр Тип Обяз. Описание
userId string ДаTrueConf ID пользователя добавленного в чат
role ChatParticipantRoleEnum ДаРоль пользователя в чате (см. перечисление ChatParticipantRoleEnum)
Обновлено: 19.07.2025