Объекты API

Труконф04.07.2026Около 37 мин

Объекты API

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

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

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

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

ChatParticipantRoleEnum

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

enum ChatParticipantRoleEnum {
    OWNER = "owner",
    ADMIN = "admin",
    USER = "user",
    CONF_OWNER = "conf_owner",
    CONF_MODERATOR = "conf_moderator",
    FAVORITES_OWNER = "favorites_owner",
    WRITER = "writer"
}

где:

  • 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, представлены в виде ASCII-строк из указанного в спецификации перечня. Поддерживаются следующие коды ошибок:

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 - канал

EnvelopeContentType

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

enum EnvelopeContentType {
    ADD_PARTICIPANT = 1,
    REMOVE_PARTICIPANT = 2,
    EDIT_CHAT_TITLE = 21,
    EDIT_CHAT_AVATAR = 22,
    CLEAR_CHAT_HISTORY = 23,
    PARTICIPANT_ROLE = 110,
    PLAIN_MESSAGE = 200,
    FORWARDED_MESSAGE = 201,
    ATTACHMENT = 202,
    GEOLOCATION = 203,
    SURVEY = 204,
}

Системные сообщения (события)

Системные сообщения используются для логирования и визуального сопровождения событий в истории чата.
Определяются значением type < 200. Подробнее вы можете прочитать в соответствующем разделе документации.

Тип сообщенияЗначениеОписание
ADD_PARTICIPANT1Пользователь добавлен в чат
REMOVE_PARTICIPANT2Пользователь удалён из чата
EDIT_CHAT_TITLE215.5.3+ Изменено название чата
EDIT_CHAT_AVATAR225.5.3+ Изменено изображение чата
CLEAR_CHAT_HISTORY235.5.3+ Удалена история чата

Пользовательские сообщения

Пользовательские сообщения формируются клиентами и передаются в общем потоке сообщений чата.
Определяются значением type ≥ 200.

Тип сообщенияЗначениеОписание
PLAIN_MESSAGE200Текстовое сообщение
FORWARDED_MESSAGE201Пересланное сообщение
ATTACHMENT202Сообщение с информацией о вложенном файле
GEOLOCATION2035.5.3+ Сообщение, содержащее геолокацию пользователя (может быть отправлено с клиентского приложения для мобильных устройств)
SURVEY204Сообщение-опрос

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

Данный объект используется в качестве контента сообщения с типом EnvelopeContentType.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: "JWT";
  receiveUnread?: boolean;
}
ПараметрТипОбяз.Значение по умолчаниюОписание
tokenstringДаauthАвторизационный токен, полученный посредством HTTP-запроса
tokenTypestringДаJWTСтрока «JWT»
receiveUnreadbooleanНетfalseПараметр, отвечающий за получение непрочитанных сообщений, когда бот находился в оффлайне. Сообщения возвращаются по одному — от старых к новым. Максимальное количество получаемых сообщений — 1000.

SuccessAuthResponse

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

interface SuccessAuthResponse extends ResponseMessage<SuccessAuthResponsePayload> {}

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

SuccessAuthResponsePayload

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

interface SuccessAuthResponsePayload {
  userId: string;
}
ПараметрТипОбяз.Описание
userIdstringДа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;
}
ПараметрТипОбяз.Описание
titlestringДаНазвание группового чата

SuccessCreateGroupChatResponse

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

interface SuccessCreateGroupChatResponse
  extends ResponseMessage<SuccessCreateGroupChatResponsePayload> {}

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

SuccessCreateGroupChatResponsePayload

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

ErrorCreateGroupChatResponse

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

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

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

RemoveChatRequest

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

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

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

RemoveChatRequestPayload

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

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

SuccessRemoveChatResponse

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

interface SuccessRemoveChatResponse
  extends ResponseMessage<SuccessRemoveChatResponsePayload> {}

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

SuccessRemoveChatResponsePayload

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

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;
}
ПараметрТипОбяз.Описание
chatIdstringДаИдентификатор чата в который добавляется пользователь
userIdstringДа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;
}
ПараметрТипОбяз.Описание
userIdstringДаTrueConf ID пользователя, с которым мы хотим создать чат

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

SuccessCreateP2PChatResponse

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

interface SuccessCreateP2PChatResponse
  extends ResponseMessage<SuccessCreateP2PChatResponsePayload> {}

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

SuccessCreateP2PChatResponsePayload

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

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;
}
ПараметрТипОбяз.Описание
chatIdstringДаИдентификатор чата из которого удаляют пользователя
userIdstringДа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;
}
ПараметрТипОбяз.Описание
chatIdstringДаИдентификатор чата в котором проверяется наличие пользователя
userIdstringДаTrueConf ID проверяемого пользователя

