Skip to content
Мои токены Поддержка
Авторизоваться
Для подтверждения действия введите пароль
Чтобы продолжить, введите пароль для пользователя

АТИ Мессенджер

«АТИ Мессенджер» (далее Мессенджер) — сервис для обмена сообщениями, документами, файлами между пользователями ATI.SU. С помощью мессенджера можно договориться о перевозке, отправить фото, электронные документы.

Возможности Мессенджера

  • Создание диалогов между пользователями ATI.SU
  • Создание диалогов из приложения АТИ Водитель
  • Отправка текстовых сообщений
  • Отправка файлов, изображений, документов ATI.SU, геометок
  • Общение в открытых и закрытых групповых чатах
  • Общение с подписчиками в каналах

Типичные сценарии использования мессенджера

Диалог

  • Создать диалог по конкретному грузу или из интерфейса мессенджера с определенным пользователем
  • Отправить сообщение
  • Закрепить диалог
  • Заблокировать/разблокировать пользователя
  • Скрыть диалог

Групповой чат и канал

  • Создать групповой чат или канал
  • Отправить приглашения участникам ATI.SU
  • Вступить в чат по приглашению
  • Исключить участника

API для работы с АТИ Мессенджером

API Мессенджера предоставляет набор методов, необходимых для получения списка чатов пользователя ATI.SU, получения сообщений в чате, отправки сообщения в чат и другие. Благодаря этому API можно организовать интеграцию между мессенджером и сторонней системой.

Используемые термины

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

Подписка - связка пользователя и конкретного канала. Диалог, например, состоит из 2-х подписок, групповой чат - из N подписок. Список чатов, отображающийся в интерфейсе, есть список подписок. Подписка так же содержит опции пользователя относительно этого чата (скрыт, заблокирован, закреплен и т.п.).

Диалог - чат между двумя участниками; диалог нельзя удалить, только скрыть.

Групповой чат - чат между группой участников, пользователи вступают чат по приглашению; в закрытых чатах приглашать могут только администраторы, в открытых - все участники.

Администратор - создатель и владелец группового чата. В закрытых группах только администратор может приглашать пользователей в чат.

Канал - групповой чат, писать в который может только администратор.

История - список сообщений чата.

Хвост - последнее сообщение в истории (отображается в каждом чате из списка).

Пользователь ATI.SU - участник ATI.SU, обладающий лицензией и имеющий доступ ко всем сервисам ATI.SU.

Псевдопользователь(АТИ Водитель) - пользователь чата, не являющийся полноценным участником ATI.SU, но имеющий возможность быть участником как диалога, так и группового чата в мессенджере.

ID аккаунта ATI.SU - уникальный идентификатор аккаунта в ATI.SU, для АТИ водителя имеет формат driver_{номер телефона}.

User ID - {ID аккаунта ATI.SU}.{ID контакта}, у АТИ водителя контакт ID контакта всегда 0.

АТИ код - код участника ATI.SU отображающийся в шапке сайта и в профиле участника, может совпадать с ID аккаунта. Код АТИ Водителя совпадает с ID.

Структура подписки

Подписка является ключевой сущностью в чате, большинство АПИ методов так или иначе отдают объект подписки в качестве ответа. Некоторые поля в теле подписки могут дублироваться или казаться избыточными, так же типы некоторых полей могут вызывать вопросы - все это связано с поддержкой старых версий, в новых версиях эти рудименты исчезнут.

Подписки диалогов и групповых чатов выглядят похоже, но имеют некоторые отличия.

