Consumo API /PROCESS [Crear procesos de Firma] V2
VERSIONAMIENTO DEL DOCUMENTO
Fecha | Versión | Autor | Descripción |
31-10-2024 | V1 | Creación y documentación inicial | |
20-12-2024 | V2 | Se agregó “3.2.3. Método "Create- full-by-company", y se modificó “5.2. Estrategia Call back” |
APROBACIONES DEL DOCUMENTO
Fecha | Versión | Aprobador | Área /Cargo |
06-11-2024 | V1 | Desarrollador Firma seguro | |
04/02/2025 | V2 | Desarrollador Firma seguro |
- 1 1. Introducción consumo de API
- 1.1 1.1Propósito
- 2 2. Requisitos Previos para consumo de API
- 3 3. Consumo POST
- 4 4. Obtener Respuesta del Consumo:
- 5 5. Consideraciones para ejemplificación
- 6 6. Límite y uso de cuotas del consumo
- 7 7. Soporte:
1. Introducción consumo de API
1.1Propósito
Este documento establece la definición de los métodos y los valores establecidos como parámetros para el consumo del aplicativo Firma Electrónica API en sistemas externos o aplicaciones clientes. También se evidencian consideraciones y prerrequisitos necesarios para realizar una integración con otras soluciones.En este documento se explicara el consumo del controlador “Process”
2. Requisitos Previos para consumo de API
2.1. Autenticación
2.1.1. Autenticación
Controlador “Auth” POST
2.1.3. Proceso para obtener la API Key o Token de acceso Bearer
Debe solicitar usuario y contraseña al área IT del operador del servicio el cual suministrará accesos para que pueda consumirlo.
2.1.4. Seleccione la Versión del consumo “Process”
Existen diferencias por cada versión cuando se consume la API:
FS API V1: .El consumo de esta versión asegura el consumo de saldos de la siguiente manera:
Método Create Full: Saldo por Firmas
Método Create By documents: Saldo por documentos Haz clic en el enlace Swagger API APP v1 para acceder a la ejemplificación del consumo.
FS API V2: El consumo de esta versión asegura el consumo de saldos de la siguiente manera:
Al consumir el servicio debe verificarse el Parámetro tipo integer “balanceTypeId”, donde al consumirlo deberá relacionar 1 [Saldo por firmas] o 2 [Saldo por documentos]. Haz clic en el enlace Swagger API APP v2 para acceder a la ejemplificación del consumo.
En el consumo de los métodos al usarse los parámetros nit y email_user, asegura heredar los derechos de manejo del proceso de firma que se está creando a un tercero, por lo tanto el consumo de saldo será descontado de la cuenta que se está relacionando como tercero (Ver detalles en las tablas de los parámetros en cada método)
2.2. Entorno
Se manejan dos entornos por marca DEMO y PRODUCCIÓN, con la siguiente estructura:
https://[Personalizable ambiente].[Dominio_cliente].co/ EjemploDEMO:https://demo.firmaseguro.co/
PRODUCCIÓN: https://app.firmaseguro.co/
NOTA: Estos entornos pueden personalizarse según la necesidad del cliente.
3. Consumo POST
El controlador Process permite crear procesos de firmado de documentos de manera digital y manuscrita, ofreciendo flexibilidad a través de diferentes métodos: "Create-Full", "Create-by-documents" y “Create-full-by-company”.reate-by-documents". Ambos métodos comparten el objetivo de gestionar el proceso de firma, pero con diferencias clave en la forma en que se procesan los documentos.
3.1. Continuación de la URL de Solicitud:
Por Favor tenga en cuenta la Versión del Consumo [V1 o V2].
/api/v1/Process/create-full
/api/v1/Process/create-by-documents
3.2. Parámetros de Solicitud:
A continuación explicaremos el objetivo, variaciones de uso y detalle técnico de los dos métodos "Create-Full" y "Create-by-documents":
3.2.1. Método "Create Full"
El método "Create Full" se utiliza para crear un proceso de firma sobre un único documento PDF en base 64, donde cada destinatario puede firmar el documento de forma digital y/o manuscrita. El proceso de firma se completa cuando el documento ha sido firmado por todos los destinatarios. Dependiendo de la configuración, "Create Full" ofrece varias opciones de personalización:
Sin plantilla (firma digital)[Ver punto 3.2.1.1]: Permite firmar el documento de forma digital, añadiendo una página al documento con las firmas digitales de todos los destinatarios, que contienen sus datos básicos. No se utiliza una plantilla predefinida, lo que lo hace ideal para escenarios en los que el uso de firmas manuscritas no es relevante.
Sin plantilla (firma manuscrita y digital)[Ver punto 3.2.1.2]: Permite firmar el documento de manera digital añadiendo una página adicional con los datos básicos del firmante, y agregar una firma de evidencia manuscrita, utilizando un esquema de coordenadas que posiciona la firma.
Con plantilla PDF [Ver punto 3.2.1.3]: Este método permite firmar el documento utilizando una plantilla PDF predefinida, identificada por un ID. Las coordenadas para la firma manuscrita pueden ajustarse desde una consola de administración de plantillas, lo que permite definir la ubicación exacta de la firma. También se añade una página con la firma digital de cada destinatario y sus datos básicos.
Con plantilla HTML[Ver punto 3.2.1.4]: Utiliza una plantilla HTML identificada por un ID, que puede personalizarse mediante tags de texto y de firma para determinar tanto el contenido del documento como la ubicación de la firma manuscrita. Esta plantilla es modificable desde una consola de administración, y se agrega una página con las firmas digitales de todos los destinatarios, incluyendo sus datos básicos.
A continuación podrá verificar el detalle técnico del consumo:
3.2.1.1. Create Full - Sin plantilla (firma digital):
El código podría desglosarse en las siguientes partes:
Púrpura: Strings que identifica la configuración general de la solicitud
Rosa: Array de datos que identifica la informacion de los firmantes
Naranja: Strings que identifica los documentos añadidos al proceso de firma.
Lima: String que identifica la url para realizar callback del documento firmado.
Cyan: Strings que identifica los mensajes que aparecerán en el Lay out del correo de notificación cuando el proceso sea activado.
Azul: Array de datos que identifica un documento adjunto que se añadirá al correo de notificación cuando el proceso sea activado .
{ "processTypeId": 0, "signatureMethodId": 0, "deadlineDays": 0, "isInOrder": true, "templateId": null, "isRead": true, "isSendByEmail": true, "isSendByWhatsApp": true, "language": "string", "isHandWritten": true, "isPhotographic": true, "signatures": [ { "order": 0, "rol": "string", "processId": 0, "authenticationMethodId": 0, "contactInformation": { "phone": { "indicative": "string", "number": "string" }, "email": "string", "person": { "firstName": "string", "firstLastName": "string", "identification": null, "identificationTypeId": 0, "typePersonId": 0 } }, "signatory_type": "string" } ], "documents": { "fileName": "string", "documentTypeId": 0, "base64String": "string" }, "callback": "string", "subjectEmail": "string", "messageEmail": "string", "copyEmails": "string", "balanceTypeId": 0, "documentsOnlyRead": [ { "fileName": "string", "base64String": "string" } ] } |
---|
Por favor verifique la ejemplificación del consumo en Swagger en versión 1 [Swagger API APP v1] y en Versión 2 [Swagger API APP v2]
Parámetro | Descripción | Tipo | Obligatoriedad | Ejemplo |
processTypeId | Tipo de proceso a crear. Puede ser:
| Int | SI | 3 |
signatureMethodId | Método de firma con el cual se creará el proceso.
| Int | SI | 2 |
balanceTypeId | Método con tipo de saldo el cual asignará un valor.
[Verifique la Versión usada, según se explica en el punto 2.1.3] | Int | SI | 1 |
deadlineDays | Plazo máximo en días para que todos los signatarios firmen el documento asociado al proceso. | Int | SI | 30 |
isInOrder | Parámetro que permite que el proceso sea por orden de firmantes predefinido. Valores:
| Boolean | No | True |
templateId | Parámetro que permite indicar el número del ID del template de documento que se desea asignar al proceso de firma. (Este valor lo entregara el Usuario Administrador) | Int | No | null |
isRead | Parámetro que identifica si se configurará una obligatoriedad de lectura al PDF para poder ser firmado. Valores:
| Boolean
| SI | True |
isSendByEmail | Parámetro que indica si la notificación cuando esté montado el proceso en la App será enviada por correo electrónico. Valores:
| Boolean
| SI | True |
isSendByWhatsApp | Parámetro que indica si la notificación cuando esté montado el proceso en la App será enviada por WhatsApp. Valores:
| Boolean | Si | True |
language | Parámetro que permite agregar el idioma en que se maneja del firma manuscrita. Valores:
No es obligatorio, por defecto lo toma como español | String | Si | es |
isHandWritten | Parámetro que permite agregar firma manuscrita. Valores:
| Boolean | No | True |
isPhotographic | Parámetro que permite agregar firma fotográfica. Valores:
| Boolean | No | True |
signatures[] | Este array determina el listado de firmantes vinculados al proceso, sujeto al tipo de proceso. Acepta máximo 10 firmantes por proceso | |||
order | (parámetro del array signatures) El orden de cada firmante en el proceso | Int | Si el valor isOrden = True | 1 |
rol | (parámetro del array signatures) Determina el rol que se le asigna al Firmante.El parámetro es obligatorio si se le asigna una plantilla al proceso de firma. | String | Si | Empleado |
processId | (parámetro del array signatures) Debe tener como valor 0. | Int | No | 0 |
authenticationMethodId | (parámetro del array signatures) Método de autenticación OTP (One-Time Password) con el cual el firmante validará su proceso de firma.
| Int | SI | 3 |
contactInformation{} | (objeto del array signatures) Objeto que contiene la información de contacto del firmante asociado al proceso a crear. | - | SI | - |
phone{} | (objeto de contactInformation) Objeto que contiene la información del número de celular asociado al firmante. | - | SI | - |
indicative | (parámetro del objeto phone) Indicativo de país asociado al número de celular del firmante. Ejemplo para Colombia: 57. | String | SI | 57 |
number | (parámetro del objeto phone) Número celular del firmante. Máximo de caracteres para Colombia: 10. Máximo de caracteres para números extranjeros: 20. | String | SI | 3188273865 |
(parámetro de contactInformation) Correo electrónico del firmante. Máximo: 100 caracteres. | String | SI | empresa.firma@empresa.com | |
person{} | (objeto de contactInformation) Objeto que contiene información básica asociada al firmante. | - | SI | - |
firstName | (parámetro del objeto person) Primer nombre del firmante. Mínimo: 2 caracteres. Máximo: 100 caracteres. | String | SI | Pablo |
secondName | (parámetro del objeto person) Segundo nombre del firmante. Mínimo: 2 caracteres. Máximo: 100 caracteres. (En caso de no enviarlo, su valor debe ser null.) | String | NO | Sebastian |
firstLastName | (parámetro del objeto person) Primer apellido del firmante. Mínimo: 2 caracteres. Máximo: 100 caracteres. | String | SI | Parra |
secondLastName | (parámetro del objeto person) Segundo apellido del firmante. Mínimo: 2 caracteres. Máximo: 100 caracteres. (En caso de no enviarlo, su valor debe ser null.) | String | NO | Manrique |
identification | (parámetro del objeto person) Número de identificación del firmante. Mínimo: 5 caracteres (Cédula de Ciudadanía) o Máximo: 12 caracteres (Cédula Extranjera). | String | SI | 1018444520 |
identificationTypeId | (parámetro del objeto person) Tipo de identificación del firmante.
| Int | SI | 1 |
typePersonId | (parámetro del objeto person) Tipo de persona del firmante.
| Int | SI | 1 |
signatory_type | (objeto del array signatures) Tipo de firmante o Rol que se representa en la evidencia digital para cada firmante. | String | No | Empleado |
documents[] | Objeto que contiene la información del documento a firmar. | - | SI | - |
filename | (parámetro del objeto documents) Nombre del documento PDF. Máximo: 100 caracteres. | String | SI | Contrato de Trabajo |
documentTypeId | (parámetro del objeto documents)
| Int | SI | 1 |
base64String | (parámetro del objeto documents) String con el documento PDF codificado en base64. | String | SI | TDQc5698fHGDI4DHD……… |
callback | URL donde se debe enviar el documento cuando el proceso se termine exitosamente. Este parámetro hace referencia a la estrategia callback mencionada en la sección 5.2 | String | NO | Ver ejemplo en sección 5.2 |
subjectEmail | Asunto que se desea incluir en el correo electrónico con la solicitud de firma a los firmantes. (En caso de no enviarse, el asunto por defecto es "solicitud de firma.") Máximo: 150 caracteres. | String | NO | Solicitud de Firma |
messageEmail | Mensaje que se desea incluir en el correo electrónico con la solicitud de firma a los firmantes. (En caso de no enviarse, no hay un mensaje por defecto.) Máximo: 500 caracteres. | String | NO | Por favor firmar este documento |
copyEmails | Listado separado por comas de los correos electrónicos a los cuales se enviará una copia del documento una vez firmado por todos los involucrados. (No se incluyen correos asociados a los firmantes.) Máximo string: 255 caracteres. Máximo de correos electrónicos permitidos: 10. | String | NO | empresa.operaciones@empresa.com,empresa.contabilida@empresa.com |
documentsOnlyRead [] | Objeto que contiene un documento que se le podría añadir a la notificación por correo electrónico cuando el proceso haya sido montado en la APP | - | No | - |
fileName | (parámetro del objeto documentsOnlyRead) Nombre del documento PDF. Máximo: 100 caracteres. | String | SI | Carta de instrucciones |
base64String | (parámetro del objeto documentsOnlyRead) String con el documento PDF codificado en base64. | String | SI | TDQc5698fHGDI4DHD……… |
3.2.1.2. Create Full - Sin plantilla (firma manuscrita y digital):
El código podría desglosarse en las siguientes partes:
Púrpura: Strings que identifica la configuración general de la solicitud
Gris: Strings que identifica la organización de coordenadas para posicionar la firma manuscrita por medio del consumo.
Rosa: Array de datos que identifica la informacion de los firmantes
Naranja: Strings que identifica los documentos añadidos al proceso de firma.
Lima: String que identifica la url para realizar callback del documento firmado.
Cyan: Strings que identifica los mensajes que aparecerán en el Lay out del correo de notificación cuando el proceso sea activado.
Azul: Array de datos que identifica un documento adjunto que se añadirá al correo de notificación cuando el proceso sea activado .
{
"processTypeId": 0,
"signatureMethodId": 0,
"deadlineDays": 0,
"isInOrder": true,
"templateId": null,
"schema": [
{
"additionalProp1": {
"type": "string",
"backgroundColor": "string",
"position": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"value": "string"
},
"additionalProp2": {
"type": "string",
"backgroundColor": "string",
"position": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"value": "string"
},
"additionalProp3": {
"type": "string",
"backgroundColor": "string",
"position": {
"x": 0,
"y": 0
},
"width": 0,
"height": 0,
"value": "string"
}
}
], "isRead": true,
"isSendByEmail": true,
"isSendByWhatsApp": true,
"language": "string",
"isHandWritten": true,
"isPhotographic": true,
"signatures": [
{
"order": 0,
"rol": "string",
"processId": 0,
"authenticationMethodId": 0,
"contactInformation": {
"phone": {
"indicative": "string",
"number": "string"
},
"email": "string",
"person": {
"firstName": "string",
"firstLastName": "string",
"identification": null,
"identificationTypeId": 0,
"typePersonId": 0
}
},
"signatory_type": "string"
}
],
"documents": {
"fileName": "string",
"documentTypeId": 0,
"base64String": "string"
},
"callback": "string",
"subjectEmail": "string",
"messageEmail": "string",
"copyEmails": "string",
"balanceTypeId": 0,
"documentsOnlyRead": [
{
"fileName": "string",
"base64String": "string"
}
]
}
Por favor verifique la ejemplificación del consumo en Swagger en versión 1 [Swagger API APP v1] y en Versión 2 [Swagger API APP v2]
Parámetro | Descripción | Tipo | Obligatoriedad | Ejemplo |
processTypeId | Tipo de proceso a crear. Puede ser:
| Int | SI | 3 |
signatureMethodId | Método de firma con el cual se creará el proceso.
| Int | SI | 2 |
balanceTypeId | Método con tipo de saldo el cual asignará un valor.
[Verifique la Versión usada, según se explica en el punto 2.1.3] | Int | SI | 1 |
deadlineDays | Plazo máximo en días para que todos los signatarios firmen el documento asociado al proceso. | Int | SI | 30 |
isInOrder | Parámetro que permite que el proceso sea por orden de firmantes predefinido. Valores:
| Boolean | No | True |
templateId | Parámetro que permite indicar el número del ID del template de documento que se desea asignar al proceso de firma. (Este valor lo entregara el Usuario Administrador) | Int | No | null |
schema [] name | Marca el inicio de una sección en la solicitud, diseñada para definir la posición de cada firma en el documento. Este bloque de parámetros se puede repetir tantas veces como sea necesario para incluir múltiples roles de firma, lo cual permite especificar la ubicación y atributos de cada una. Recomendamos que nombre de manera diferente cada rol de firma (Empleado,Empleador) o use una secuencia de números para nombrar el inicio del bloque (EJ: additionalProp1, additionalProp2, additionalProp3 …) | Empleado | ||
type | (parámetro del array schema) Define el tipo de contenido para el parámetro. por defecto coloque “signature” | String |