Endpoints de la API REST¶
1. Autenticacion /auth¶
Todos los endpoints de autenticacion son publicos (no requieren JWT).
Nota: Los tokens JWT tienen una expiracion de 24 horas. El refresh token dura 7 dias.
POST /auth/registrar¶
Registra un nuevo usuario en el sistema.
Request:
Response 200:
POST /auth/acceder¶
Autentica un usuario y devuelve tokens JWT.
Request:
Response 200:
Response 401:
POST /auth/refrescar¶
Refresca el token de acceso usando el refresh token.
Header requerido: Authorization: Bearer <refresh_token>
Response 200:
2. Usuarios /api/v2/users¶
GET /api/v2/users¶
Lista todos los usuarios. Requiere autenticacion.
Response 200:
[
{
"name": "Nombre del Usuario",
"email": "usuario@ejemplo.com",
"enabled": true,
"authorized": true
}
]
3. Grupos de Proceso de Firma /api/v2/grupo-proceso-firma¶
POST /api/v2/grupo-proceso-firma/iniciar-grupo¶
Inicia un nuevo grupo de proceso de firma. Requiere autenticacion.
Request (formato nuevo):
{
"idFirmante": "12345678",
"idProceso": 1,
"documentos": [
{
"nombre": "documento.pdf",
"codigo": "COD001",
"contenido": "base64...",
"configuraciones": ["firma.estilo=3"],
"imagen": "base64..."
}
],
"configuracionesComunes": ["firma.visible=true"]
}
Request (formato legacy):
{
"idFirmante": "12345678",
"idProceso": 1,
"nombres": ["documento.pdf"],
"contenidos": ["base64..."],
"configuraciones": ["firma.visible=true"]
}
Response 200:
{
"gruProFirId": 123,
"estado": true,
"mensaje": "Operacion exitosa",
"propiedades": {
"firma.repositorio": "Windows-MY",
"firma.visible": "false",
"firma.algoritmo": "SHA256"
}
}
POST /api/v2/grupo-proceso-firma/iniciar-grupo-v2¶
Inicia grupo mediante multipart/form-data. Requiere autenticacion.
| Parametro | Tipo | Requerido | Descripcion |
|---|---|---|---|
| idFirmante | String | Si | Identificador del firmante |
| idProceso | String | Si | ID del proceso |
| nombres | List | Si | Nombres (soporta nombre.pdf\|codigo) |
| configuraciones | List | Si | Configuraciones de firma |
| archivos | List | Si | Archivos PDF |
| imagen | MultipartFile | No | Imagen de firma (max 2MB) |
GET /api/v2/grupo-proceso-firma/verificar-grupo-firmado/{idGP}¶
Verifica si el grupo esta firmado. Requiere autenticacion.
Solo funciona si el grupo esta en estado 4 (UPLOADED).
Response 200:
{
"estado": true,
"mensaje": "Operacion exitosa",
"gpf": {
"documentos": [
{
"id": 1,
"documento": "documento.pdf",
"idGPF": 123,
"firmado": true,
"contenido": "base64..."
}
]
}
}
GET /api/v2/grupo-proceso-firma/{idGP}/estado¶
Obtiene el estado detallado de un grupo. Requiere autenticacion.
Response 200:
{
"estado": true,
"mensaje": "Operacion exitosa",
"grupoId": 123,
"estadoGrupo": "UPLOADED",
"totalDocs": 3,
"docsListos": 3,
"docsPendientes": 0,
"docsFallidos": 0,
"readyToDownload": true,
"updatedAt": "2026-01-15T10:30:00"
}
GET /api/v2/grupo-proceso-firma/{idGP}/documentos¶
Obtiene el manifiesto de documentos de un grupo. Requiere autenticacion.
Response 200:
{
"estado": true,
"mensaje": "Operacion exitosa",
"grupoId": 123,
"documentos": [
{
"idDoc": 1,
"nombreOriginal": "documento.pdf",
"nombreFirmado": "documento_signed.pdf",
"confirmado": true,
"intentosDescarga": 0,
"downloadUrl": "/api/v2/documento/descargar-firmado-blob/1"
}
]
}
GET /api/v2/grupo-proceso-firma/cancelar-grupo/{idGP}¶
Cancela un grupo de proceso de firma. Requiere autenticacion.
Solo funciona si el grupo esta en estado 1 o 2.
Response 200:
4. SSigner /api/v2/ssigner¶
POST /api/v2/ssigner/generar-hash¶
Genera hashes de pre-firma para documentos. Requiere autenticacion.
El grupo debe estar en estado 1 (INITIATED).
Request:
{
"idGP": "123",
"idFirmante": "12345678",
"certifcadoPublicoFirmante": "base64...",
"userMotivo": "Firma de documento",
"userLocacion": "Lima, Peru"
}
Response 200:
{
"hashes": ["base64..."],
"estado": true,
"mensaje": "Operacion exitosa",
"algoritmo": "SHA256",
"campo": "__signature__",
"propiedades": {
"firma.visible": "true",
"firma.motivo": "Firma de documento"
},
"nombresDocumentos": ["documento.pdf"],
"configuracionesIndividuales": {}
}
POST /api/v2/ssigner/insertar-hash-firmado¶
Inserta los hashes firmados en los documentos. Requiere autenticacion.
El grupo debe estar en estado 2 (DICHARGED).
Request:
Response 200:
POST /api/v2/ssigner/obtener-configuracion¶
Obtiene la configuracion de firma para un firmante. Requiere autenticacion.
Request:
Response 200:
5. Documentos /api/v2/documento¶
GET /api/v2/documento/descargar-firmado-blob/{id}¶
Descarga un documento firmado como binary stream. Requiere autenticacion.
Response: - Content-Type: application/pdf - Content-Disposition: attachment; filename="documento.pdf" - Body: Flujo binario del PDF
6. Clientes /api/v2/clientes¶
GET /api/v2/clientes¶
Lista todos los clientes. Requiere autenticacion.
Response 200:
[
{
"id": 1,
"name": "Cliente SAETA",
"email": "cliente@saeta.com",
"enabled": true,
"authorized": true
}
]
POST /api/v2/clientes¶
Crea un nuevo cliente. Requiere autenticacion.
Request:
Response 201:
{
"id": 2,
"name": "Nuevo Cliente",
"email": "cliente@nuevo.com",
"enabled": true,
"authorized": true
}
PATCH /api/v2/clientes/{id}/estado¶
Cambia el estado de un cliente. Requiere autenticacion.
Request:
Response 200: