Skip to content

Logs / Auditoría

Logs / Auditoría

Prefijo: /api/logs
Requiere Auth:
Permiso requerido: configuracion, *

Módulo de auditoría que registra eventos importantes del sistema: inicios de sesión, cambios de contraseña, cambios de rol, eliminación de ventas, cambios de precio. El endpoint /api/logs/global es exclusivo para Superadmin (rol=3) y permite ver logs de todos los tenants.

GET /api/logs/

Descripción: Lista los logs de auditoría con filtros
Requiere Auth:
Permiso requerido: configuracion, leer

Parámetros query:

ParámetroTipoObligatorioDescripción
skipintRegistros a saltar
limitintMáximo a retornar
tablastringFiltrar por tabla afectada
tipostringFiltrar por tipo de movimiento

Respuesta exitosa: 200 OK

Response:

[
{
"id": 1,
"tipo_movimiento": "LOGIN",
"tabla_afectada": "usuarios",
"id_referencia": 1,
"descripcion": "Login exitoso para soporte@neoapp.com",
"valor_anterior": null,
"valor_nuevo": null,
"usuario": "soporte@neoapp.com",
"origen": "API",
"tenant_id": "uuid-tenant",
"fecha": "2025-01-15",
"hora": "10:00:00"
}
]

cURL:

Terminal window
curl "http://localhost/api/logs/?skip=0&limit=20&tabla=usuarios" -H "Authorization: Bearer <token>"

Python:

import httpx
resp = httpx.get("http://localhost/api/logs/",
params={"skip": 0, "limit": 20},
headers={"Authorization": f"Bearer {token}"})
logs = resp.json()

JavaScript:

const resp = await fetch('http://localhost/api/logs/?skip=0&limit=20', {
headers: {'Authorization': `Bearer ${token}`}
});
const logs = await resp.json();

GET /api/logs/{log_id}

Descripción: Obtiene un log por ID
Requiere Auth:
Permiso requerido: configuracion, leer

Respuesta exitosa: 200 OK
Errores: 404 (no encontrado)

cURL:

Terminal window
curl http://localhost/api/logs/1 -H "Authorization: Bearer <token>"

POST /api/logs/

Descripción: Crea un nuevo log de auditoría manual
Requiere Auth:
Permiso requerido: configuracion, crear

Respuesta exitosa: 201 Created

cURL:

Terminal window
curl -X POST http://localhost/api/logs/ \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <token>" \
-d '{"tipo_movimiento":"AJUSTE","tabla_afectada":"productos","id_referencia":1,"descripcion":"Ajuste manual de stock"}'

GET /api/logs/tabla/{tabla}/ref/{id_referencia}

Descripción: Obtiene logs filtrados por tabla y ID de referencia
Requiere Auth:
Permiso requerido: configuracion, leer

Respuesta exitosa: 200 OK

cURL:

Terminal window
curl http://localhost/api/logs/tabla/ventas/ref/1 -H "Authorization: Bearer <token>"

GET /api/logs/global

Descripción: Lista logs de todos los tenants (solo Superadmin rol=3)
Requiere Auth: Sí (rol=3)
Permiso requerido: N/A (solo Superadmin)

Parámetros query:

ParámetroTipoObligatorioDescripción
skipintRegistros a saltar
limitintMáximo a retornar
tenant_idUUIDFiltrar por tenant
tablastringFiltrar por tabla
tipostringFiltrar por tipo

Respuesta exitosa: 200 OK
Errores: 403 (no es Superadmin)

cURL:

Terminal window
curl "http://localhost/api/logs/global?skip=0&limit=50" -H "Authorization: Bearer <token>"