Messages & Conversations
Messages DM, conversations groupe, réactions, participants, notifications et archive P2P.
Messages — /api/messages
/api/messagesLister les messages — query: conversationId (required), limit (50 par défaut), before (curseur UUID)
/api/messagesEnvoyer un message — body: { conversationId, content, replyToId? }
/api/messages/:idModifier — body: { content } (auteur uniquement)
/api/messages/:idSupprimer (auteur ou admin)
/api/messages/:id/reactionsAjouter une réaction — body: { emoji }
/api/messages/:id/reactions/:emojiRetirer une réaction (URL-encode l'emoji si nécessaire)
// Page 1
const res = await fetch(
'https://gateway.alfychat.app/api/messages?conversationId=dm_abc&limit=50',
{ headers: { 'Authorization': `Bearer ${token}` } }
);
const { messages } = await res.json();
// Page 2 (pagination par curseur)
const older = await fetch(
`https://gateway.alfychat.app/api/messages?conversationId=dm_abc&limit=50&before=${messages.at(-1).id}`,
{ headers: { 'Authorization': `Bearer ${token}` } }
);{
"id": "m1a2b3c4-...",
"conversationId": "dm_user1_user2",
"senderId": "u1a2b3c4-...",
"content": "Salut !",
"replyToId": null,
"createdAt": "2026-04-02T10:00:00.000Z",
"isEdited": false,
"reactions": []
}Conversations — /api/conversations
/api/conversationsLister toutes les conversations de l'utilisateur (DM + groupes)
/api/conversationsCréer — body: { type: 'dm'|'group', participantIds[], name? }
/api/conversations/:idModifier — body: { name?, avatarUrl? } (groupes uniquement)
/api/conversations/:idSupprimer (admin / propriétaire)
/api/conversations/:id/participantsAjouter un participant — body: { userId }
/api/conversations/:id/participants/:uidRetirer un participant du groupe
/api/conversations/:id/leaveQuitter un groupe (désabonnement propre)
Notifications — /api/notifications
/api/notificationsListe des notifications non-lues (DMs, demandes d'ami, mentions)
/api/notifications/readMarquer toutes les notifications comme lues
Archive DM (système hybride) — /api/archive
/api/archive/status/:convIdStatut d'archivage d'une conversation
/api/archive/stats/:convIdMessages archivés, quota utilisé
/api/archive/quota/:convIdVérifier le quota disponible avant archivage
/api/archive/confirmConfirmer la réception d'une archive P2P — body: { conversationId, archiveLogId }
/api/archive/message/:idRécupérer un message archivé depuis le cache serveur
/api/archive/cacheMettre en cache des messages archivés — body: { messages[] }
Système hybride DM
DM_ARCHIVE_REQUEST / DM_ARCHIVE_PEER_RESPONSE. Le serveur ne stocke que les métadonnées et un cache limité.