Auditoría¶
Endpoints de solo lectura para una página web de auditoría: listar firmantes y procesos de firma masiva, buscarlos por DNI/correo/código, filtrarlos por rol o estado, y ver el historial de firmas de un usuario o de un proceso puntual.
Todos los endpoints requieren token (Authorization: Bearer <token>) y que el usuario autenticado tenga rol ROLE_ADMIN o ROLE_SUPER. Un usuario con solo ROLE_USER recibe 403 FORBIDDEN.
Base URL: /api/audit
Paginación¶
Todos los listados devuelven un PageResponse:
{
"content": [ /* ... */ ],
"page": 0,
"size": 20,
"totalElements": 137,
"totalPages": 7,
"first": true,
"last": false
}
Parámetros comunes: page (default 0), size (default 20, máximo 200). Los endpoints que aceptan orden usan sortBy/sortDir (asc/desc); el resto ordena de forma fija (más recientes primero, u orden de documento dentro del lote).
Endpoints¶
| Método | Ruta | Params | Descripción |
|---|---|---|---|
| GET | /firmantes | dni?, email?, rol?, estado?, page?, size?, sortBy?, sortDir? | Lista paginada de usuarios. dni/email son búsqueda parcial (contiene, sin distinguir mayúsculas); rol acepta admin/user/super o el nombre completo ROLE_*; estado filtra por el campo status del usuario (ACTIVE, DELETED, etc.), exacto. |
| GET | /firmantes/{dni} | — | Detalle de un firmante. 404 si no existe. |
| GET | /firmantes/{dni}/firmas | estado?, page?, size? | Historial paginado (más reciente primero) de documentos firmados por ese dni, a través de todos sus procesos. estado filtra por EstadoDocumentoFirma (PENDIENTE, OK, ERROR). |
| GET | /procesos | dni?, codigo?, estado?, desde?, hasta?, page?, size?, sortBy?, sortDir? | Lista paginada de solicitudes de firma masiva. dni y codigo son búsqueda parcial; estado filtra por EstadoSolicitud (PENDIENTE, PROCESANDO, COMPLETADO, COMPLETADO_CON_ERRORES, ERROR); desde/hasta son fechas yyyy-MM-dd (inclusive) sobre la columna creado. |
| GET | /procesos/{id} | — | Detalle de un proceso por su id numérico (no el codigo de /api/firma/*). 404 si no existe. |
| GET | /procesos/{id}/documentos | estado?, page?, size? | Documentos de un proceso puntual, en el orden en que se firmaron dentro del lote. 404 si el proceso no existe. |
Un rol o estado que no corresponda a ningún valor válido responde 400 BAD_REQUEST con el detalle del campo.
Ejemplos¶
Buscar firmantes por DNI y rol¶
curl -G "http://localhost:8080/api/audit/firmantes" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
--data-urlencode "dni=1234" \
--data-urlencode "rol=admin" \
--data-urlencode "page=0" \
--data-urlencode "size=10"
Respuesta 200 OK:
{
"content": [
{
"id": 1,
"username": "jperez",
"email": "jperez@empresa.com",
"firstName": "Juan",
"lastName": "Pérez",
"dni": "12345678",
"status": "ACTIVE",
"tuition": "MP12345",
"roles": ["ROLE_ADMIN"]
}
],
"page": 0,
"size": 10,
"totalElements": 1,
"totalPages": 1,
"first": true,
"last": true
}
Ver firmas de un usuario¶
curl -G "http://localhost:8080/api/audit/firmantes/12345678/firmas" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
--data-urlencode "estado=OK"
Cada elemento incluye codigoSolicitud, el código del proceso al que pertenece ese documento (el mismo identificador usado en /api/firma/estado/{solicitud}):
{
"content": [
{
"id": 42,
"solicitudId": 7,
"codigoSolicitud": "K3F9QZ1B7C",
"orden": 1,
"nombreOriginal": "archivo-1.pdf",
"nivelFirma": "PAdES-BT",
"estado": "OK",
"fechaFirma": "2026-07-18T00:05:12.000+00:00",
"mensajeError": null,
"pesoAntesBytes": 131481,
"pesoDespuesBytes": 135064
}
],
"page": 0, "size": 20, "totalElements": 1, "totalPages": 1, "first": true, "last": true
}
Procesos por rango de fechas y estado¶
curl -G "http://localhost:8080/api/audit/procesos" \
-H "Authorization: Bearer eyJhbGciOiJIUzI1NiJ9..." \
--data-urlencode "estado=COMPLETADO_CON_ERRORES" \
--data-urlencode "desde=2026-07-01" \
--data-urlencode "hasta=2026-07-20"
Códigos de respuesta¶
| Código | Causa |
|---|---|
| 200 OK | Consulta exitosa (lista o detalle) |
| 400 BAD_REQUEST | rol, estado o fecha (desde/hasta) con un valor no reconocido |
| 401 UNAUTHORIZED | Token ausente/inválido |
| 403 FORBIDDEN | El usuario autenticado no tiene rol ROLE_ADMIN ni ROLE_SUPER |
| 404 NOT_FOUND | El dni o el id de proceso no existe |