Saltar a contenido

Flujo completo de integración — Gestión de folios en Firmaris

Este documento describe el flujo técnico recomendado para integrar Firmaris en un sistema externo, mostrando qué endpoint usar, cuándo usarlo y cómo implementarlo en cada etapa.

El flujo está diseñado para ser claro, auditable y escalable.


El flujo inicia con la creación de un folio, donde se definen:

  • Documentos a firmar
  • Firmantes
  • Tipo de firma
  • Mensajes iniciales

El sistema responde con un folioId, que será el identificador único del proceso.

Ninguna operación posterior es posible sin el folioId.


POST https://www.sandboxadmin.firmaris.co/api/integrations/sign

async function crearFolio(payload, token) {
const response = await fetch(
'https://www.sandboxadmin.firmaris.co/api/integrations/sign',
{
method: 'POST',
headers: {
'x-api-key': `Bearer ${token}`
},
body: payload // FormData
}
);
const data = await response.json();
return data.data.folioId;
}

Una vez creado, el folio entra en estado:

  • PENDIENTE

Durante esta etapa:

  • Se envían correos de firma
  • Se generan enlaces de acceso
  • Se registra cada acción del firmante

Este proceso es asíncrono y puede durar minutos u horas.

No existe un endpoint para “forzar” la firma; el proceso depende del firmante.


Permite conocer el estado actual de un folio específico, incluyendo:

  • Estado general
  • Firmantes
  • Documentos
  • Historial básico

Se usa para dashboards, validaciones y seguimiento.


GET https://www.sandboxadmin.firmaris.co/api/integrations/consult?folioId={folioId}

async function consultarFolio(folioId, token) {
const response = await fetch(
`https://www.sandboxadmin.firmaris.co/api/integrations/consult?folioId=${folioId}`,
{
headers: {
'x-api-key': `Bearer ${token}`,
'Content-Type': 'application/json'
}
}
);
return response.json();
}

Permite consultar varios folios en una sola solicitud.

Ideal para:

  • Procesos batch
  • Reportes
  • Sincronización de estados

Cada folio se procesa de forma independiente.


POST https://www.sandboxadmin.firmaris.co/api/integrations/consult

async function consultarFoliosMasivo(folios, token) {
const formData = new FormData();
formData.append('folios', JSON.stringify(folios));
const response = await fetch(
'https://www.sandboxadmin.firmaris.co/api/integrations/consult',
{
method: 'POST',
headers: {
'x-api-key': `Bearer ${token}`
},
body: formData
}
);
return response.json();
}

Estas acciones no crean folios nuevos y dependen del estado actual.


Permite reenviar correos de firma a firmantes existentes.

Características:

  • No modifica el estado del folio
  • No genera nuevos links
  • Permite corregir email y teléfono

POST https://www.sandboxadmin.firmaris.co/api/integrations/forward_emails

async function reenviarCorreos(folioId, signers, token) {
const formData = new FormData();
formData.append('folioId', folioId);
formData.append('signers', JSON.stringify(signers));
const response = await fetch(
'https://www.sandboxadmin.firmaris.co/api/integrations/forward_emails',
{
method: 'POST',
headers: {
'x-api-key': `Bearer ${token}`
},
body: formData
}
);
return response.json();
}

Permite descargar un documento mediante su documentId.

  • Retorna archivo binario (PDF)
  • Requiere permisos
  • Genera evento de auditoría

GET https://www.sandboxadmin.firmaris.co/api/integrations/download?documentId={documentId}

async function descargarDocumento(documentId, token) {
const response = await fetch(
`https://www.sandboxadmin.firmaris.co/api/integrations/download?documentId=${documentId}`,
{
headers: {
'x-api-key': `Bearer ${token}`
}
}
);
return response.blob();
}

Permite cancelar uno o varios folios de forma irreversible.

Requisitos:

  • Observación obligatoria
  • Estados cancelables
  • Token válido

POST https://www.sandboxadmin.firmaris.co/api/integrations/cancel

async function cancelarFolios(folios, observation, token) {
const formData = new FormData();
formData.append('folios', JSON.stringify(folios));
formData.append('observation', observation);
const response = await fetch(
'https://www.sandboxadmin.firmaris.co/api/integrations/cancel',
{
method: 'POST',
headers: {
'x-api-key': `Bearer ${token}`
},
body: formData
}
);
return response.json();
}

Errores comunes:

  • 400 Validación
  • 403 Permisos
  • 404 Recurso inexistente
  • 500 Error interno

Buenas prácticas:

  • Manejar errores por folio en operaciones masivas
  • Registrar operaciones críticas
  • No reintentar errores de negocio

Este flujo representa la forma correcta y profesional de integrar Firmaris:

  • Cada endpoint tiene una responsabilidad clara
  • El folioId gobierna todo el ciclo
  • El flujo es auditable y seguro
  • Se adapta a procesos síncronos y asíncronos