Серверы
Серверы — основные рабочие пространства Saschat. Каждый сервер содержит каналы, роли и участников.
При создании сервера автоматически создаётся роль @everyone с базовыми правами и текстовый канал general.
Список публичных серверов
GET /servers
Аутентификация не требуется.
Ответ (200): массив ServerResponse.
[ { "id": "550e8400-e29b-41d4-a716-446655440000", "name": "My Server", "description": "Описание сервера", "iconUrl": null, "ownerId": "user-uuid", "ownerFederation": "https://auth.example.com", "isPublic": true, "memberCount": 42, "createdAt": "2025-01-15T10:30:00Z" } ]
Мои серверы
GET /servers/me
Возвращает серверы, в которых состоит текущий пользователь.
Ответ (200): массив ServerResponse.
Создание сервера
POST /servers
Тело запроса:
{ "name": "My Server", "description": "Описание сервера", "isPublic": true }
Ответ (201): ServerResponse.
Что происходит при создании:
Создаётся сервер с владельцем = текущий пользователь
Создаётся роль
@everyoneс правами:SEND_MESSAGES,READ_MESSAGES,CONNECT_VOICE,SPEAKСоздаётся публичный текстовый канал
generalВладелец автоматически становится участником сервера и канала
general
Ошибки:
Получение сервера
GET /servers/{serverId}
Аутентификация не требуется.
Ответ (200): ServerResponse.
Ошибки: NOT_FOUND — сервер не найден.
Обновление сервера
PUT /servers/{serverId}
Только владелец сервера может обновлять его.
Тело запроса:
{ "name": "New Name", "description": "Новое описание", "iconUrl": "https://example.com/icon.png", "isPublic": false }
Все поля опциональны — передайте только те, которые нужно изменить.
Ответ (200): обновлённый ServerResponse.
Ошибки:
Удаление сервера
DELETE /servers/{serverId}
Только владелец сервера может удалить его. Удаляются все каналы, роли и участники.
Ответ (200): SuccessResponse.
Ошибки: NOT_FOUND, FORBIDDEN.
Вступление в сервер
POST /servers/{serverId}/join
Доступно только для публичных серверов. При вступлении пользователь автоматически присоединяется ко всем публичным каналам сервера с ролью @everyone.
Ответ (200):
{ "id": "membership-uuid", "userId": "user-uuid", "userFederation": "https://auth.example.com", "joinedAt": "2025-01-15T10:30:00Z" }
Ошибки:
Выход из сервера
POST /servers/{serverId}/leave
Владелец сервера не может покинуть свой сервер. При выходе удаляются все членства в каналах этого сервера.
Ответ (200): SuccessResponse.
Ошибки: NOT_FOUND, FORBIDDEN (владелец).
Список участников
GET /servers/{serverId}/members
Для приватных серверов требуется быть участником.
Ответ (200): массив ServerMemberResponse.
[ { "id": "membership-uuid", "userId": "user-uuid", "userFederation": "https://auth.example.com", "joinedAt": "2025-01-15T10:30:00Z" } ]
Ошибки: FORBIDDEN — приватный сервер и не участник.