Saltar a contenido

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

{
  "status": "error",
  "message": "Incident not found"
}

Notas

  • Los threads se devuelven ordenados por createdAt de forma ascendente (más antiguo primero)
  • El campo senderType indica si el mensaje fue enviado por el empleado (user) o por un administrador (admin)
  • El objeto employee contiene la información del remitente del mensaje
  • Este endpoint es ideal para cargar los mensajes bajo demanda al abrir el modal de detalle

Relacionado