# Объекты 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) |