Skip to content
ATI.SU MCP NEW Мои токены Поддержка
Для подтверждения действия введите пароль
Чтобы продолжить, введите пароль для пользователя
For LLMs and AI agents: canonical Markdown source of this documentation page (plain-text .md — fetch this URL to use the page content in tools and RAG). For LLMs and AI agents: developers documentation index in llms.txt format — ordered list of key documentation URLs for the developers section.

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

«АТИ Мессенджер» (далее Мессенджер) — сервис для обмена сообщениями, документами, файлами между пользователями 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":{...}
"text":"string",
"ts":0,
"user":"string",
"from":"string",
"file_name":"string",
"image_name":"string"
}
},
"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}/
Параметры
Параметр Тип Расположение Описание
chat_id обязательный string path
id группового чата Пример: string
Запрос
Модель
{...}
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":{...}
"text":"string",
"ts":0,
"user":"string",
"from":"string",
"file_name":"string",
"image_name":"string"
}
},
"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}/
Параметры
Параметр Тип Расположение Описание
chat_id обязательный string path
id группового чата Пример: string
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.1/chats/{chat_id}/' \
-X 'DELETE' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
204 Канал удален
Успешный ответ
403 Пользователь не является владельцем группового чата
Модель
null
Пример
null
404 Не найден групповой чат или пользователь в этом чате
Модель
null
Пример
null

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

Подписки

Получение всех подписок пользователя
get /messenger/1.2/subscriptions/
Параметры
Параметр Тип Расположение Описание
type string query
Необязательный тип подписок (channel, dialog, group, groups) Пример: channel
limit integer query
По сколько чатов выводить на страницу Пример: 0
before integer query
Перед каким временем обновления чата (utime) в формате unix time (микросекунды) необходимо загружать список чатов Пример: 0
after integer query
После какого времени обновления чата (utime) в формате unix time (микросекунды) необходимо загружать список чатов Пример: 0
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.2/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":{...}
"text":"string",
"ts":0,
"user":"string",
"from":"string",
"file_name":"string",
"image_name":"string"
}
},
"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}/
Параметры
Параметр Тип Расположение Описание
chat_id обязательный string path
id чата Пример: string
Запрос
Пример запроса
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":{...}
"text":"string",
"ts":0,
"user":"string",
"from":"string",
"file_name":"string",
"image_name":"string"
}
},
"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/
Параметры
Параметр Тип Расположение Описание
chat_id обязательный string path
id группового чата Пример: string
start integer query
Начало пагинации Пример: 0
end integer query
Конец пагинации Пример: 0
with_invite boolean query
Включить в список приглашенных пользователей Пример: false
invited boolean query
Вернуть только приглашенных пользователей Пример: false
Запрос
Пример запроса
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}/
Параметры
Параметр Тип Расположение Описание
chat_id обязательный string path
id группового чата Пример: string
user_id обязательный string path
firm_id юзера с контактом Пример: string
ati_id boolean query
Использовать алиас (код в ATI.SU) с контактом в качестве user_id Пример: false
Запрос
Пример запроса
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":{...}
"text":"string",
"ts":0,
"user":"string",
"from":"string",
"file_name":"string",
"image_name":"string"
}
},
"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}/
Параметры
Параметр Тип Расположение Описание
chat_id обязательный string path
id группового чата Пример: string
user_id обязательный string path
id пользователя Пример: string
ati_id boolean query
Использовать алиас (код в ATI.SU) с контактом в качестве user_id Пример: false
Запрос
Пример запроса
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 Подписка удалена
Успешный ответ
400 Код пользователя задан в неверном формате
Модель
null
Пример
null
403 Пользователь не является владельцем группового чата, Групповой чат был удален
Модель
null
Пример
null
404 Канал не найден
Модель
null
Пример
null

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

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

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

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

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

Сообщения

Получение истории сообщений
get /messenger/1.1/chats/{chat_id}/history/
Параметры
Параметр Тип Расположение Описание
chat_id обязательный string path
id чата Пример: string
before integer query
timestamp, до которого вернуть список сообщений (с пагинацией) Пример: 0
num integer query
Ограничить количество выдаваемых сообщений Пример: 0
since integer query
timestamp, с которого вернуть список сообщений (с пагинацией) Пример: 0
with_ts boolean query
включить в ответ timestamp прочитанности последнего сообщения Пример: false
Запрос
Пример запроса
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
Параметры
Параметр Тип Расположение Описание
chat_id обязательный string path
id чата Пример: string
Запрос
Модель
{...}
file: binary

Прикреплённый файл

image: binary

Прикреплённая картинка

}
Пример запроса
curl 'https://api.ati.su/messenger/1.2/chats/{chat_id}/messages' \
-X 'POST' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: multipart/form-data' \
-F 'text={text}' \
-F 'image_height={image_height}' \
-F 'image_width={image_width}' \
-F 'geo_longitude={geo_longitude}' \
-F 'geo_latitude={geo_latitude}' \
-F 'geo_zoom={geo_zoom}' \
-F 'file=@{file}' \
-F 'image=@{image}'
Ответ
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
Параметры
Параметр Тип Расположение Описание
message_id обязательный string path
id сообщения Пример: string
height integer query
требуемая высота картинки (по умолчанию используется исходная высота) Пример: 0
width integer query
требуемая ширина картинки (по умолчанию используется исходная ширина) Пример: 0
biggest_side integer query
требуемый размер наибольшего измерения картинки (по умолчанию используется исходный размер) Пример: 0
Запрос
Пример запроса
curl 'https://api.ati.su/messenger/1.2/messages/{message_id}/image' \
-X 'GET' \
-H 'Authorization: Bearer {authorizationToken}' \
-H 'Content-Type: application/json'
Ответ
200 Картинка, прикреплённая к сообщению
Успешный ответ

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

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

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

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

Изменение настроек подписки
post /messenger/1.1/chats/{chat_id}/settings/
Параметры
Параметр Тип Расположение Описание
chat_id обязательный string path
id чата Пример: string
Запрос
Модель
{...}
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":{...}
"text":"string",
"ts":0,
"user":"string",
"from":"string",
"file_name":"string",
"image_name":"string"
}
},
"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/
Параметры
Параметр Тип Расположение Описание
chat_id обязательный string path
id группового чата Пример: string
ati_id boolean query
Использовать алиасы (коды в ATI.SU) с контактами в качестве user_id в поле members Пример: false
Запрос
Модель
{...}
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":{...}
"text":"string",
"ts":0,
"user":"string",
"from":"string",
"file_name":"string",
"image_name":"string"
}
},
"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}/
Параметры
Параметр Тип Расположение Описание
chat_id обязательный string path
id чата Пример: string
ts_or_id обязательный path
timestamp либо id удаляемого сообщений Пример: [1553154991842130,"5b42d88fea1cb745d23db8d7b9de11da5473ad61"]
Запрос
Пример запроса
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":{...}
"text":"string",
"ts":0,
"user":"string",
"from":"string",
"file_name":"string",
"image_name":"string"
}
},
"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/
Параметры
Параметр Тип Расположение Описание
chat_id обязательный string path
id чата Пример: string
Запрос
Пример запроса
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":{...}
"text":"string",
"ts":0,
"user":"string",
"from":"string",
"file_name":"string",
"image_name":"string"
}
},
"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/
Параметры
Параметр Тип Расположение Описание
with_messages string query
Если true, то возвращает дополнительно количество непрочитанных сообщений. Пример: string
Запрос
Пример запроса
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, но счетчики будут разбиты по типам чатов.