Registro de Auditoría
API de Registro de Auditoría
Endpoint para consultar el registro de auditoría. Registra todas las acciones críticas (creación de cotizaciones, cambios de estado, actualizaciones de clientes, cambios de configuración, suplantación de identidad, etc.).
Listar Registros de Auditoría
GET /api/audit-logs
Permiso: config:manage | Plan: PRO (requiere la función audit_log_ui)
Obtiene una lista paginada y filtrable de las entradas del registro de auditoría del tenant actual.
Parámetros de consulta:
| Parameter | Type | Required | Description |
|---|---|---|---|
| action | string | No | Filtra por acción (ej. create, update, delete, status_change, invite, duplicate) |
| entity | string | No | Filtra por tipo de entidad (ej. quote, client, product, tenant, collaborator, Webhook) |
| userId | string | No | Filtra por ID de usuario (formato CUID) |
| from | string | No | Fecha de inicio (formato YYYY-MM-DD) |
| to | string | No | Fecha de fin (formato YYYY-MM-DD, inclusivo hasta el final del día) |
| page | number | No | Número de página (predeterminado: 1, máximo: 1000) |
| limit | number | No | Elementos por página (predeterminado: 25, máximo: 100) |
Respuesta 200 OK:
{
"data": [
{
"id": "clxyz...",
"action": "create",
"entity": "quote",
"entityId": "clxyz...",
"metadata": { "quoteNumber": 42 },
"tenantId": "...",
"createdAt": "2026-03-31T10:00:00.000Z",
"user": {
"id": "clxyz...",
"name": "Carlos Méndez",
"email": "carlos@empresa.mx"
}
}
],
"total": 230,
"page": 1,
"totalPages": 10
}Errores:
| Status | Error | When |
|---|---|---|
| 400 | "Parámetros inválidos" | Parámetros de consulta no válidos (ej. fecha malformada, CUID no válido) |
| 401 | "No autorizado" | Sesión ausente o no válida |
| 403 | "Sin permisos" | El rol no tiene el permiso config:manage |
| 403 | "Función disponible en el plan Pro" | El tenant está en el plan FREE |
Ejemplo con cURL:
curl -X GET "https://cotizera.com/api/audit-logs?action=create&entity=quote&from=2026-03-01&to=2026-03-31&page=1" \
-H "Cookie: next-auth.session-token=YOUR_TOKEN"