Saltar a contenido

Modelos y estructura de datos — API de Firmaris

Esta sección describe los modelos de datos principales utilizados en la API de Firmaris.

El objetivo es que cualquier integrador pueda entender:

  • Qué entidades existen
  • Qué campos las componen
  • Cómo se relacionan entre sí
  • Cómo interpretar las respuestas del sistema

Los modelos fundamentales del sistema son:

  1. Folio
  2. Firmante (Signer)
  3. Documento
  4. Respuestas estándar de la API
  5. Errores

Todos los endpoints de integración trabajan directa o indirectamente con estos modelos.


El folio representa un proceso de firma completo.

Es la entidad central del sistema y agrupa:

  • Documentos
  • Firmantes
  • Estado del proceso
  • Configuración de firma

{
"folioId": "string",
"name": "string",
"message": "string | null",
"observation": "string | null",
"dateCreate": "YYYY-MM-DD HH:mm:ss",
"dateLastUpdate": "YYYY-MM-DD HH:mm:ss",
"state": "string",
"stateName": "string",
"signatureType": "string",
"signatureTypeName": "string",
"flag_drop": "string"
}

CampoTipoDescripción
folioIdstringIdentificador único del folio
namestringNombre interno del folio
messagestring | nullMensaje enviado a los firmantes
observationstring | nullObservación administrativa
dateCreatestringFecha de creación
dateLastUpdatestringÚltima actualización
statestringCódigo interno de estado
stateNamestringEstado legible del folio
signatureTypestringCódigo del tipo de firma
signatureTypeNamestringNombre del tipo de firma
flag_dropstringIndicador de eliminación lógica

EstadoDescsripción
FIRMADOEl proceso fue completado
PENDIENTEAún faltan firmas
RECHAZADO FIRMANTEEl firmante rechazo
FIRMADO Y APROBADOSe aprobó por interventor
RECHAZADO GESTION/ADMINISTRADORRechazado por interventor o administrador
ANULADOProceso cancelado

Un firmante representa a una persona que debe firmar uno o más documentos dentro del folio.

Los firmantes no existen fuera del contexto de un folio.


{
"name": "string",
"documentType": "string",
"documentNumber": "string",
"email": "string",
"cellPhoneNumber": "string",
"folioState": "string",
"folioStateName": "string",
"ipSignatureAddress": "string | null",
"dateLastUpdate": "YYYY-MM-DD HH:mm:ss"
}

CampoTipoDescripción
namestringNombre completo del firmante
documentTypestringTipo de documento (CC, CE, etc.)
documentNumberstringIdentificador único del firmante
emailstringCorreo de notificación
cellPhoneNumberstringTeléfono para OTP
folioStatestringEstado del firmante dentro del folio
folioStateNamestringEstado legible
ipSignatureAddressstring | nullIP desde la que firmó
dateLastUpdatestringÚltima acción del firmante

EstadoDescripción
PENDIENTENo ha firmado
FIRMADOFirma completada
RECHAZADORechazó la firma
ERRORError durante la firma

Un documento representa un archivo asociado a un folio.

Puede estar:

  • Pendiente de firma
  • Firmado
  • Disponible para descarga

{
"documentId": "string",
"name": "string",
"dateCreate": "YYYY-MM-DD HH:mm:ss"
}

CampoTipoDescripción
documentIdstringIdentificador único del documento
namestringNombre del archivo
dateCreatestringFecha de carga

Todas las respuestas de la API siguen una estructura uniforme.


{
"success": true,
"status": 200,
"message": "string",
"data": {}
}

CampoTipoDescripción
successbooleanIndica éxito o error
statusnumberCódigo HTTP
messagestringMensaje descriptivo
dataobjectInformación específica del endpoint

Los errores siguen una estructura consistente para facilitar su manejo.


{
"success": false,
"status": 400,
"error": {
"message": "string"
}
}

  • No asumas que data existe cuando hay errores
  • Usa status para la lógica de control
  • Registra message para auditoría
  • No reintentes errores de negocio (400, 403)

Relación conceptual:

  • Un folio tiene:
    • Uno o más documentos
    • Uno o más firmantes
  • Un firmante pertenece a un solo folio
  • Un documento pertenece a un solo folio
  • Todas las acciones giran alrededor del folioId

Comprender estos modelos es fundamental para:

  • Integrar correctamente la API
  • Interpretar respuestas
  • Manejar errores de forma adecuada
  • Construir flujos robustos y auditables

Esta estructura garantiza consistencia, trazabilidad y seguridad en toda la integración.