Имя поляОписаниеТипПримерДиалогГруппаОбязательное поле
idID чатаstring28ba1e3b16974c32989b1ададада
channel_typeТип чатаstringgroupдадада
nameНазвание чатаstringmy awesome groupдадада
descriptionОписание чатаstringmy awesome group descriptionдадада
ownerUser ID владельца чатаstring890386.0дадада
userUser ID владельца подпискиstring1423414.0дадада
ctimeДата и время создания чата (GMT+3)string2021-01-22T11:25:15+00:00дадада
utimeДата и время последнего обновления подписки (GMT+3)string2021-03-24T08:51:53+00:00дадада
dtsUTC Timestamp последнего прочитанного пользователем сообщенияinteger1611314906749707данетда
utsUTC Timestamp последнего обновления подпискиinteger1622639302000000дадада
del_tsUTC Timestamp последней очистки историиinteger1622639302000000данетнет
tsUTC Timestamp последнего сообщенияinteger1622639302435456дадада
unreadКоличество непрочитанных сообщений в чатеstring0дадада
partnerАТИ Код партнераstring777данетда
partner_fullАТИ Код партнера с ID контактаstring777.0данетда
partner_idID Аккаунта АТИ партнераstring2716044данетда
usersСписок {АТИ код}.{ID контакта} участников чвтвlist[“14234140.0”, “777.0”]данетда
countКол-во участниковinteger3нетдада
inviteФлаг подписки с приглашениемbooltrueнетданет
removedФлаг подписки на удаленный каналbooltrueнетданет
excludedФлаг исключенной подпискиbooltrueнетданет
pinnedФлаг прикрепленной подпискиstring1даданет
lockedФлаг подписки с заблокированным юзеромstring1данетнет
complaintID пожаловавшегося пользователяstring1423414.0данетнет
complaint_reasonПричина блокировкиstringspamданетнет
tailХвост чатаdict{…}даданет

Описание методов

Чаты

Создание чата
post /messenger/1.1/chats/
Запрос
Модель
{...}
channel_type*: enum
[dialog, channel, group, ati_driver]

тип чата

name*: string

имя групп.чата/собеседника

description*: string

описание

id: string

{ID аккаунта партнера}.{id контакта} (только для типов dialog, ati_driver)

ati_id: string

{код в ATI.SU партнера}.{id контакта} (только для типов dialog, ati_driver)

is_open: boolean

открытый/закрытый (только для типов channel, group)

members: [string]

alias'ы (коды в ATI.SU) партнеров с contact_id (только для типов channel, group)

}
Пример запроса
curl 'https://api.ati.su/messenger/1.1/chats/' \
-X 'POST' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json' \
--data-raw '{"channel_type":"group","name":"Моя группа","is_open":true,"description":"Описание моей группы"}'
Ответ
200 Данные подписки
Модель
{...}
id: string

id чата

channel_type: string

тип чата

name: string

Название чата (имя собеседника)

ctime: string

время создания чата (iso)

utime: string

время последнего изменения (iso)

owner: string

создатель чата

description: string

описание чата (для диалогов - название фирмы)

users: [string]

alias участника (c contact_id)

partner: string

id партнера (без contact_id)

partner_id: string

id партнера (c contact_id)

partner_full: string

alias партнера (c contact_id)

count: integer

количество учасчтников группового чата (для диалогов - null)

dts: integer

timestamp последней очистки сообщений

unread: string

количество непрочитанных сообщений

user: string

id юзера (c contact_id)

uts: integer

timestamp последнего изменения

short_url: string

короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа

}
Пример
{...}
"id":"string",
"channel_type":"string",
"name":"string",
"ctime":"string",
"utime":"string",
"owner":"string",
"tail":{...},
"any-key":{...}
"channel":"string",
"delivered":false,
"stamp":"string",
"text":"string",
"ts":0,
"id":"string",
"user":"string",
"event":"join",
"from":"string",
"document":"/document/07a940594fdb4866aa9f8f48c192632d/",
"document_mimetype":"string",
"document_size":0,
"file_id":"string",
"file_mimetype":"string",
"file_name":"string",
"file_size":0
}
},
"description":"string",
"users":[...],
"string"
],
"partner":"string",
"partner_id":"string",
"partner_full":"string",
"count":0,
"dts":0,
"unread":"string",
"user":"string",
"uts":0,
"short_url":"string"
}
400 Ошибка валидации
Модель
null
Пример
null

Для создания диалогов и групповых чатов используется общий метод.

Диалог:

  • При добавлении диалога создастся 2 подписки, но подписка собеседника будет скрыта пока в нее не напишут.
  • Между двумя одинаковыми пользователями возможен только один диалог, при повторном создании будет возвращена та же самая подписка.
  • Диалог можно создать двумя способами: используя ID аккаунта либо АТИ код, в зависимости от способа необходимо использовать поля id и ati_id соответственно. Не стоит указывать оба поля при запросе.

Группа, канал:

  • По умолчанию при добавлении группы создастся чат с одним юзером в качестве участника (в ответ вернется его подписка).
  • Можно создать чат и одновременно пригласить нескольких пользователей указав их списком в поле members.
Обновление мета-данных группового чата
put /messenger/1.1/chats/{chat_id}/
Запрос
Модель
{...}
name: string

имя групп.чата

description: string

описание

}
Пример запроса
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/' \
-X 'PUT' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json' \
--data-raw '{"name":"Новое название группы","description":"Новое описание моей группы"}'
Ответ
200 Обновленные данные подписки
Модель
{...}
id: string

id чата

channel_type: string

тип чата

name: string

Название чата (имя собеседника)

ctime: string

время создания чата (iso)

utime: string

время последнего изменения (iso)

owner: string

создатель чата

description: string

описание чата (для диалогов - название фирмы)

users: [string]

alias участника (c contact_id)

partner: string

id партнера (без contact_id)

partner_id: string

id партнера (c contact_id)

partner_full: string

alias партнера (c contact_id)

count: integer

количество учасчтников группового чата (для диалогов - null)

dts: integer

timestamp последней очистки сообщений

unread: string

количество непрочитанных сообщений

user: string

id юзера (c contact_id)

uts: integer

timestamp последнего изменения

short_url: string

короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа

}
Пример
{...}
"id":"string",
"channel_type":"string",
"name":"string",
"ctime":"string",
"utime":"string",
"owner":"string",
"tail":{...},
"any-key":{...}
"channel":"string",
"delivered":false,
"stamp":"string",
"text":"string",
"ts":0,
"id":"string",
"user":"string",
"event":"join",
"from":"string",
"document":"/document/07a940594fdb4866aa9f8f48c192632d/",
"document_mimetype":"string",
"document_size":0,
"file_id":"string",
"file_mimetype":"string",
"file_name":"string",
"file_size":0
}
},
"description":"string",
"users":[...],
"string"
],
"partner":"string",
"partner_id":"string",
"partner_full":"string",
"count":0,
"dts":0,
"unread":"string",
"user":"string",
"uts":0,
"short_url":"string"
}
400 Ошибка валидации
Модель
null
Пример
null
403 Только владелец канала/группы может выполнять это действие
Модель
null
Пример
null
404 Чат не найден
Модель
null
Пример
null

Метод используется для изменения имени или описания группового чата администратором.

Удаление группового чата владельцем
delete /messenger/1.1/chats/{chat_id}/
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/' \
-X 'DELETE' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
204 Канал удален
Модель
null
Пример
null
403 Пользователь не является владельцем группового чата
Модель
null
Пример
null
404 Не найден групповой чат или пользователь в этом чате
Модель
null
Пример
null

При удалении канала или группы все подписки участников будут помечены флагом removed.

Подписки

Получение всех подписок пользователя
get /messenger/1.1/subscriptions/
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/subscriptions/' \
-X 'GET' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 Подписки пользователя
Модель
[{...}]
id: string

id чата

channel_type: string

тип чата

name: string

Название чата (имя собеседника)

ctime: string

время создания чата (iso)

utime: string

время последнего изменения (iso)

owner: string

создатель чата

description: string

описание чата (для диалогов - название фирмы)

users: [string]

alias участника (c contact_id)

partner: string

id партнера (без contact_id)

partner_id: string

id партнера (c contact_id)

partner_full: string

alias партнера (c contact_id)

count: integer

количество учасчтников группового чата (для диалогов - null)

dts: integer

timestamp последней очистки сообщений

unread: string

количество непрочитанных сообщений

user: string

id юзера (c contact_id)

uts: integer

timestamp последнего изменения

