Aller au contenu principal

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ètreDéfautDescription
limit50Nombre de messages
offset0Dé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
}