Incidentes
GET /api/incidentes [NUEVO]
Descripción: Lista todos los incidentes registrados en el sistema. Permite filtrar por severidad, módulo, estado (resuelto/pendiente) y rango de fechas. Los incidentes se crean automáticamente desde el auditor de logs cuando se detectan errores críticos.
Requiere Auth: Sí
Permiso requerido: incidentes, leer
Parámetros query:
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
severidad | string | ❌ | Filtrar por severidad: baja, media, alta, critica |
resuelto | boolean | ❌ | Filtrar por estado: true (resueltos), false (pendientes) |
limite | int | ❌ | Límite de resultados (default: 50) |
Respuesta exitosa: 200 — Lista de incidentes
Response:
[ { "id": 1, "accion": "INCIDENTE", "modulo": "ventas", "tabla": "ventas", "id_usuario": 1, "tenant_id": "uuid-tenant-1", "severidad": "alta", "resuelto": false, "resuelto_por": null, "resuelto_at": null, "notas_resolucion": null, "origen": "automatico", "descripcion": "Error al procesar venta #1234: stock insuficiente", "metadata": "{\"venta_id\": 1234, \"producto_codigo\": \"P001\"}", "fecha_hora": "2025-01-15T10:30:00" }]Errores:
| Código | Causa | Solución |
|---|---|---|
| 401 | Token expirado | Re-login |
| 403 | Sin permiso incidentes, leer | Solicitar permiso a admin |
GET /api/incidentes/count [NUEVO]
Descripción: Cuenta el total de incidentes registrados. Útil para el dashboard de administración y badges de notificación.
Requiere Auth: Sí
Permiso requerido: incidentes, leer
Respuesta exitosa: 200 — Conteo de incidentes
Response:
{ "total": 42, "pendientes": 5, "resueltos": 37}GET /api/incidentes/por-modulo [NUEVO]
Descripción: Retorna incidentes agrupados por módulo. Ideal para dashboards de monitoreo que muestran qué módulos tienen más problemas.
Requiere Auth: Sí
Permiso requerido: incidentes, leer
Respuesta exitosa: 200 — Incidentes agrupados por módulo
Response:
[ { "modulo": "ventas", "total": 15, "pendientes": 2 }, { "modulo": "caja", "total": 8, "pendientes": 1 }]GET /api/incidentes/{incident_id} [NUEVO]
Descripción: Obtiene el detalle completo de un incidente específico. Incluye toda la metadata, timestamps de resolución y notas.
Requiere Auth: Sí
Permiso requerido: incidentes, leer
Parámetros path:
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
incident_id | int | ✅ | ID del incidente |
Respuesta exitosa: 200 — Detalle del incidente
Errores:
| Código | Causa | Solución |
|---|---|---|
| 404 | Incidente no encontrado | Verificar ID |
POST /api/incidentes [NUEVO]
Descripción: Registra un incidente manualmente. Útil cuando un operador detecta un problema que no fue capturado automáticamente por el sistema de auditoría.
Requiere Auth: Sí
Permiso requerido: incidentes, crear
Body request (ejemplo):
{ "accion": "INCIDENTE", "modulo": "ventas", "tabla": "ventas", "descripcion": "El cajero reportó error al imprimir factura", "severidad": "media", "origen": "manual", "metadata": "{\"terminal_id\": \"T001\"}"}Respuesta exitosa: 201 — Incidente registrado
PATCH /api/incidentes/{incident_id}/resolver [NUEVO]
Descripción: Marca un incidente como resuelto. Registra quién lo resolvió, cuándo y notas de resolución. Actualiza el campo resuelto_at con la fecha/hora actual.
Requiere Auth: Sí
Permiso requerido: incidentes, actualizar
Parámetros path:
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
incident_id | int | ✅ | ID del incidente a resolver |
Body request (ejemplo):
{ "notas_resolucion": "Se reinició el servicio de impresión. Verificado OK.", "resuelto_por": "admin@neoapp.com"}Respuesta exitosa: 200 — Incidente resuelto
Errores:
| Código | Causa | Solución |
|---|---|---|
| 404 | Incidente no encontrado | Verificar ID |