short_url: string

короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа

}]
Пример
[...]
{...}
"id":"string",
"channel_type":"string",
"name":"string",
"ctime":"string",
"utime":"string",
"owner":"string",
"tail":{...},
"any-key":{...}
"channel":"string",
"delivered":false,
"stamp":"string",
"text":"string",
"ts":0,
"id":"string",
"user":"string",
"event":"join",
"from":"string",
"document":"/document/07a940594fdb4866aa9f8f48c192632d/",
"document_mimetype":"string",
"document_size":0,
"file_id":"string",
"file_mimetype":"string",
"file_name":"string",
"file_size":0
}
},
"description":"string",
"users":[...],
"string"
],
"partner":"string",
"partner_id":"string",
"partner_full":"string",
"count":0,
"dts":0,
"unread":"string",
"user":"string",
"uts":0,
"short_url":"string"
}
]

Метод возвращает постраничный список подписок.

Получение информации о подписке
get /messenger/1.1/subscriptions/{chat_id}/
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/subscriptions/{chat_id}/' \
-X 'GET' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 Подписки пользователя
Модель
{...}
id: string

id чата

channel_type: string

тип чата

name: string

Название чата (имя собеседника)

ctime: string

время создания чата (iso)

utime: string

время последнего изменения (iso)

owner: string

создатель чата

description: string

описание чата (для диалогов - название фирмы)

users: [string]

alias участника (c contact_id)

partner: string

id партнера (без contact_id)

partner_id: string

id партнера (c contact_id)

partner_full: string

alias партнера (c contact_id)

count: integer

количество учасчтников группового чата (для диалогов - null)

dts: integer

timestamp последней очистки сообщений

unread: string

количество непрочитанных сообщений

user: string

id юзера (c contact_id)

uts: integer

timestamp последнего изменения

short_url: string

короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа

}
Пример
{...}
"id":"string",
"channel_type":"string",
"name":"string",
"ctime":"string",
"utime":"string",
"owner":"string",
"tail":{...},
"any-key":{...}
"channel":"string",
"delivered":false,
"stamp":"string",
"text":"string",
"ts":0,
"id":"string",
"user":"string",
"event":"join",
"from":"string",
"document":"/document/07a940594fdb4866aa9f8f48c192632d/",
"document_mimetype":"string",
"document_size":0,
"file_id":"string",
"file_mimetype":"string",
"file_name":"string",
"file_size":0
}
},
"description":"string",
"users":[...],
"string"
],
"partner":"string",
"partner_id":"string",
"partner_full":"string",
"count":0,
"dts":0,
"unread":"string",
"user":"string",
"uts":0,
"short_url":"string"
}
404 Канал не найден
Модель
null
Пример
null

Участники групповых чатов

Получение списка участников
get /messenger/1.1/chats/{chat_id}/users/
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/users/' \
-X 'GET' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 Список участников
Модель
[{...}]
id: string

id юзера (c contact_id)

code: string

alias юзера (без contact_id)

name: string

имя юзера

company: string

название компании

email: string

email юзера

fax: string

факс юзера

icq: string

icq юзера

mobile: string

номер мобильного телефона юзера

phone: string

номер телефона юзера

skype: string

skype юзера

}]
Пример
[...]
{...}
"id":"string",
"code":"string",
"name":"string",
"company":"string",
"email":"string",
"fax":"string",
"icq":"string",
"mobile":"string",
"phone":"string",
"skype":"string"
}
]
403 У вас нет прав. Только администратор может совершать это действие.
Модель
null
Пример
null
404 Канал не найден, Пользователь в групповом чате не найден
Модель
null
Пример
null

С помощью параметров метода можно запрашивать как приглашенных так и текущих участников группового чата.

Приглашение пользователя в групповой чат
post /messenger/1.1/chats/{chat_id}/users/{user_id}/
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/users/{user_id}/' \
-X 'POST' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 Подписка добавленного пользователя
Модель
{...}
id: string

id чата

channel_type: string

тип чата

name: string

Название чата (имя собеседника)

ctime: string

