Каналы
Каналы — основные сущности для общения. Бывают 4 типов: CHAT, CHANNEL, FORUM, VOICE. Могут принадлежать серверу или существовать самостоятельно (standalone).
Подробнее о типах см. Типы каналов.
ChannelResponse
{ "id": "channel-uuid", "serverId": "server-uuid", "ownerId": null, "ownerFederation": null, "name": "general", "description": "Основной канал", "isPublic": true, "type": "CHAT", "chatMode": "BUBBLE", "channelDisplayMode": null, "commentsEnabled": true, "formTemplate": null }
Серверные каналы
Список каналов сервера
GET /servers/{serverId}/channels
Аутентификация не требуется.
Ответ (200): массив ChannelResponse.
Создание канала в сервере
POST /servers/{serverId}/channels
Пользователь должен быть участником сервера.
Тело запроса:
{ "name": "new-channel", "description": "Описание", "isPublic": true, "type": "CHAT", "chatMode": "THREAD", "commentsEnabled": true }
Создатель автоматически становится участником.
Ответ (201): ChannelResponse.
Валидация типов:
CHAT: нельзя задатьchannelDisplayModeиformTemplateCHANNEL: нельзя задатьchatModeиformTemplateFORUM: нельзя задатьchatModeиchannelDisplayModeVOICE: нельзя задать никакие режимы отображения
Ошибки: NOT_FOUND, FORBIDDEN, VALIDATION_ERROR.
Получение канала
GET /servers/{serverId}/channels/{channelId}
Ответ (200): ChannelResponse.
Обновление канала
PUT /servers/{serverId}/channels/{channelId}
Требуется право MANAGE_CHANNELS. Все поля опциональны.
Ответ (200): обновлённый ChannelResponse.
Удаление канала
DELETE /servers/{serverId}/channels/{channelId}
Требуется право MANAGE_CHANNELS.
Ответ (200): SuccessResponse.
Вступление / выход
POST /servers/{serverId}/channels/{channelId}/join POST /servers/{serverId}/channels/{channelId}/leave
Для вступления: пользователь должен быть участником сервера, канал публичный.
Ответ join (200): MembershipResponse. Рассылается событие member.joined.
Ответ leave (200): SuccessResponse. Рассылается событие member.left.
Список участников
GET /servers/{serverId}/channels/{channelId}/members
Необходимо быть участником канала.
Ответ (200): массив MembershipResponse.
Standalone-каналы
Каналы без привязки к серверу. Имеют собственного владельца.
Список публичных standalone-каналов
GET /channels
Ответ (200): массив ChannelResponse.
Мои каналы
GET /channels/me
Возвращает standalone-каналы, принадлежащие текущему пользователю.
Ответ (200): массив ChannelResponse.
Создание standalone-канала
POST /channels
Тело запроса аналогично серверному каналу, но без serverId. Тип VOICE недоступен для standalone.
Ответ (201): ChannelResponse с serverId: null и заполненными ownerId/ownerFederation.
Получение / вступление / выход
GET /channels/{channelId} POST /channels/{channelId}/join POST /channels/{channelId}/leave
Для standalone не требуется серверное членство. Канал должен быть публичным.
Инвайты
Инвайты позволяют приглашать пользователей в приватные каналы.
Создание инвайта
POST /servers/{serverId}/channels/{channelId}/invites
Требуется право MANAGE_CHANNELS.
Тело запроса:
{ "maxUses": 10, "expiresInMinutes": 1440 }
Ответ (201): InviteResponse.
Список инвайтов
GET /servers/{serverId}/channels/{channelId}/invites
Требуется право MANAGE_CHANNELS.
Вступление по инвайту
POST /invites/join
Тело: {"code": "aB3kLm9x"}
Ошибки: NOT_FOUND, INVITE_EXPIRED, INVITE_EXHAUSTED, ALREADY_EXISTS.
Удаление инвайта
DELETE /invites/{inviteId}