API
ITR Messenger предоставляет REST API для работы с чатами, сообщениями, файлами и звонками. Для real-time событий используется WebSocket.
Базовый URL
Разработка: http://localhost:4000/api/v1. Production: https://<ваш-домен>/api/v1.
Аутентификация
Большинство эндпоинтов требуют JWT. Токен передаётся в заголовке:
Authorization: Bearer <access_token>
После входа (POST /auth/login) в ответ приходят access_token и refresh_token. Истёкший access обновляется через POST /auth/refresh с телом { "refresh_token": "..." }.
Лимиты
Ориентировочно: 100 запросов в минуту для аутентифицированных пользователей, 20 — для неаутентифицированных. Точные значения задаются в конфигурации бэкенда.
WebSocket
Подключение к /socket (Phoenix Socket). После подключения клиент присоединяется к каналу user:<user_id>. По каналу приходят события: new_message, incoming_call, participant_joined, call_accepted и др. Требуется передача токена при подключении (например, в параметрах).
Authentication
POST /auth/register— регистрация (тело:userсemailилиphone,password,display_name).POST /auth/login— вход поemail+passwordилиphone+password.POST /auth/verify-2fa— подтверждение 2FA (если включено):token,code(6 цифр).POST /auth/refresh— обновление access токена поrefresh_token.
Users
GET /users/me— текущий пользователь.PATCH /users/me— обновление профиля (user.display_name,username,avatar_url,bio).GET /users/search?q=— поиск пользователей по строке.GET /users/:id— пользователь по ID.
Chats
GET /chats— список чатов текущего пользователя.POST /chats/direct— создать личный чат (user_id).POST /chats/group— создать групповой чат (chat.name, опциональноdescription,member_ids).GET /chats/:id— получить чат.PATCH /chats/:id— обновить чат (название, описание).DELETE /chats/:id— удалить чат.GET /chats/:id/messages— сообщения чата (опциональноlimit,before— ID сообщения для пагинации).
Files
POST /files/upload— загрузка файла (multipart:file, опциональноchat_id).GET /files/:id— информация о файле.GET /files/:id/download— получить URL для скачивания (в ответеurl,expires_in).DELETE /files/:id— удалить файл.
Calls
POST /calls/start— начать звонок (chat_id, опциональноtype:video|audio).GET /calls/:id— информация о звонке (в т.ч. участники,chat_typeдля различения личного/группового).POST /calls/:id/join— присоединиться к звонку.POST /calls/:id/leave— покинуть звонок.GET /calls/:id/token— получить токен и URL для подключения к LiveKit (token,room_name,livekit_url).POST /calls/:id/invite— пригласить пользователя в звонок (тело:user_id). В групповых чатах приглашать может только инициатор (хост).POST /calls/:id/participants/:user_id/remove— исключить участника из звонка. Только инициатор звонка.
Mini Apps
GET /miniapps— список доступных мини-приложений.
Полный перечень эндпоинтов с кодами ответов и схемами — в разделе Справочник API.