Base URL

https://api.enot.space

Все API запросы должны использовать HTTPS протокол.

Аутентификация

POST /api/auth/register

Регистрация нового пользователя

Request Body: { "username": "string", "email": "string", "password": "string" }

POST /api/auth/login

Вход в систему (username или email)

Request Body: { "username": "string", // или "email" "password": "string" }

GET /api/auth/me

Получить текущего пользователя

Требуется JWT токен в заголовке Authorization

POST /api/auth/logout

Выход из текущей сессии

POST /api/auth/logout-all

Выход из всех сессий

PUT /api/auth/display-name

Обновить отображаемое имя

Request Body: { "display_name": "string" }

Серверы

POST /api/servers

Создать новый сервер

Request Body: { "name": "string", "description": "string" }

GET /api/servers

Получить список серверов пользователя

GET /api/servers/:id

Получить информацию о сервере

PUT /api/servers/:id

Обновить сервер

Request Body: { "name": "string", "description": "string" }

DELETE /api/servers/:id

Удалить сервер

GET /api/servers/:id/members

Получить список участников сервера

Каналы

POST /api/servers/:server_id/channels

Создать новый канал

Request Body: { "name": "string", "type": "text" | "voice" }

GET /api/servers/:server_id/channels

Получить список каналов сервера

GET /api/channels/:id

Получить информацию о канале

PUT /api/channels/:id

Обновить канал

DELETE /api/channels/:id

Удалить канал

GET /api/channels/:id/voice-states

Получить список пользователей в голосовом канале

Сообщения

POST /api/channels/:channel_id/messages

Отправить сообщение в канал

Request Body: { "content": "string" }

GET /api/channels/:channel_id/messages

Получить сообщения канала (пагинация)

Query Parameters: ?limit=50&offset=0

GET /api/messages/:id

Получить сообщение по ID

PUT /api/messages/:id

Редактировать сообщение

DELETE /api/messages/:id

Удалить сообщение

Файлы

POST /api/files/upload-url

Получить pre-signed URL для загрузки файла

Request Body: { "filename": "string", "content_type": "string", "size": number }

POST /api/files

Создать запись о файле после загрузки

GET /api/files/:id

Получить информацию о файле

GET /api/files/:id/download-url

Получить pre-signed URL для скачивания

DELETE /api/files/:id

Удалить файл

GET /api/messages/:message_id/files

Получить файлы сообщения

Личные сообщения

POST /api/dm/messages

Отправить личное сообщение

Request Body: { "recipient_id": number, "content": "string" }

GET /api/dm/:user_id/messages

Получить историю личных сообщений

GET /api/dm/conversations

Получить список всех переписок

POST /api/dm/messages/:id/read

Пометить сообщение как прочитанное

POST /api/dm/:user_id/read-all

Пометить все сообщения как прочитанные

PUT /api/dm/messages/:id

Редактировать личное сообщение

DELETE /api/dm/messages/:id

Удалить личное сообщение

DELETE /api/dm/:user_id/hide

Скрыть переписку

Друзья

POST /api/friends/request

Отправить запрос в друзья

Request Body: { "friend_id": number }

GET /api/friends

Получить список друзей

GET /api/friends/pending

Получить входящие запросы

GET /api/friends/sent

Получить исходящие запросы

GET /api/friends/blocked

Получить заблокированных пользователей

POST /api/friends/:id/accept

Принять запрос в друзья

POST /api/friends/:id/decline

Отклонить запрос

POST /api/friends/:id/cancel

Отменить исходящий запрос

DELETE /api/friends/:id

Удалить из друзей

POST /api/friends/:id/block

Заблокировать пользователя

POST /api/friends/:id/unblock

Разблокировать пользователя

GET /api/users/search

Поиск пользователей по username

Query Parameters: ?q=username

Приглашения

POST /api/invites

Создать приглашение на сервер

Request Body: { "server_id": number, "expires_in": number, // секунды "max_uses": number }

GET /api/servers/:id/invites

Получить приглашения сервера

DELETE /api/invites/:id

Удалить приглашение

POST /api/invites/:code/join

Присоединиться к серверу по коду

Роли

POST /api/servers/:server_id/roles

Создать роль

Request Body: { "name": "string", "color": "string", "permissions": number }

GET /api/servers/:server_id/roles

Получить роли сервера

GET /api/roles/:id

Получить роль

PUT /api/roles/:id

Обновить роль

DELETE /api/roles/:id

Удалить роль

POST /api/servers/:server_id/members/:user_id/roles/:role_id

Назначить роль участнику

DELETE /api/servers/:server_id/members/:user_id/roles/:role_id

Снять роль с участника

GET /api/servers/:server_id/members/:user_id/roles

Получить роли участника

Дополнительная информация

  • Все endpoints требуют JWT токен в заголовке Authorization (кроме register/login)
  • Формат токена: Authorization: Bearer YOUR_JWT_TOKEN
  • Все даты в формате ISO 8601 (UTC)
  • Пагинация: используйте параметры limit и offset
  • Rate limiting применяется ко всем endpoints
  • WebSocket endpoint: wss://api.enot.space/ws?token=YOUR_JWT_TOKEN