SuccessHasChatParticipantResponse

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

interface SuccessHasChatParticipantResponse
  extends ResponseMessage<SuccessHasChatParticipantResponsePayload> {}

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

SuccessHasChatParticipantResponsePayload

interface SuccessHasChatParticipantResponsePayload {
  result: boolean;
}
ПараметрТипОбяз.Описание
resultbooleanДаФлаг наличия участника в чате. Если 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;
}
ПараметрТипОбяз.Описание
chatIdstringДаИдентификатор чата
pageSizeuint32ДаКоличество записей с информацией об участниках чата в ответе на запрос
pageNumberuint32ДаСмещение с которым будет возвращен список участников. Смещение рассчитывается по формуле startOffset = pageSize * pageNumber

SuccessGetChatParticipantListResponse

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

interface SuccessGetChatParticipantListResponse
  extends ResponseMessage<SuccessGetChatParticipantListResponsePayload> {}

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

SuccessGetChatParticipantListResponsePayload

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

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;
}
ПараметрТипОбяз.Описание
chatIdstringДаИдентификатор чата
userIdstringДаTrueConf ID добавленного в чат пользователя
addedByMessageAuthorДаКто добавил участника. Подробнее смотрите объект MessageAuthor
timestampuint64ДаВременная метка добавления участника в чат в формате 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;
}
ПараметрТипОбяз.Описание
chatIdstringДаИдентификатор чата
userIdstringДаTrueConf ID удаленного из чата пользователя
addedByMessageAuthorДаКто удалил участника. Подробнее смотрите объект MessageAuthor
timestampuint64ДаВременная метка удаления участника из чата в формате 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;
}
ПараметрТипОбяз.Описание
chatIdstringДаИдентификатор чата
replyMessageIdstringНетВ случае если мы отвечаем на сообщение, поле должно содержать идентификатор этого сообщения. Необязательное поле
contentTextMessageContentДаДанные сообщения

TextMessageContent

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

SuccessSendChatMessageResponse

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

interface SuccessSendChatMessageResponse
  extends ResponseMessage<SuccessSendChatMessageResponsePayload> {}

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

SuccessSendChatMessageResponsePayload

interface SuccessSendChatMessageResponsePayload {
  chatId: string;
  messageId: string;
  timestamp: uint64;
}
ПараметрТипОбяз.Описание
chatIdstringДаИдентификатор чата в который отправлялось сообщение
messageIdstringДаИдентификатор сообщения. Можно использовать данный идентификатор в дальнейшем, для изменения, пересылки или удаления сообщения
timestampuint64ДаВременная метка оправки сообщения в формате 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;
}
ПараметрТипОбяз.Описание
chatIdstringДаИдентификатор чата
contentTextMessageContentДаДанные сообщения

SuccessEditChatMessageResponse

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

interface SuccessEditChatMessageResponse
  extends ResponseMessage<SuccessEditChatMessageResponsePayload> {}

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

SuccessEditChatMessageResponsePayload

interface SuccessSendChatMessageResponsePayload {
  timestamp: uint64;
}
ПараметрТипОбяз.Описание
timestampuint64ДаВременная метка редактирования сообщения в формате 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;
}
ПараметрТипОбяз.Описание
chatIdstringДаИдентификатор чата, в который вы будете пересылать сообщение
messageIdstringДаИдентификатор пересылаемого сообщения

SuccessForwardChatMessageResponse

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

interface SuccessForwardChatMessageResponse
  extends ResponseMessage<SuccessForwardChatMessageResponsePayload> {}

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

SuccessForwardChatMessageResponsePayload

interface SuccessForwardChatMessageResponsePayload {
  chatId: string;
  messageId: string;
  timestamp: uint64;
}
ПараметрТипОбяз.Описание
chatIdstringДаУникальный идентификатор чата, в который мы переслали сообщение
messageIdstringДаУникальный идентификатор нового сообщения, содержащего ваше пересланное сообщение
timestampuint64ДаВременная метка пересылки сообщения в формате 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;
}
ПараметрТипОбяз.Описание
messageIdstringДаИдентификатор запрашиваемого сообщения

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;
}
ПараметрТипОбяз.Описание
chatIdstringДаИдентификатор чата для которого запрашивается история сообщений
countuint32ДаКоличество возвращаемых в ответе сообщений
fromMessageIdstringНетИдентификатор сообщения чата, с которого будут возвращена история чата

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

SuccessGetChatHistoryResponse

interface SuccessGetChatHistoryResponse
  extends ResponseMessage<SuccessGetChatHistoryResponsePayload> {}

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