время создания чата (iso)

utime: string

время последнего изменения (iso)

owner: string

создатель чата

description: string

описание чата (для диалогов - название фирмы)

users: [string]

alias участника (c contact_id)

partner: string

id партнера (без contact_id)

partner_id: string

id партнера (c contact_id)

partner_full: string

alias партнера (c contact_id)

count: integer

количество учасчтников группового чата (для диалогов - null)

dts: integer

timestamp последней очистки сообщений

unread: string

количество непрочитанных сообщений

user: string

id юзера (c contact_id)

uts: integer

timestamp последнего изменения

short_url: string

короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа

}
Пример
{...}
"id":"string",
"channel_type":"string",
"name":"string",
"ctime":"string",
"utime":"string",
"owner":"string",
"tail":{...},
"any-key":{...}
"channel":"string",
"delivered":false,
"stamp":"string",
"text":"string",
"ts":0,
"id":"string",
"user":"string",
"event":"join",
"from":"string",
"document":"/document/07a940594fdb4866aa9f8f48c192632d/",
"document_mimetype":"string",
"document_size":0,
"file_id":"string",
"file_mimetype":"string",
"file_name":"string",
"file_size":0
}
},
"description":"string",
"users":[...],
"string"
],
"partner":"string",
"partner_id":"string",
"partner_full":"string",
"count":0,
"dts":0,
"unread":"string",
"user":"string",
"uts":0,
"short_url":"string"
}
400 Пользователь не является владельцем группового чата, Канал был удален, Код пользователя задан в неверном формате
Модель
null
Пример
null
403 У вас нет прав. Только администратор может совершать это действие.
Модель
null
Пример
null
404 Группа не найдена
Модель
null
Пример
null

При вызове метода у приглашенного пользователя создастся подписка с флагом invite.

Исключение участника из группового чата
delete /messenger/1.1/chats/{chat_id}/users/{user_id}/
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/users/{user_id}/' \
-X 'DELETE' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
204 Подписка удалена
Модель
null
Пример
null
400 Код пользователя задан в неверном формате
Модель
null
Пример
null
403 Пользователь не является владельцем группового чата, Групповой чат был удален
Модель
null
Пример
null
404 Канал не найден
Модель
null
Пример
null

При вызове метода у исключенного пользователя в подписку добавится флаг excluded.

Принятие приглашения в групповой чат
patch /messenger/1.1/subscriptions/{chat_id}/
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/subscriptions/{chat_id}/' \
-X 'PATCH' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
204 Приглашение принято
Модель
null
Пример
null
400 У пользователя нет приглашения
Модель
null
Пример
null
404 Канал не найден
Модель
null
Пример
null

После принятия приглашения флаг invite должен пропасть из подписки.

Удаление себя из группового чата или удаление приглашения
delete /messenger/1.1/subscriptions/{chat_id}/
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/subscriptions/{chat_id}/' \
-X 'DELETE' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
204 Подписка на групповой чат удалена
Модель
null
Пример
null
403 Нельзя удалить администратора группового чата
Модель
null
Пример
null
404 Канал не найден
Модель
null
Пример
null

При вызове метода подписка удалится из базы данных.

Сообщения

Получение истории сообщений
get /messenger/1.1/chats/{chat_id}/history/
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/history/' \
-X 'GET' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 список сообщения
Модель
[{...}]
channel: string

id чата

delivered: boolean

доставлено/недоставлено

stamp: string

таймстемп (isoformat) сообщения

text: string

текст сообщения

ts: integer

таймстемп (unix) сообщения

id: string

id сообщения

user: string

id отправителя, отстутствует в системных событиях

event: enum
[join, exclude, quit, invite, create, system_message]

тип системного события

from: string

Имя отправителя сообщения

document: string

ссылка на документ в атидоках

document_mimetype: string
document_size: integer
file_id: string

id загруженного в filestorage файла

