Routes Admin
GET
/admin/dashboard
KPIs globaux (users, posts, sessions, alerts)
🔒 auth
GET
/admin/users
Liste users (search + filter + paginate)
🔒 auth
GET
/admin/users/:id
Détail admin d'un user (sans messages privés)
🔒 auth
POST
/admin/users/:id/warn
Avertir (body: reason)
🔒 auth
POST
/admin/users/:id/suspend
Suspendre (body: days, reason)
🔒 auth
POST
/admin/users/:id/ban
Bannir (body: reason)
🔒 auth
GET
/admin/reports
File modération (sorted by severity)
🔒 auth
POST
/admin/reports/:id/action
Action : hide|delete|reject|warn_author
🔒 auth
GET
/admin/audit-logs
Logs des actions admin (paginé)
🔒 auth
GET
/admin/roles
Liste équipe + rôles
🔒 auth
PATCH
/admin/roles/:userId
Modifier le rôle d'un membre
🔒 auth
Routes Messagerie
GET
/conversations
Mes conversations (paginé cursor)
🔒 auth
POST
/conversations
Démarrer une conversation (body: participant_id)
🔒 auth
GET
/conversations/:id/messages
Historique messages (cursor)
🔒 auth
POST
/conversations/:id/messages
Envoyer un message texte
🔒 auth
PATCH
/conversations/:id/messages/:msgId/read
Marquer comme lu
🔒 auth
DELETE
/conversations/:id
Quitter/Supprimer la conversation
🔒 auth
WebSocket Events (Socket.io)
conversation:join
Rejoindre une room de conversation
message:send
Envoyer un message (payload: {text, conversation_id})
message:received
Recevoir un message en temps réel
message:read
Confirmation de lecture
user:typing
Indicateur "en train d'écrire"