SuccessGetChatHistoryResponsePayload

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

interface SuccessGetChatMessageResponsePayload {
  chatId: string;
  count: uint32;
  messages: Array<Envelope>;
}
ПараметрТипОбяз.Описание
chatIdstringДаИдентификатор чата для которого запрашивалась история сообщений
countuint32ДаКоличество полученных сообщений
messagesArrayНетМассив с объектами 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;
}
ПараметрТипОбяз.Описание
messageIdstringДаИдентификатор удаляемого сообщения
forAllbooleanДаФлаг удаления сообщения. Если установлено в 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;
}
ПараметрТипОбяз.Описание
fileNamestringДаИмя файла
fileSizenumberДаРазмер файла
mimeTypestringДаMIME-тип файла

SuccessUploadFileResponse

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

interface SuccessUploadFileResponse
  extends ResponseMessage<SuccessUploadFileResponsePayload> {}

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

SuccessUploadFileResponsePayload

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

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,
  };
}
ПараметрТипОбяз.Описание
chatIdstringДаИдентификатор чата для отправки сообщения
fileIdstringДаИдентификатор файла полученный в ответе на HTTP-запрос

SuccessSendFileResponse

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

interface SuccessSendFileResponse
  extends ResponseMessage<SuccessSendFileResponsePayload> {}

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

SuccessSendFileResponsePayload

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

ErrorSendFileResponse

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

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

FileMessageContent

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

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

GetFileInfoRequest

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

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

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

GetFileInfoRequestPayload

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

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,
    }>,
  }
ПараметрТипОбяз.Описание
namestringДаИмя файла
sizenumberДаРазмер файла в байтах
mimeTypestringДаMIME-тип файла
downloadUrlstringДаURL для скачивания файла
readyStateFileReadyStateEnumДаСостояние файла на сервере
infoHashstringДаИдентификатор файла на сервере
previewsArrayДаМассив превью файла

Для скачивания файла необходимо отправить 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;
}
ПараметрТипОбяз.Описание
fileIdstringДаИдентификатор файла на сервере

SuccessSubscribeFileProgressResponse

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

interface SuccessSubscribeFileProgressResponse
  extends ResponseMessage<SuccessSubscribeFileProgressResponsePayload> {}

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

SuccessSubscribeFileProgressResponsePayload

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

ErrorSubscribeFileProgressResponse

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

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

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

UploadProgressContent

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

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

UnsubscribeFileProgressRequest

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

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

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

UnsubscribeFileProgressRequestPayload

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

SuccessUnsubscribeFileProgressResponse

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

interface SuccessUnsubscribeFileProgressResponse extends ResponseMessage<SuccessUnsubscribeFileProgressResponsePayload> {}

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

SuccessUnsubscribeFileProgressResponsePayload

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

ErrorUnubscribeFileProgressResponse

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

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

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

Envelope

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

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

EnvelopeAuthor

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

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

EnvelopeBox

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

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

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

GenericErrorResponse

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

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

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

GenericErrorPayload

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

Message

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

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

RequestMessage

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

interface RequestMessage<Method extends string, Payload extends JSONObject> extends Message {
  type: MESSAGE_TYPE.REQUEST;
  method: Method;
  payload: Payload;
}
ПараметрТипОбяз.Описание
typeMESSAGE_TYPE.REQUESTДаТип сообщения (по умолчанию 1).
methodstringДаТип отправляемой команды
payloadJSONObjectНетЛюбой объект в формате 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;
}
ПараметрТипОбяз.Описание
typeMESSAGE_TYPE.RESPONSEДаТип сообщения (по умолчанию 2).
payloadJSONObjectНетЛюбой объект в формате 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_idstringДа"chat_bot"Константная строка "chat_bot"
grant_typestringДа"password"Константная строка "password"
usernamestringДаЛогин пользователя (см. ниже)
passwordstringДаПароль пользователя

Логин пользователя сервера 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_at: uint32;
}
ПараметрТипОбяз.По умолчаниюОписание
access_tokenstringДаИдентификационный токен, используемый для авторизации WebSocket-соединения.
token_typestringДа"JWT"Константная строка "JWT"
expires_atuint32ДаВремя жизни токена составляет один месяц c момента формирования. По истечении этого времени потребуется повторная авторизация.

OAuthTokenErrorResponse

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

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

RemoveParticipantEnvelopeContent

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

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

PlainMessageEnvelopeContent

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

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

Пример:

{
  "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

Данный объект используется в качестве контента сообщения с типом EnvelopeContentType.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

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

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

ChatParticipant

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

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