API para acceso remoto¶
Firmador Libre posee un pequeño servidor web que permite registrar documentos en la aplicación de forma remota. Para eso se dispone de la siguiente API:
Creación de documento¶
Registra un documento para firmar.
POST /create/<nombre_de_archivo>
El cuerpo de la petición debe ser el archivo binario (content-type: application/octet-stream).
Para cargar varios documentos a la vez, usar multipart/form-data y cada campo debe tener el nombre del documento.
Si es multipart, se ignora el nombre de la URL y se toma el nombre del campo.
Retorna HTTP 200 si el documento fue recibido correctamente.
Detalle y descarga de documento¶
Permite descargar el documento firmado, usando el mismo nombre utilizado en la carga.
GET /detail/<nombre_de_archivo>
Devuelve HTTP 204 si el documento aún no está firmado.
Devuelve HTTP 200 y el archivo firmado si ya está disponible.
Devuelve HTTP 404 si no existe el documento.
Eliminar documento¶
Elimina el documento cargado en el servidor.
DELETE /<nombre_de_archivo>
Devuelve HTTP 200 si fue eliminado.
Devuelve HTTP 404 si no existe.
Limpiar lista de documentos¶
Elimina todos los documentos en la lista del servidor.
GET /clean
Cerrar la aplicación cliente¶
Permite cerrar la aplicación, útil para integración con applets o tests automáticos.
GET /close
Firmar un documento¶
Solicita la firma de un documento de forma remota utilizando un dispositivo conectado.
POST /sign
El cuerpo debe ser un JSON con la información del documento y el número de serie del certificado a usar.
El servidor solicita el PIN al usuario.
Respuesta: JSON con la firma en base64 y metadatos del proceso.
Ejemplo de cuerpo (simplificado):
{
"documentName": "test.pdf",
"documentid": "91e88f73-7862-40a6-98df-4a7ac69bcda2",
"serialnumber": "446022984826570188563016292465943406351728476",
"tobesigned": {"bytes": "<base64>"},
"hostname": "firmador",
"certificate": "MIIFuz..."
}
Firma múltiple de documentos¶
Permite firmar varios documentos en una sola operación.
POST /multipleSign
[
{
"documentName": "test.pdf",
"documentid": "91e88f73-7862-40a6-98df-4a7ac69bcda2",
"serialnumber": "446022984826570188563016292465943406351728476",
"tobesigned": {"bytes": "<base64>"},
"hostname": "firmador",
"certificate": "MIIFuz..."
}
]
El cuerpo debe ser un array JSON con la información de cada documento.
Respuesta: Array de firmas para cada documento.
Obtener certificados disponibles¶
Devuelve una lista de las tarjetas/certificados disponibles.
GET /certificates
Respuesta: JSON con información de cada certificado conectado.
Autenticación remota¶
Realiza una autenticación remota usando la tarjeta.
POST /authenticate
El cuerpo debe ser un JSON con los datos de autenticación requeridos.
Respuesta: JSON con el resultado.
Registro/autorización de host¶
Permite registrar (autorizar) un nuevo origen (host) para poder interactuar con la API.
GET /doRegister
Si el origen no está autorizado, el usuario deberá autorizarlo manualmente en la interfaz.
Puede ser autorizado de forma permanente o temporal.
Control de CORS y orígenes permitidos¶
Todos los endpoints validan el header Origin.
Solo orígenes autorizados pueden interactuar con la API. Si el origen no está permitido, la respuesta será 403 y el error aparecerá en la interfaz gráfica.
Manejo de errores¶
Todos los endpoints pueden devolver códigos de error HTTP (400, 403, 404, 406, 500).
Los errores se notifican automáticamente en el panel de conexiones.