Skip to main content

server-service

Servers, membership, roles, invites, custom emoji, and channels. Owns the effective-permission resolver every other service calls into.

/api/v1/servers

MethodPathWhat it does
GET/List servers the caller is in
POST/Create a server
POST/joinJoin by invite code
GET/invites/:codePreview an invite (name, icon, member count) before joining
GET/:serverId/invitesList a server's invites
POST/:serverId/invitesCreate an invite
DELETE/:serverId/invites/:codeRevoke an invite
PATCH/:serverIdUpdate server settings
DELETE/:serverIdDelete a server
POST/:serverId/leaveLeave a server
GET/:serverId/membersList members
POST/:serverId/membersAdd a member by username
PATCH/:serverId/members/:userIdChange role / permission overrides
DELETE/:serverId/members/:userIdRemove / kick a member
GET/:serverId/rolesList custom roles
POST/:serverId/rolesCreate a custom role
PATCH/:serverId/roles/:roleIdUpdate a custom role
DELETE/:serverId/roles/:roleIdDelete a custom role
GET/:serverId/emojiList custom emoji
POST/:serverId/emojiUpload a custom emoji
DELETE/:serverId/emoji/:emojiIdDelete a custom emoji
GET/:serverId/channelsList a server's channels

/api/v1/channels

MethodPathWhat it does
GET/List a channel (query-scoped)
POST/Create a channel
PATCH/:channelIdUpdate a channel (name, topic, privacy)
DELETE/:channelIdDelete a channel
GET/:channelId/membersList a private channel's allowlist
PUT/:channelId/membersReplace a private channel's allowlist

An invite is previewed (GET /invites/:code) before it's accepted — the preview is deliberately thin (name, icon, member count, online count from presence-service), because anyone holding a code can ask for it.