Consumo API /PROCESS [Crear procesos de Firma] V2

Consumo API /PROCESS [Crear procesos de Firma] V2

VERSIONAMIENTO DEL DOCUMENTO

Fecha

Versión

Autor

Descripción

31-10-2024

V1

Pablo Parra

Creación y documentación inicial

20-12-2024

V2

Pablo Parra

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

Juan Valbuena

Desarrollador Firma seguro

04/02/2025

V2

Juan Valbuena

Desarrollador Firma seguro

 

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/ Ejemplo 

    • DEMO: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"

    }

  ]

}

{

  "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:

  • 1 (Solo Yo)

  • 2 (Otros y Yo)

  • 3 (Solo Otros)

Int

SI

3

signatureMethodId

Método de firma con el cual se creará el proceso.

  • 1 Firma electrónica simple.

  • 2 Firma electrónica certificada.

Int

SI

2

balanceTypeId

Método con tipo de saldo el cual asignará un valor.

  • 1 Saldo por firmas

  • 2 Saldo por documentos

[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:

  • True, el proceso tendrá orden de firmantes.

  • False, el proceso no tendrá orden de firmantes.

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:

  • True, con obligatoriedad de lectura

  • False, sin obligatoriedad de lectura.

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:

  • True, SI se envía la notificación por correo electrónico

  • False, NO se envía la notificación por correo electrónico

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:

  • True, SI se envía la notificación por WhatsApp

  • False, NO se envía la notificación por WhatsApp

Boolean




Si

True

language

Parámetro que permite agregar el idioma en que se maneja del firma manuscrita. Valores:

  • en, Inglés

  • es, Español.

No es obligatorio, por defecto lo toma como español

String

Si

es

isHandWritten

Parámetro que permite agregar firma manuscrita. Valores:

  • True, proceso tendrá firma manuscrita

  • False, el proceso no tendrá firma manuscrita.

Boolean

No

True

isPhotographic

Parámetro que permite agregar firma fotográfica. Valores:

  • True, el proceso tendrá firma fotográfica.

  • False, el proceso no tendrá firma fotográfica.

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.

  • 1 OTP Llamada.

  • 2 OTP SMS.

  • 3 OTP Email.

  • 4 OTP Whatsapp.

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

email

(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.

  • 1 Cédula de Ciudadanía.

  • 2 Cédula Extranjera.

  • 3,NUI

  • 4,NIT

  • 5,Pasaporte

  • 6,Permiso por protección temporal

Int

SI

1

typePersonId

(parámetro del objeto person) Tipo de persona del firmante.

  • 1 Persona Natural.

  • 2 Persona Jurídica.

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) 

  • 1, Contrato

  • 2,  Arrendamiento

  • 3, Sarlaft

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:

  • 1 (Solo Yo)

  • 2 (Otros y Yo)

  • 3 (Solo Otros)

Int

SI

3

signatureMethodId

Método de firma con el cual se creará el proceso.

  • 1 Firma electrónica simple.

  • 2 Firma electrónica certificada.

Int

SI

2

balanceTypeId

Método con tipo de saldo el cual asignará un valor.

  • 1 Saldo por firmas

  • 2 Saldo por documentos

[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:

  • True, el proceso tendrá orden de firmantes.

  • False, el proceso no tendrá orden de firmantes.

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