GET /api/v2/incident/:id/threads¶
✅ Obtener Hilos de Conversación y Archivos de una Incidencia¶
Método/Ruta: GET /api/v2/incident/:id/threads
Auth: Bearer JWT (requiere autorización)
Descripción: Obtiene los hilos de conversación (mensajes) y archivos adjuntos de una incidencia específica. Este endpoint está optimizado para cargar bajo demanda cuando el usuario abre el modal de detalle de una incidencia, evitando cargar los mensajes y archivos en el listado inicial.
Params¶
id(path, number, required) — ID de la incidencia. Ejemplo:123
cURL¶
curl -X GET 'http://localhost:7001/api/v2/incident/123/threads' \
-H 'Content-Type: application/json' \
-H 'Authorization: Bearer <TOKEN>'
Response 200¶
{
"status": "success",
"data": {
"incident": {
"id": 123,
"description": "No se registró ni la entrada ni la salida por parte del usuario",
"status": "open",
"timeRecordId": 456,
"employeeId": 36,
"schoolCourseId": 1,
"reviewStatus": "underReview",
"incidentType": "NO_CHECKIN_NO_CHECKOUT",
"createdAt": "2025-12-29T19:22:00.000Z",
"updatedAt": "2025-01-27T17:55:00.000Z",
"employee": {
"id": 36,
"name": "Oscar",
"lastName": "Castaño"
}
},
"threads": [
{
"id": 1,
"incidentId": 123,
"employeeId": 36,
"response": "Contenido del primer mensaje",
"senderType": "user",
"createdAt": "2025-01-02T17:35:00.000Z",
"employee": {
"id": 36,
"name": "Oscar",
"lastName": "Castaño"
}
},
{
"id": 2,
"incidentId": 123,
"employeeId": 1,
"response": "Respuesta del administrador",
"senderType": "admin",
"createdAt": "2025-01-02T18:05:00.000Z",
"employee": {
"id": 1,
"name": "Admin",
"lastName": "Sistema"
}
}
],
"files": [
{
"id": 1,
"url": "https://s3.amazonaws.com/bucket/file1.pdf",
"fileName": "justificante.pdf",
"fileType": "application/pdf",
"fileSize": 102400,
"incidentId": 123
},
{
"id": 2,
"url": "https://s3.amazonaws.com/bucket/file2.jpg",
"fileName": "captura.jpg",
"fileType": "image/jpeg",
"fileSize": 51200,
"incidentId": 123
}
]
}
}
Errors¶
| Código | Mensaje | Descripción |
|---|---|---|
| 400 | Invalid incident id |
El ID proporcionado no es válido |
| 401 | Unauthorized |
Token JWT inválido o expirado |
| 404 | Incident not found |
No existe incidencia con ese ID |
| 500 | GetThreadsUseCase not configured |
Error interno de configuración |
Ejemplo de error 404¶
Notas¶
- Los threads se devuelven ordenados por
createdAtde forma ascendente (más antiguo primero) - El campo
senderTypeindica si el mensaje fue enviado por el empleado (user) o por un administrador (admin) - El objeto
employeecontiene la información del remitente del mensaje - Este endpoint es ideal para cargar los mensajes bajo demanda al abrir el modal de detalle
Relacionado¶
- GET /api/v2/incident/ — Listado de incidencias (admin)
- GET /api/v2/incident/my — Listado de incidencias del empleado
- POST /api/v2/incident/:id/thread — Enviar mensaje (empleado)
- POST /api/v2/incident/:id/admin-thread — Enviar mensaje (admin)