Описание API

Запросы между клиентом и сервером передаются в виде объекта сериализованного в строку с JSON-форматированием. В каждом запросе имеется ключ type значение которого является именем метода.

  • Первая пара ключ:значение (объект type) устанавливает тип метода. Клиент/сервер обрабатывают запрос в соответствии с именем метода. Значение ключа не может быть пустым или null.
  • Вторая пара ключ:значение (объект data) передает массив данных соответствующих запросу. В случае отсутствия данных, значение ключа null.
  • Третья пара ключ:значение (объект errors) передает информацию о статусе выполнения запроса. Значение ключа не может быть пустым или null.
  • Четвёртая пара ключ:значение (объект jsonapi) передает информацию об используемом протоколе. Значение ключа не может быть пустым или null.
  • Пятая пара ключ:значение (объект meta) резервная, для дальнейшего расширения протокола. В случае отсутствия данных, значение поля null.

Ниже описаны все возможные поля JSON-объекта.

Поле type

В type передается тип метода. Значение в поле type не может быть пустым или null.

КлючТипОбязательный (запрос / ответ)Описание
typestrYes / 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.

КлючТипОбязательный (запрос / ответ)Описание
timeintNo / NoВремя, в секундах со времени начала эпохи (Unix-время).
flowflowNo / NoИнформация о потоке. Объект данных в виде списка содержащего словарь.
messagemessageNo / NoИнформация о сообщении. Объект данных в виде списка содержащего словарь.
useruserNo / NoИнформация о пользователе. Объект данных в виде списка содержащего словарь.
metaAnyNo / NoЗарезервировано. По умолчанию значение null.

Поле flow

Во flow передается полная информация о потоке (чате, канале, группе). Объект данных в виде списка содержащего словарь.

Всего существуют три типа потока:

  • chat (2 пишут, 2 читают)
  • channel (1 пишет, многие читают)
  • group (многие пишут, многие читают)
КлючТипОбязательный (запрос / ответ)Описание
uuidstrYes / YesУникальный номер потока.
timeintNo / NoВремя создания потока, в секундах со времени начала эпохи (Unix-время).
typestrNo / NoТип потока.
ownerstrNo / Nouuid создателя flow.
userslist[str]No / NoСписок пользователей, участников flow. Объект данных в виде списка содержащего uuid пользователей.
titlestrNo / NoПерсональное имя потока (может быть не уникальным).
infostrNo / NoОписание потока (может быть не уникальным).
message_startintNo / NoНачальный порядковый номер сообщения в потоке. Используется для загрузки сообщений "порциями".
message_endintNo / NoКонечный порядковый номер сообщения в потоке (общее количество сообщений). Используется для загрузки сообщений "порциями".

Поле message

В message передается информация о сообщении.

КлючТипОбязательный (запрос / ответ)Описание
uuidstrYes / YesУникальный номер сообщения.
client_idintYes / NoНомер сообщения присваиваемый самим клиентом. Сервер не меняет этот номер, и после обработки возвращает его клиенту.
textstrNo / NoТекст сообщения.
from_userstrNo / NoУникальный номер пользователя который написал сообщение.
from_flowstrNo / NoУникальный номер потока которому принадлежит сообщение.
timeintNo / NoВремя когда сообщение было написано, в секундах со времени начала эпохи (Unix-время).
file_picturebytesNo / NoФайл-вложение к сообщению (фото).
file_videobytesNo / NoФайл-вложение к сообщению (видео).
file_audiobytesNo / NoФайл-вложение к сообщению (аудио).
file_documentbytesNo / NoФайл-вложение к сообщению (документ).
emojibytesNo / NoТип емоджи (в виде файла).
edited_timeintNo / NoВремя когда пользователь последний раз исправил сообщение, в секундах со времени начала эпохи (Unix-время).
edited_statusboolNo / NoСтатус сообщения (исправлено или нет).

Поле user

В user передается информация о пользователе, а так же его настройки.

КлючТипОбязательный (запрос / ответ)Описание
uuidstrNo / NoУникальный номер пользователя. Выдается сервером после регистрации.
loginstrNo / NoЛогин пользователя.
usernamestrNo / NoОтображаемое имя пользователя.
biostrNo / NoИнформация о пользователе.
avatarbytesNo / NoИзображение пользователя.
passwordstrNo / NoПароль пользователя.
is_botboolNo / NoУказывает на тип пользователя (бот или человек).
auth_idstrNo / NoТокен аутентификации.
token_ttlintNo / NoСрок жизни токена аутентификации в секундах.
emailstrNo / NoАдрес почты пользователя.
time_createdintNo / NoДата и время создания пользователя.

Поле errors

В errors передается информация о результате выполнения запроса. Не может быть пустым. Коды ошибок (и их статусы) соответствуют кодам протокола HTTPopen in new window. Значения ключа detail предназначено для подробного разъяснения статуса выполнения запроса.

КлючТипОбязательный (запрос / ответ)Описание
codeintNo / YesКод ошибки.
statusstrNo / YesСтатус ошибки.
timeintNo / YesВремя когда произошла ошибка, в секундах со времени начала эпохи (Unix-время).
detailstrNo / NoПодробное описание ошибки.

Поле jsonapi

В jsonapi передается версия протокола. Не может быть пустым.

КлючТипОбязательный (запрос / ответ)Описание
versionstrYes / YesВерсия протокола.
revisionstrNo / NoРевизия протокола.

Поле meta

Поле meta зарезервировано. В случае отсутствия данных значение поля null.

КлючТипОбязательный (запрос / ответ)Описание
metaAnyNo / 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
        }
Last Updated: