Skip to content

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ámetroTipoObligatorioDescripción
severidadstring❌Filtrar por severidad: baja, media, alta, critica
resueltoboolean❌Filtrar por estado: true (resueltos), false (pendientes)
limiteint❌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ódigoCausaSolución
401Token expiradoRe-login
403Sin permiso incidentes, leerSolicitar 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ámetroTipoObligatorioDescripción
incident_idint✅ID del incidente

Respuesta exitosa: 200 — Detalle del incidente

Errores:

CódigoCausaSolución
404Incidente no encontradoVerificar 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ámetroTipoObligatorioDescripción
incident_idint✅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ódigoCausaSolución
404Incidente no encontradoVerificar ID