Langage :
Utilisateurs
Profil, préférences, statut de présence et dernière connexion.
Profil — /api/users
GET
/api/users/meProfil complet de l'utilisateur connecté (nécessite un JWT valide)
PATCH
/api/users/meModifier le profil — body: { username?, displayName?, bio?, avatarUrl? }
GET
/api/users/:idProfil public d'un utilisateur par son ID
PATCH
/api/users/:idMettre à jour le profil (propre profil ou admin)
GET
/api/users/:id/preferencesPréférences (thème, langue, notifications) — auth requise
PATCH
/api/users/:id/statusChanger le statut — body: { status, customStatus? }
PATCH
/api/users/:id/last-seenMettre à jour la dernière connexion (appelé automatiquement)
GET /api/users/me — réponse complète
json
{
"id": "u1a2b3c4-d5e6-f7g8-h9i0-j1k2l3m4n5o6",
"username": "alice",
"displayName": "Alice 🌸",
"email": "alice@example.com",
"avatarUrl": "https://media.alfychat.app/avatars/alice-abc123.webp",
"bio": "Développeuse passionnée",
"role": "user",
"isVerified": true,
"status": "online",
"customStatus": "🎵 En train de coder",
"createdAt": "2026-01-01T00:00:00.000Z",
"lastSeenAt": "2026-04-02T10:00:00.000Z"
}PATCH /api/users/me — modifier le profil
js
const res = await fetch('https://gateway.alfychat.app/api/users/me', {
method: 'PATCH',
headers: {
'Authorization': `Bearer ${token}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({ displayName: 'Alice ✨', bio: 'Nouvelle bio !' }),
});
const { user } = await res.json();PATCH /api/users/:id/status — valeurs possibles
json
{ "status": "online" } // En ligne
{ "status": "idle" } // Absent
{ "status": "dnd" } // Ne pas déranger
{ "status": "invisible" } // Hors ligne (visible uniquement par vous)
// Avec statut personnalisé
{ "status": "dnd", "customStatus": "🎮 En jeu" }