Saltar a contenido

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