AlfyChat
Langage :

Serveurs

CRUD serveurs, channels, membres, rôles, invitations et fichiers. Routing intelligent vers server-nodes.

Serveurs — /api/servers

GET
/api/servers

Serveurs dont l'utilisateur est membre

POST
/api/servers

Créer un serveur — body: { name, iconUrl?, description? }

GET
/api/servers/:id

Détails complets (channels, membres, rôles)

PATCH
/api/servers/:id

Modifier — body: { name?, iconUrl?, bannerUrl? }

DELETE
/api/servers/:id

Supprimer le serveur (propriétaire uniquement)

POST
/api/servers/join

Rejoindre via code d'invitation — body: { inviteCode }

POST
/api/servers/:id/leave

Quitter un serveur

GET
/api/servers/public/*

Annuaire des serveurs publics

GET
/api/servers/discover/*

Découverte de serveurs recommandés

GET
/api/servers/:id/node-token

Token temporaire pour connexion directe au server-node

Channels — /api/servers/:id/channels

GET
/api/servers/:id/channels

Liste des channels

POST
/api/servers/:id/channels

Créer — body: { name, type: 'text'|'voice'|'announcement', position? }

PATCH
/api/servers/:id/channels/:chId

Modifier — body: { name?, position?, isPrivate? }

DELETE
/api/servers/:id/channels/:chId

Supprimer le channel

Membres — /api/servers/:id/members

GET
/api/servers/:id/members

Liste des membres (id, username, rôles, joinedAt)

DELETE
/api/servers/:id/members/:uid

Exclure (kick) — requiert permission KICK_MEMBERS

POST
/api/servers/:id/bans/:uid

Bannir — body: { reason? } — requiert permission BAN_MEMBERS

Rôles — /api/servers/:id/roles

GET
/api/servers/:id/roles

Liste des rôles

POST
/api/servers/:id/roles

Créer — body: { name, color?, permissions? }

PATCH
/api/servers/:id/roles/:roleId

Modifier — body: { name?, color?, permissions?, position? }

DELETE
/api/servers/:id/roles/:roleId

Supprimer le rôle

Invitations & Fichiers

GET
/api/servers/invite/:code

Infos d'une invitation par code (sans auth requis)

POST
/api/servers/invites/:id

Créer une invitation — body: { maxUses?, expiresIn? }

POST
/api/servers/:id/files

Uploader un fichier — multipart/form-data

GET
/api/servers/:id/files/:filename

Télécharger un fichier du serveur

Server Nodes — routing intelligent

Les requêtes sur /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.
Créer un serveur
js
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();