AlfyChat
Langage :
Référence REST/Utilisateurs

Utilisateurs

Profil, préférences, statut de présence et dernière connexion.

Profil — /api/users

GET
/api/users/me

Profil complet de l'utilisateur connecté (nécessite un JWT valide)

PATCH
/api/users/me

Modifier le profil — body: { username?, displayName?, bio?, avatarUrl? }

GET
/api/users/:id

Profil public d'un utilisateur par son ID

PATCH
/api/users/:id

Mettre à jour le profil (propre profil ou admin)

GET
/api/users/:id/preferences

Préférences (thème, langue, notifications) — auth requise

PATCH
/api/users/:id/status

Changer le statut — body: { status, customStatus? }

PATCH
/api/users/:id/last-seen

Mettre à 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" }