file_mimetype: string
file_name: string
file_size: integer
}]
Пример
[...]
{...}
"channel":"string",
"delivered":false,
"stamp":"string",
"text":"string",
"ts":0,
"id":"string",
"user":"string",
"event":"join",
"from":"string",
"document":"/document/07a940594fdb4866aa9f8f48c192632d/",
"document_mimetype":"string",
"document_size":0,
"file_id":"string",
"file_mimetype":"string",
"file_name":"string",
"file_size":0
}
]

Метод возвращает постраничный список сообщений.

Отправка сообщения
post /messenger/1.2/chats/{chat_id}/messages
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.2/chats/{chat_id}/messages' \
-X 'POST' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: multipart/form-data; boundary=boundary'
Ответ
200 json сообщения
Модель
{...}
channel: string

id чата

delivered: boolean

доставлено/недоставлено

stamp: string

таймстемп (isoformat) сообщения

text: string

текст сообщения

ts: integer

таймстемп (unix) сообщения

id: string

id сообщения

user: string

id отправителя, отстутствует в системных событиях

event: enum
[join, exclude, quit, invite, create, system_message]

тип системного события

from: string

Имя отправителя сообщения

document: string

ссылка на документ в атидоках

document_mimetype: string
document_size: integer
file_id: string

id загруженного в filestorage файла

file_mimetype: string
file_name: string
file_size: integer
}
Пример
{...}
"channel":"string",
"delivered":false,
"stamp":"string",
"text":"string",
"ts":0,
"id":"string",
"user":"string",
"event":"join",
"from":"string",
"document":"/document/07a940594fdb4866aa9f8f48c192632d/",
"document_mimetype":"string",
"document_size":0,
"file_id":"string",
"file_mimetype":"string",
"file_name":"string",
"file_size":0
}

Метод отправки сообщения. Поддерживаются текстовые сообщения, сообщения с картинкой или файлом, а также сообщения с геометкой. Одно сообщение должно содержать либо текст, либо одно вложение (картинку или файл), либо геометку.

Для отправки картинки обязательно прислать одновременно image, image_height и image_width.

Для отправки геометки обязательно прислать одновременно geo_longitude и geo_latitude.

Получение прикреплённого к сообщению изображения
get /messenger/1.2/messages/{message_id}/image
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.2/messages/{message_id}/image' \
-X 'GET' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 Картинка, прикреплённая к сообщению
Модель
null
Пример
null

Получение изображения, прикреплённого к сообщению. Работает только для сообщений, у которых image_id не равен null. Использовать image_id не нужно: достаточно передать идентификатор сообщения message_id.

Получение прикреплённого к сообщению файла
get /messenger/1.2/messages/{message_id}/file
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.2/messages/{message_id}/file' \
-X 'GET' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 Файл, прикреплённый к сообщению
Модель
null
Пример
null

Получение файла, прикреплённого к сообщению. Работает только для сообщений, у которых file_id не равен null. Использовать file_id не нужно: достаточно передать идентификатор сообщения message_id.

Прочие методы

Изменение настроек подписки
post /messenger/1.1/chats/{chat_id}/settings/
Запрос
Модель
{...}
pin: boolean
hidden: boolean
}
Пример запроса
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/settings/' \
-X 'POST' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json' \
--data-raw '{"pin":true,"hidden":false}'
Ответ
200 Возвращает объект подписки с обновленными настройками
Модель
{...}
id: string

id чата

channel_type: string

тип чата

name: string

Название чата (имя собеседника)

ctime: string

время создания чата (iso)

utime: string

время последнего изменения (iso)

owner: string

создатель чата

description: string

описание чата (для диалогов - название фирмы)

users: [string]

alias участника (c contact_id)

partner: string

id партнера (без contact_id)

partner_id: string

id партнера (c contact_id)

partner_full: string

alias партнера (c contact_id)

count: integer

количество учасчтников группового чата (для диалогов - null)

dts: integer

timestamp последней очистки сообщений

unread: string

количество непрочитанных сообщений

user: string

id юзера (c contact_id)

uts: integer

timestamp последнего изменения

short_url: string

короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа

}
Пример
{...}
"id":"string",
"channel_type":"string",
"name":"string",
"ctime":"string",
"utime":"string",
"owner":"string",
"tail":{...},
"any-key":{...}
"channel":"string",
"delivered":false,
"stamp":"string",
"text":"string",
"ts":0,
"id":"string",
"user":"string",
"event":"join",
"from":"string",
"document":"/document/07a940594fdb4866aa9f8f48c192632d/",
"document_mimetype":"string",
"document_size":0,
"file_id":"string",
"file_mimetype":"string",
"file_name":"string",
"file_size":0
}
},
"description":"string",
"users":[...],
"string"
],
"partner":"string",
"partner_id":"string",
"partner_full":"string",
"count":0,
"dts":0,
"unread":"string",
"user":"string",
"uts":0,
"short_url":"string"
}
400 Ошибка валидации
Модель
null
Пример
null
403 Скрыть канал можно только после принятия приглашения
Модель
null
Пример
null
404 Канал не найден
Модель
null
Пример
null

Изменение настроек подписки (скрыть/закрепить).

Приглашение нескольких пользователей в групповой чат
post /messenger/1.1/chats/{chat_id}/users/
Запрос
Модель
{...}
members*: [string]
}
Пример запроса
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/users/' \
-X 'POST' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json' \
--data-raw '{"members":["string"]}'
Ответ
200 Подписки добавленных пользователя
Модель
{...}
id: string

id чата

channel_type: string

тип чата

name: string

Название чата (имя собеседника)

ctime: string

время создания чата (iso)

utime: string

время последнего изменения (iso)

owner: string

создатель чата

description: string

описание чата (для диалогов - название фирмы)

users: [string]

alias участника (c contact_id)

partner: string

id партнера (без contact_id)

partner_id: string

id партнера (c contact_id)

partner_full: string

alias партнера (c contact_id)

count: integer

количество учасчтников группового чата (для диалогов - null)

dts: integer

timestamp последней очистки сообщений

unread: string

количество непрочитанных сообщений

user: string

id юзера (c contact_id)

uts: integer

timestamp последнего изменения

short_url: string

короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа

}
Пример
{...}
"id":"string",
"channel_type":"string",
"name":"string",
"ctime":"string",
"utime":"string",
"owner":"string",
"tail":{...},
"any-key":{...}
"channel":"string",
"delivered":false,
"stamp":"string",
"text":"string",
"ts":0,
"id":"string",
"user":"string",
"event":"join",
"from":"string",
"document":"/document/07a940594fdb4866aa9f8f48c192632d/",
"document_mimetype":"string",
"document_size":0,
"file_id":"string",
"file_mimetype":"string",
"file_name":"string",
"file_size":0
}
},
"description":"string",
"users":[...],
"string"
],
"partner":"string",
"partner_id":"string",
"partner_full":"string",
"count":0,
"dts":0,
"unread":"string",
"user":"string",
"uts":0,
"short_url":"string"
}
400 Пользователь не является владельцем группового чата, Канал был удален, Код пользователя задан в неверном формате
Модель
null
Пример
null
403 У вас нет прав. Только администратор может совершать это действие.
Модель
null
Пример
null
404 Группа не найдена
Модель
null
Пример
null

По умолчанию используются id-шники аккаунтов, но если флаг ati_id выставлен в true, будут использованы именно коды.

Удаление сообщения из диалога
delete /messenger/1.1/chats/{chat_id}/messages/{ts_or_id}/
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/messages/{ts_or_id}/' \
-X 'DELETE' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 Возвращает объект подписки с обновленным tail и ts
Модель
{...}
id: string

id чата

channel_type: string

тип чата

name: string

Название чата (имя собеседника)

ctime: string

время создания чата (iso)

utime: string

время последнего изменения (iso)

owner: string

создатель чата

description: string

описание чата (для диалогов - название фирмы)

users: [string]

alias участника (c contact_id)

partner: string

id партнера (без contact_id)

partner_id: string

id партнера (c contact_id)

partner_full: string

alias партнера (c contact_id)

count: integer

количество учасчтников группового чата (для диалогов - null)

dts: integer

