Serveurs
CRUD serveurs, channels, membres, rôles, invitations et fichiers. Routing intelligent vers server-nodes.
Serveurs — /api/servers
/api/serversServeurs dont l'utilisateur est membre
/api/serversCréer un serveur — body: { name, iconUrl?, description? }
/api/servers/:idDétails complets (channels, membres, rôles)
/api/servers/:idModifier — body: { name?, iconUrl?, bannerUrl? }
/api/servers/:idSupprimer le serveur (propriétaire uniquement)
/api/servers/joinRejoindre via code d'invitation — body: { inviteCode }
/api/servers/:id/leaveQuitter un serveur
/api/servers/public/*Annuaire des serveurs publics
/api/servers/discover/*Découverte de serveurs recommandés
/api/servers/:id/node-tokenToken temporaire pour connexion directe au server-node
Channels — /api/servers/:id/channels
/api/servers/:id/channelsListe des channels
/api/servers/:id/channelsCréer — body: { name, type: 'text'|'voice'|'announcement', position? }
/api/servers/:id/channels/:chIdModifier — body: { name?, position?, isPrivate? }
/api/servers/:id/channels/:chIdSupprimer le channel
Membres — /api/servers/:id/members
/api/servers/:id/membersListe des membres (id, username, rôles, joinedAt)
/api/servers/:id/members/:uidExclure (kick) — requiert permission KICK_MEMBERS
/api/servers/:id/bans/:uidBannir — body: { reason? } — requiert permission BAN_MEMBERS
Rôles — /api/servers/:id/roles
/api/servers/:id/rolesListe des rôles
/api/servers/:id/rolesCréer — body: { name, color?, permissions? }
/api/servers/:id/roles/:roleIdModifier — body: { name?, color?, permissions?, position? }
/api/servers/:id/roles/:roleIdSupprimer le rôle
Invitations & Fichiers
/api/servers/invite/:codeInfos d'une invitation par code (sans auth requis)
/api/servers/invites/:idCréer une invitation — body: { maxUses?, expiresIn? }
/api/servers/:id/filesUploader un fichier — multipart/form-data
/api/servers/:id/files/:filenameTélécharger un fichier du serveur
Server Nodes — routing intelligent
/api/servers/:id/* sont automatiquement redirigées vers le server-nodehébergeant ce serveur si un node est connecté au gateway. En l'absence de node actif, le microservice central servers traite la requête.const res = await fetch('https://gateway.alfychat.app/api/servers', {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Mon Super Serveur',
iconUrl: 'https://media.alfychat.app/icons/srv-icon.webp',
description: 'Serveur de développement AlfyChat',
}),
});
const { server } = await res.json();