Описание API
Запросы между клиентом и сервером передаются в виде объекта сериализованного в строку с JSON-форматированием. В каждом запросе имеется ключ type
значение которого является именем метода.
- Первая пара ключ:значение (объект
type
) устанавливает тип метода. Клиент/сервер обрабатывают запрос в соответствии с именем метода. Значение ключа не может быть пустым илиnull
. - Вторая пара ключ:значение (объект
data
) передает массив данных соответствующих запросу. В случае отсутствия данных, значение ключаnull
. - Третья пара ключ:значение (объект
errors
) передает информацию о статусе выполнения запроса. Значение ключа не может быть пустым илиnull
. - Четвёртая пара ключ:значение (объект
jsonapi
) передает информацию об используемом протоколе. Значение ключа не может быть пустым илиnull
. - Пятая пара ключ:значение (объект
meta
) резервная, для дальнейшего расширения протокола. В случае отсутствия данных, значение поляnull
.
Ниже описаны все возможные поля JSON-объекта.
Поле type
В type
передается тип метода. Значение в поле type
не может быть пустым или null
.
Ключ | Тип | Обязательный (запрос / ответ) | Описание |
---|---|---|---|
type | str | Yes / Yes | Уникальное имя метода из следующего списка: all_flow, add_flow, all_messages, authentication, get_update, register_user, send_message, user_info, delete_user, delete_message, edited_message, ping_pong. |
Поле data
В data
передается основной массив информации. В случае отсутствия данных значение data
должно быть null
.
Ключ | Тип | Обязательный (запрос / ответ) | Описание |
---|---|---|---|
time | int | No / No | Время, в секундах со времени начала эпохи (Unix-время). |
flow | flow | No / No | Информация о потоке. Объект данных в виде списка содержащего словарь. |
message | message | No / No | Информация о сообщении. Объект данных в виде списка содержащего словарь. |
user | user | No / No | Информация о пользователе. Объект данных в виде списка содержащего словарь. |
meta | Any | No / No | Зарезервировано. По умолчанию значение null . |
Поле flow
Во flow
передается полная информация о потоке (чате, канале, группе). Объект данных в виде списка содержащего словарь.
Всего существуют три типа потока:
- chat (2 пишут, 2 читают)
- channel (1 пишет, многие читают)
- group (многие пишут, многие читают)
Ключ | Тип | Обязательный (запрос / ответ) | Описание |
---|---|---|---|
uuid | str | Yes / Yes | Уникальный номер потока. |
time | int | No / No | Время создания потока, в секундах со времени начала эпохи (Unix-время). |
type | str | No / No | Тип потока. |
owner | str | No / No | uuid создателя flow . |
users | list[str] | No / No | Список пользователей, участников flow . Объект данных в виде списка содержащего uuid пользователей. |
title | str | No / No | Персональное имя потока (может быть не уникальным). |
info | str | No / No | Описание потока (может быть не уникальным). |
message_start | int | No / No | Начальный порядковый номер сообщения в потоке. Используется для загрузки сообщений "порциями". |
message_end | int | No / No | Конечный порядковый номер сообщения в потоке (общее количество сообщений). Используется для загрузки сообщений "порциями". |
Поле message
В message
передается информация о сообщении.
Ключ | Тип | Обязательный (запрос / ответ) | Описание |
---|---|---|---|
uuid | str | Yes / Yes | Уникальный номер сообщения. |
client_id | int | Yes / No | Номер сообщения присваиваемый самим клиентом. Сервер не меняет этот номер, и после обработки возвращает его клиенту. |
text | str | No / No | Текст сообщения. |
from_user | str | No / No | Уникальный номер пользователя который написал сообщение. |
from_flow | str | No / No | Уникальный номер потока которому принадлежит сообщение. |
time | int | No / No | Время когда сообщение было написано, в секундах со времени начала эпохи (Unix-время). |
file_picture | bytes | No / No | Файл-вложение к сообщению (фото). |
file_video | bytes | No / No | Файл-вложение к сообщению (видео). |
file_audio | bytes | No / No | Файл-вложение к сообщению (аудио). |
file_document | bytes | No / No | Файл-вложение к сообщению (документ). |
emoji | bytes | No / No | Тип емоджи (в виде файла). |
edited_time | int | No / No | Время когда пользователь последний раз исправил сообщение, в секундах со времени начала эпохи (Unix-время). |
edited_status | bool | No / No | Статус сообщения (исправлено или нет). |
Поле user
В user
передается информация о пользователе, а так же его настройки.
Ключ | Тип | Обязательный (запрос / ответ) | Описание |
---|---|---|---|
uuid | str | No / No | Уникальный номер пользователя. Выдается сервером после регистрации. |
login | str | No / No | Логин пользователя. |
username | str | No / No | Отображаемое имя пользователя. |
bio | str | No / No | Информация о пользователе. |
avatar | bytes | No / No | Изображение пользователя. |
password | str | No / No | Пароль пользователя. |
is_bot | bool | No / No | Указывает на тип пользователя (бот или человек). |
auth_id | str | No / No | Токен аутентификации. |
token_ttl | int | No / No | Срок жизни токена аутентификации в секундах. |
str | No / No | Адрес почты пользователя. | |
time_created | int | No / No | Дата и время создания пользователя. |
Поле errors
В errors
передается информация о результате выполнения запроса. Не может быть пустым. Коды ошибок (и их статусы) соответствуют кодам протокола HTTP. Значения ключа detail
предназначено для подробного разъяснения статуса выполнения запроса.
Ключ | Тип | Обязательный (запрос / ответ) | Описание |
---|---|---|---|
code | int | No / Yes | Код ошибки. |
status | str | No / Yes | Статус ошибки. |
time | int | No / Yes | Время когда произошла ошибка, в секундах со времени начала эпохи (Unix-время). |
detail | str | No / No | Подробное описание ошибки. |
Поле jsonapi
В jsonapi
передается версия протокола. Не может быть пустым.
Ключ | Тип | Обязательный (запрос / ответ) | Описание |
---|---|---|---|
version | str | Yes / Yes | Версия протокола. |
revision | str | No / No | Ревизия протокола. |
Поле meta
Поле meta
зарезервировано. В случае отсутствия данных значение поля null
.
Ключ | Тип | Обязательный (запрос / ответ) | Описание |
---|---|---|---|
meta | Any | No / No | Зарезервировано. |
Пример JSON-объекта
Содержание JSON-объекта, используются все возможные поля.
{
"type": "user_info",
"data": {
"time": 1594492370,
"flow": [{
"uuid": "1254",
"time": 1594492370,
"type": "chat",
"title": "Name Chat",
"info": "Info about this chat",
"owner": "123456",
"users": ["123456", "65478"],
"message_start": 0,
"message_end": 100
},
{...}],
"message": [{
"uuid": "1",
"client_id": 123,
"text": "some text...",
"from_user": "1234567",
"time": 1594492370,
"from_flow": "123655455",
"file_picture": "jkfikdkdsd",
"file_video": "sdfsdfsdf",
"file_audio": "fgfsdfsdfsdf",
"file_document": "fghsfghsfgh",
"emoji": "sfdfsdfsdf",
"edited_time": 1594492370,
"edited_status": true
},
{...}],
"user": [{
"uuid": "1234567",
"login": "username1",
"password": "lksdjflksjfsd",
"username": "Vasya",
"is_bot": true,
"auth_id": "4646hjgjhg64",
"token_ttl": 6000,
"email": "querty@querty.com",
"avatar": "fffdddddd",
"bio": "My bio",
"time_created": 2542445821452
},
{...}],
"meta": null
},
"errors": {
"code": 200,
"status": "OK",
"time": 1594492370,
"detail": "successfully"
},
"jsonapi": {
"version": "1.0",
"revision": "17"
},
"meta": null
}