Conversations & Messages
GET /conversations
Auth requis
Retourne toutes les conversations de l'utilisateur connecté avec le dernier message de chacune.
Request
GET /conversations
Authorization: Bearer <token>
Response
200 OK
[
{
"id": 5,
"voyager_id": 42,
"local_id": 17,
"Voyager": { "id": 42, "name": "Marie Dupont", "email": "marie@...", "image_url": "https://minio.example.com/profiles/user_42/avatar.jpg" },
"Local": { "id": 17, "name": "Jean Martin", "email": "jean@...", "image_url": null },
"Messages": [
{
"id": 88,
"content": "Salut ! Je suis intéressé par ta rando.",
"user_id": 42,
"read": false,
"createdAt": "2025-03-15T14:32:00.000Z"
}
],
"createdAt": "2025-03-15T14:30:00.000Z"
}
]
POST /conversations
Auth requis
Crée une nouvelle conversation entre deux utilisateurs. Une seule conversation par paire est autorisée.
Request
POST /conversations
Authorization: Bearer <token>
Content-Type: application/json
{
"otherUserId": 17
}
Response
201 Created (nouvelle) ou 200 OK (déjà existante)
{
"conversation": {
"id": 5,
"voyager_id": 42,
"local_id": 17,
"Voyager": { "id": 42, "name": "Marie Dupont", "email": "marie@...", "image_url": null },
"Local": { "id": 17, "name": "Jean Martin", "email": "jean@...", "image_url": "https://minio.example.com/profiles/user_17/avatar.jpg" }
},
"existed": false
}
400 Bad Request — Tentative de self-conversation
GET /conversations/:id
Auth requis
Retourne les détails d'une conversation (participants uniquement). Les réservations sont récupérées séparément via GET /reservations/me.
Request
GET /conversations/5
Authorization: Bearer <token>
Response
200 OK
{
"conversation": {
"id": 5,
"voyager_id": 42,
"local_id": 17,
"Voyager": { "id": 42, "name": "Marie Dupont", "email": "marie@...", "image_url": null },
"Local": { "id": 17, "name": "Jean Martin", "email": "jean@...", "image_url": "https://minio.example.com/profiles/user_17/avatar.jpg" }
}
}
GET /conversations/:id/messages
Auth requis
Retourne les messages d'une conversation avec pagination.
Request
GET /conversations/5/messages?limit=50&offset=0
Authorization: Bearer <token>
| Paramètre | Défaut | Description |
|---|---|---|
limit | 50 | Nombre de messages |
offset | 0 | Décalage pour la pagination |
Response
200 OK
[
{
"id": 88,
"user_id": 42,
"conversation_id": 5,
"content": "Salut ! Je suis intéressé par ta rando.",
"attachment": null,
"read": true,
"createdAt": "2025-03-15T14:32:00.000Z",
"Sender": { "id": 42, "name": "Marie Dupont" }
}
]
PATCH /conversations/:id/messages/:messageId/read
Auth requis
Marque un message comme lu.
Request
PATCH /conversations/5/messages/88/read
Authorization: Bearer <token>
Response
200 OK
{
"message": "Message marked as read",
"messageId": 88
}