timestamp последней очистки сообщений

unread: string

количество непрочитанных сообщений

user: string

id юзера (c contact_id)

uts: integer

timestamp последнего изменения

short_url: string

короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа

}
Пример
{...}
"id":"string",
"channel_type":"string",
"name":"string",
"ctime":"string",
"utime":"string",
"owner":"string",
"tail":{...},
"any-key":{...}
"channel":"string",
"delivered":false,
"stamp":"string",
"text":"string",
"ts":0,
"id":"string",
"user":"string",
"event":"join",
"from":"string",
"document":"/document/07a940594fdb4866aa9f8f48c192632d/",
"document_mimetype":"string",
"document_size":0,
"file_id":"string",
"file_mimetype":"string",
"file_name":"string",
"file_size":0
}
},
"description":"string",
"users":[...],
"string"
],
"partner":"string",
"partner_id":"string",
"partner_full":"string",
"count":0,
"dts":0,
"unread":"string",
"user":"string",
"uts":0,
"short_url":"string"
}

Удалять сообщения можно в диалогах и только если они не прочитаны собеседником. В качестве идентификатора можно использовать как непосредственно id сообщения так и его временную метку в UTC.

Очистка истории
delete /messenger/1.1/chats/{chat_id}/history/
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/history/' \
-X 'DELETE' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 Возвращает объект подписки с обновленным tail и ts
Модель
{...}
id: string

id чата

channel_type: string

тип чата

name: string

Название чата (имя собеседника)

ctime: string

время создания чата (iso)

utime: string

время последнего изменения (iso)

owner: string

создатель чата

description: string

описание чата (для диалогов - название фирмы)

users: [string]

alias участника (c contact_id)

partner: string

id партнера (без contact_id)

partner_id: string

id партнера (c contact_id)

partner_full: string

alias партнера (c contact_id)

count: integer

количество учасчтников группового чата (для диалогов - null)

dts: integer

timestamp последней очистки сообщений

unread: string

количество непрочитанных сообщений

user: string

id юзера (c contact_id)

uts: integer

timestamp последнего изменения

short_url: string

короткий хэш для группового чата, используется в ссылке для приглашения, содерижтся только в подписке админа

}
Пример
{...}
"id":"string",
"channel_type":"string",
"name":"string",
"ctime":"string",
"utime":"string",
"owner":"string",
"tail":{...},
"any-key":{...}
"channel":"string",
"delivered":false,
"stamp":"string",
"text":"string",
"ts":0,
"id":"string",
"user":"string",
"event":"join",
"from":"string",
"document":"/document/07a940594fdb4866aa9f8f48c192632d/",
"document_mimetype":"string",
"document_size":0,
"file_id":"string",
"file_mimetype":"string",
"file_name":"string",
"file_size":0
}
},
"description":"string",
"users":[...],
"string"
],
"partner":"string",
"partner_id":"string",
"partner_full":"string",
"count":0,
"dts":0,
"unread":"string",
"user":"string",
"uts":0,
"short_url":"string"
}

Очистить переписку можно только в диалогах, причем история изменится лишь для владельца подписки, у собеседника все останется как есть. При вызове метода в подписку добавится поле del_ts, содержащее временную метку, начиная с которой сообщения не будут возвращаться в методе history.

Получение счетчика чатов с непрочитанными сообщениями
get /messenger/1.1/inbox/
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/inbox/' \
-X 'GET' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 Счетчик непрочитанных
Модель
{...}
unread: integer
}
Пример
{...}
"unread":0
}

Метод вернет количество чатов с непрочитанными сообщениями.

Получение количества непрочитанных чатов по типам (все/диалоги/групповые чаты)
get /messenger/1.1/subscriptions/unread/
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/subscriptions/unread/' \
-X 'GET' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 Данные по количеству непрочитанных чатов по типу
Модель
{...}
all: integer
dialogs: integer
groups: integer
}
Пример
{...}
"all":0,
"dialogs":0,
"groups":0
}

Метод аналогичный inbox, но счетчики будут разбиты по типам чатов.