Справочник API
Справочник API
Envelope
Каждое сообщение, полученное в виде события (уведомление sendMessage), загруженное по идентификатору сообщения (getMessageById) или полученное в истории сообщений чата (getChatHistory), соответствует объекту Envelope.
Поле payload уведомления sendMessage и является объектом Envelope — в примерах ниже показан именно он, без обёртки запроса.
interface Envelope {
chat: Chat;
chatId?: string;
messageId: string;
timestamp: number;
replyMessage?: Envelope;
replyMessageId?: string;
isEdited: boolean;
type: EnvelopeContentType;
author: EnvelopeAuthor;
box: EnvelopeBox;
content: AbstractEnvelopeContent;
}Поля Envelope
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chat | Chat | Да | Информация о чате, в котором находится сообщение. Подробнее см. Chat |
| chatId | string | Нет | Deprecated in 5.5.6 Уникальный идентификатор чата, в котором находится сообщение. Используйте поле chat.chatId |
| messageId | string | Да | Уникальный идентификатор сообщения |
| timestamp | uint64 | Да | Временная метка отправки сообщения в формате UNIX timestamp с точностью до миллисекунд |
| replyMessage | Envelope | Нет | Исходное сообщение, если текущее сообщение является ответом. По структуре аналогично обычному сообщению. Примеры см. в разделе «Примеры Envelope» |
| replyMessageId | string | Нет | Идентификатор исходного сообщения, если текущее сообщение является ответом |
| isEdited | boolean | Да | Было ли сообщение когда-либо отредактировано |
| type | uint32 | Да | Тип сообщения. Подробнее см. EnvelopeContentType |
| author.id | string | Да | Уникальный идентификатор автора сообщения: TrueConf ID пользователя или имя сервера, с которого получено сообщение. Формат идентификатора определяется полем author.type |
| author.type | uint32 | Да | Тип автора сообщения. Подробнее см. EnvelopeAuthorTypeEnum |
| box.id | number | Да | Порядковый номер «коробки», в которой находится сообщение. Подробнее — в соответствующем разделе |
| box.position | string | Да | Порядковый номер сообщения в «коробке». Подробнее — в соответствующем разделе |
| content | AbstractEnvelopeContent | Да | Контент сообщения. Состав полей зависит от значения type. Подробнее см. AbstractEnvelopeContent и примеры |
Chat
Объект содержит информацию о чате, в котором находится сообщение:
interface Chat {
chatId: string;
chatTitle: string | null;
chatType: ChatTypeEnum;
}| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| chatId | string | Да | Уникальный идентификатор чата |
| chatTitle | string | null | Да | Название чата или канала. Для личного чата указывается TrueConf ID собеседника, для чата «Избранное» — null |
| chatType | ChatTypeEnum | Да | Тип чата. Подробнее см. ChatTypeEnum |
EnvelopeAuthor
Объект содержит информацию об авторе сообщения:
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| id | string | Да | Уникальный идентификатор автора сообщения. Это может быть либо TrueConf ID пользователя, отправившего сообщение, либо имя сервера, с которого оно пришло. Тип идентификатора зависит от значения поля type |
| type | uint32 | Да | Тип автора сообщения. Подробнее см. EnvelopeAuthorTypeEnum |
EnvelopeBox
Данный объект применяется для сортировки сообщений:
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
| id | number | Да | Порядковый номер «коробки», в которой находится сообщение |
| position | string | Да | Порядковый номер сообщения в «коробке» |
О том, как работать с данным объектом, вы можете узнать в соответствующем разделе.
AbstractEnvelopeContent
Базовый интерфейс для содержимого сообщения:
interface AbstractEnvelopeContent {}Интерфейс не содержит собственных полей. Фактический состав объекта content определяется значением поля Envelope.type из перечисления EnvelopeContentType. Для каждого типа сообщения используется отдельный интерфейс:
Значение Envelope.type | Интерфейс содержимого |
|---|---|
| Системные сообщения | |
ADD_PARTICIPANT | AddParticipantContent |
REMOVE_PARTICIPANT | RemoveParticipantContent |
EDIT_CHAT_TITLE | EditChatTitleContent |
EDIT_CHAT_AVATAR | EditChatAvatarContent |
CLEAR_CHAT_HISTORY | ClearChatHistoryContent |
PARTICIPANT_ROLE | ParticipantRoleContent |
| Пользовательские сообщения | |
PLAIN_MESSAGE | PlainMessageContent |
FORWARDED_MESSAGE | ForwardMessageContent |
ATTACHMENT | AttachmentContent |
GEOLOCATION | GeolocationContent |
SURVEY | SurveyContent |
VOICE | VoiceContent |
AddParticipantContent
Содержимое системного сообщения о добавлении участника в чат (ADD_PARTICIPANT):
interface AddParticipantContent extends AbstractEnvelopeContent {
userId: string;
role: ChatParticipantRoleEnum;
}Пример content:
{
"userId": "user@video.example.net",
"role": "user"
}RemoveParticipantContent
Содержимое системного сообщения об удалении участника из чата (REMOVE_PARTICIPANT):
interface RemoveParticipantContent extends AbstractEnvelopeContent {
userId: string;
}Пример content:
{
"userId": "user@video.example.net"
}EditChatTitleContent
Содержимое системного сообщения об изменении названия чата (EDIT_CHAT_TITLE):
interface EditChatTitleContent extends AbstractEnvelopeContent {
title: string;
}Пример content:
{
"title": "Новое название чата"
}EditChatAvatarContent
Содержимое системного сообщения об изменении изображения чата (EDIT_CHAT_AVATAR):
interface EditChatAvatarContent extends AbstractEnvelopeContent {
avatarUrl: string | null;
}Значение null означает, что изображение чата удалено.
Пример content:
{
"avatarUrl": "https://video.example.net/bridge/api/client/v1/message/123/preview"
}ClearChatHistoryContent
Содержимое системного сообщения об очистке истории чата (CLEAR_CHAT_HISTORY):
interface ClearChatHistoryContent extends AbstractEnvelopeContent {
forAll: boolean;
}Поле forAll указывает, была ли история очищена для всех участников чата.
Пример content:
{
"forAll": true
}ParticipantRoleContent
Содержимое системного сообщения об изменении роли участника (PARTICIPANT_ROLE):
interface ParticipantRoleContent extends AbstractEnvelopeContent {
userId: string;
role: ChatParticipantRoleEnum;
}Пример content:
{
"userId": "user@video.example.net",
"role": "admin"
}PlainMessageContent
Содержимое текстового сообщения (PLAIN_MESSAGE):
interface PlainMessageContent extends AbstractEnvelopeContent {
text: string;
parseMode: TextParseModeEnum;
buttons?: object[][];
}Поле buttons содержит ряды inline-кнопок и присутствует только у сообщений с кнопками.
Пример content:
{
"text": "Новое сообщение",
"parseMode": "html"
}ForwardMessageContent
Содержимое пересланного сообщения (FORWARDED_MESSAGE):
interface ForwardMessageContent
extends Omit<Envelope, "box">, AbstractEnvelopeContent {}Интерфейс соответствует объекту Envelope, из которого исключено поле box.
Пример content:
{
"chat": {
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"chatTitle": "elisa@video.example.net",
"chatType": 1
},
"messageId": "2969b905-30ac-4db3-958e-e437f23493eb",
"timestamp": 1790085027947,
"author": {
"id": "elisa@video.example.net",
"type": 1
},
"type": 200,
"content": {
"text": "Пересланное сообщение",
"parseMode": "html"
},
"isEdited": false
}AttachmentContent
Содержимое сообщения с вложенным файлом (ATTACHMENT):
interface AttachmentContent extends AbstractEnvelopeContent {
name: string;
mimeType: string;
fileId: string;
size: number;
}Пример content:
{
"name": "image.webp",
"mimeType": "image/webp",
"fileId": "8e756a04793267fe75695006d891ec487fe4c685",
"size": 37856
}GeolocationContent
Содержимое сообщения с геопозицией (GEOLOCATION):
interface GeolocationContent extends AbstractEnvelopeContent {
latitude: number;
longitude: number;
title: string;
}Пример content:
{
"latitude": 47.227208,
"longitude": 39.70418,
"title": "Ростов-на-Дону"
}SurveyContent
Содержимое сообщения с опросом (SURVEY):
interface SurveyContent extends AbstractEnvelopeContent {
url: string;
title: string;
path?: string;
description?: string;
buttonText?: string;
appVersion?: number;
secret?: string;
alt?: string;
}Пример content:
{
"url": "https://video.example.net/webtools/survey?id=FVxLn7LxrVsDh2zCoLkfq7",
"appVersion": 1,
"path": "FVxLn7LxrVsDh2zCoLkfq7",
"title": "📊 Опрос",
"description": "{{Survey}}",
"buttonText": "{{Go to survey}}",
"secret": "xPlNHP1Okj",
"alt": "📊 Опрос"
}VoiceContent
Содержимое голосового сообщения (VOICE):
interface VoiceContent extends AbstractEnvelopeContent {
mimeType: string;
fileId: string;
size: number;
duration: number;
}Поле duration содержит длительность голосового сообщения в миллисекундах.
Пример content:
{
"mimeType": "voice/m4a",
"fileId": "afc3cd19a480f22243afda3efe15ca4db0775f52",
"size": 20277,
"duration": 5043
}Примеры Envelope
Ниже приведены примеры объекта payload (Envelope) для различных типов сообщений. Примеры показаны без обёртки запроса sendMessage.
{
"chat": {
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"chatTitle": "elisa@video.example.net",
"chatType": 1
},
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"messageId": "222598d7-9ef9-4663-87e0-8e30804bdb22",
"timestamp": 1790779432327,
"author": {
"id": "elisa@video.example.net",
"type": 1
},
"box": {
"id": 114,
"position": "0"
},
"type": 200,
"content": {
"text": "Новое сообщение",
"parseMode": "html"
},
"isEdited": false
}{
"chat": {
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"chatTitle": "elisa@video.example.net",
"chatType": 1
},
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"messageId": "4c35b267-7a92-4afe-ad4d-cbc8c40b4480",
"timestamp": 1790779557450,
"author": {
"id": "elisa@video.example.net",
"type": 1
},
"replyMessage": {
"chat": {
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"chatTitle": "elisa@video.example.net",
"chatType": 1
},
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"messageId": "222598d7-9ef9-4663-87e0-8e30804bdb22",
"timestamp": 1790779549593,
"author": {
"id": "elisa@video.example.net",
"type": 1
},
"box": {
"id": 120,
"position": "0"
},
"type": 200,
"content": {
"text": "Новое сообщение",
"parseMode": "html"
},
"isEdited": true
},
"replyMessageId": "222598d7-9ef9-4663-87e0-8e30804bdb22",
"box": {
"id": 121,
"position": "0"
},
"type": 200,
"content": {
"text": "ответ на сообщение",
"parseMode": "html"
},
"isEdited": false
}{
"chat": {
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"chatTitle": "elisa@video.example.net",
"chatType": 1
},
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"messageId": "ebfc1f38-7196-418c-9332-0b0841d6f26b",
"timestamp": 1790780970049,
"author": {
"id": "elisa@video.example.net",
"type": 1
},
"box": {
"id": 123,
"position": "0"
},
"type": 200,
"content": {
"text": "текст сообщения",
"parseMode": "html",
"buttons": [
[
{
"type": "command",
"label": "Отправь команду боту 1!",
"command": "my_awesome_command",
"waitReply": false
},
{
"type": "command",
"id": "button_98",
"label": "Добавить товар в корзину",
"command": "add_to_cart",
"customData": "eyBwcm9kdWN0SWQgOiAiMHIyZmozamY5ajM5MyIgfQ==",
"waitReply": true
},
{
"type": "url",
"label": "Открыть сайт",
"style": "primary",
"url": "https://trueconf.com"
}
],
[
{
"type": "copy",
"label": "Скопировать промокод",
"style": "danger",
"data": "ПРОМОКОД-12345"
},
{
"type": "message",
"label": "Написать приветствие",
"message": "Привет, коллеги!",
"draft": false
}
]
]
},
"isEdited": false
}{
"chat": {
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"chatTitle": "elisa@video.example.net",
"chatType": 1
},
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"messageId": "03a9a955-d563-4b90-a3ef-1c7c43869ddd",
"timestamp": 1790781149722,
"author": {
"id": "elisa@video.example.net",
"type": 1
},
"box": {
"id": 124,
"position": "0"
},
"type": 201,
"content": {
"chat": {
"chatType": 2,
"chatTitle": "12",
"chatId": "cc1f6a2fe9cc9c0c47de18877676e59dd672e800"
},
"chatId": "cc1f6a2fe9cc9c0c47de18877676e59dd672e800",
"messageId": "2969b905-30ac-4db3-958e-e437f23493eb",
"author": {
"id": "elisa@video.example.net",
"type": 1
},
"type": 201,
"timestamp": 1790085027947,
"content": {
"text": "<a href=\"trueconf:danilov@video.example.net\">Данилов</a> как дела?",
"parseMode": "html"
},
"isEdited": false
},
"isEdited": false
}{
"chat": {
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"chatTitle": "elisa@video.example.net",
"chatType": 1
},
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"messageId": "dee7d14a-8fe0-408d-a79a-d80bbf144409",
"timestamp": 1790779456960,
"author": {
"id": "elisa@video.example.net",
"type": 1
},
"box": {
"id": 115,
"position": "0"
},
"type": 202,
"content": {
"name": "image_2026-09-30_17-44-18-229.webp",
"mimeType": "image/webp",
"fileId": "8e756a04793267fe75695006d891ec487fe4c685",
"size": 37856
},
"isEdited": false
}{
"chat": {
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"chatTitle": "elisa@video.example.net",
"chatType": 1
},
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"messageId": "8be3ba5b-e109-44f8-82ab-6153dc2f9d34",
"timestamp": 1790781235755,
"author": {
"id": "elisa@video.example.net",
"type": 1
},
"box": {
"id": 125,
"position": "0"
},
"type": 203,
"content": {
"latitude": 55.7520,
"longitude": 37.6175,
"title": "103132, г. Москва, тер. Кремль, д. 1"
},
"isEdited": false
}{
"chat": {
"chatId": "05de1dea14c737876e88c9156a08c3a934df502e",
"chatTitle": "12",
"chatType": 2
},
"chatId": "05de1dea14c737876e88c9156a08c3a934df502e",
"messageId": "a340ef6f-8220-49a0-9552-c0fe10ddda00",
"timestamp": 1790781276869,
"author": {
"id": "elisa@video.example.net",
"type": 1
},
"box": {
"id": 9,
"position": "0"
},
"type": 204,
"content": {
"url": "https://10.140.1.255/webtools/survey?id=FVxLn7LxrVsDh2zCoLkfq7&mode=popup&call_id=danilov%40video.example.net%2F4fd7f634&lang=en&version=unknown&app=BRIDGE_CHAT_BOT&dn=%D0%92%D0%B8%D0%BA%D1%82%D0%BE%D1%80+%D0%94%D0%B0%D0%BD%D0%B8%D0%BB%D0%BE%D0%B2&msg_id=a340ef6f-8220-49a0-9552-c0fe10ddda00&s=dccb0e511f4054b7c4e91218d1270211",
"appVersion": 1,
"path": "FVxLn7LxrVsDh2zCoLkfq7",
"title": "📊 Опрос",
"description": "{{Survey}}",
"buttonText": "{{Go to survey}}",
"secret": "xPlNHP1Okj",
"alt": "📊 <a href=\"https://10.140.1.255/webtools/survey?id=FVxLn7LxrVsDh2zCoLkfq7&error=autologin_not_supported\">Опрос</a>"
},
"isEdited": false
}{
"chat": {
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"chatTitle": "elisa@video.example.net",
"chatType": 1
},
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"messageId": "db070005-82ec-4e5c-a3d7-cd1128b8784b",
"timestamp": 1790779507571,
"author": {
"id": "elisa@video.example.net",
"type": 1
},
"box": {
"id": 117,
"position": "0"
},
"type": 205,
"content": {
"mimeType": "voice/m4a",
"fileId": "afc3cd19a480f22243afda3efe15ca4db0775f52",
"size": 20277,
"duration": 5043
},
"isEdited": false
}{
"chat": {
"chatId": "05de1dea14c737876e88c9156a08c3a934df502e",
"chatTitle": "12",
"chatType": 2
},
"chatId": "05de1dea14c737876e88c9156a08c3a934df502e",
"messageId": "7fd1edbf-01e9-4e6f-8932-89e478e62804",
"timestamp": 1790781014314,
"author": {
"id": "elisa@video.example.net",
"type": 1
},
"box": {
"id": 3,
"position": "0"
},
"type": 1,
"content": {
"userId": "danilov@video.example.net",
"role": "user"
},
"isEdited": false
}{
"chat": {
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"chatTitle": "elisa@video.example.net",
"chatType": 1
},
"chatId": "55f940ecdc66e2c983f8fbd1f954ba72db7d3e9d",
"messageId": "222598d7-9ef9-4663-87e0-8e30804bdb22",
"timestamp": 1790779432327,
"author": {
"id": "elisa@video.example.net",
"type": 1
},
"box": {
"id": 114,
"position": "0"
},
"type": 200,
"content": {
"text": "Новое сообщение (отредактировано)",
"parseMode": "html"
},
"isEdited": true
}Перечисления (Enums)
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,
VOICE = 205
}Системные сообщения (события)
Системные сообщения используются для логирования и визуального сопровождения событий в истории чата.
Определяются значением type < 200. Подробнее вы можете прочитать в соответствующем разделе документации.
| Тип сообщения | Значение | Описание |
|---|---|---|
| ADD_PARTICIPANT | 1 | Пользователь добавлен в чат |
| REMOVE_PARTICIPANT | 2 | Пользователь удалён из чата |
| EDIT_CHAT_TITLE | 21 | 5.5.3+ Изменено название чата |
| EDIT_CHAT_AVATAR | 22 | 5.5.3+ Изменено изображение чата |
| CLEAR_CHAT_HISTORY | 23 | 5.5.3+ Удалена история чата |
Пользовательские сообщения
Пользовательские сообщения формируются клиентами и передаются в общем потоке сообщений чата.
Определяются значением type ≥ 200.
| Тип сообщения | Значение | Описание |
|---|---|---|
| PLAIN_MESSAGE | 200 | Текстовое сообщение |
| FORWARDED_MESSAGE | 201 | Пересланное сообщение |
| ATTACHMENT | 202 | Сообщение с информацией о вложенном файле |
| GEOLOCATION | 203 | 5.5.3+ Сообщение, содержащее геопозицию пользователя (может быть отправлено с клиентского приложения для мобильных устройств) |
| SURVEY | 204 | Сообщение-опрос |
| VOICE | 205 | 5.5.6+ Голосовое сообщение |
EnvelopeAuthorTypeEnum
enum EnvelopeAuthorTypeEnum {
SYSTEM,
USER,
}SYSTEM– автором сообщения является сервер. В большинстве случаев это будет обозначать то, что сообщение является системны сообщением. В качестве идентификатора автора будет использоваться идентификатор сервера (TrueConf Server Name).USER– автором сообщения является пользователь сервера. В качестве идентификатора автора будет использоваться TrueConf ID этого пользователя.
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- данная роль присутствует только в канале и означает, что пользователь может писать сообщения в канал.
С описанием прав для каждой роли вы можете ознакомиться в отдельном разделе.
TextParseModeEnum
Данное перечисление используется для указания режима обработки текстового контента сообщений.
enum TextParseModeEnum {
TEXT = "text",
MARKDOWN = "markdown",
HTML = "html",
}где:
TEXT– контент сообщения будет обработан как текст. Все html-теги будут экранированы (преобразованы в HTML-сущности).MARKDOWN– контент будет обработан как markdown. Список поддерживаемых правил Markdown приведен ниже.HTML– контент будет обработан как HTML. Список поддерживаемых тегов HTML приведен ниже.
ChatActivity
Данное перечисление используется для передачи действий активности чат-бота.
enum ChatActivity {
TYPING = "typing",
CHOOSING_STICKER = "choosing_sticker",
RECORDING_AUDIO = "recording_audio",
RECORDING_VIDEO = "recording_video",
UPLOADING_FILE = "uploading_file",
}где:
TYPING– «Печатает»;CHOOSING_STICKER– «Выбирает стикер»;RECORDING_AUDIO– «Записывает аудиосообщение»;RECORDING_VIDEO– «Записывает видеосообщение»;UPLOADING_FILE– «Загружает файл».
FileReadyStateEnum
Данное перечисление используется для указания состояния файла на сервере.
enum FileReadyStateEnum {
NOT_AVAILABLE = 0,
UPLOADING = 1,
READY = 2
}где:
NOT_AVAILABLE– файл удален из-за ограничений квоты, времени хранения, и т.д.;UPLOADING– файл в процессе загрузки;READY– файл загружен.
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). |