API REST de integración para el envío de contratos y documentos para firma electrónica desde sus aplicaciones. Esta es la versión 4 (v4), plenamente compatible con peticiones del formato v3 anterior, pero ampliada con las siguientes capacidades nuevas:
Resumen de novedades v4:
1. Canales omnicanal en cascada: en lugar de un único canal de notificación (SMS/Email/SMS-cert), ahora puede definir una lista ordenada de canales (SMS, Email, RCS, WhatsApp). El sistema intentará el primero y, si falla, pasará automáticamente al siguiente, dándole máxima fiabilidad de entrega.
2. Grupos secuenciales de autorización: documentos que el firmante debe revisar y aceptar antes de llegar al contrato a firmar (NDA, RGPD, etc.). Hasta 3 grupos secuenciales (Grupo 1 → Grupo 2 → Grupo 3 → Contrato).
3. Recuadros múltiples por documento: hasta 10 recuadros de firma de tipo Firmante y 10 de tipo Emisor por cada PDF, no uno solo como en v3.
4. OTP por canal específico: el código OTP puede enviarse por el canal que elija (SMS, Email, RCS o WhatsApp), no solo SMS.
5. Multi-envío: en una sola petición puede crear N contratos independientes, cada uno con su lista de firmantes y variables propias (útil para envíos masivos personalizados).
6. Identificación interna trazable: cada mensaje generado lleva una RefInterna con formato CONTRATO-{idC}-{idU}-{idF} que permite consultar todos los envíos asociados a un contrato.
Compatibilidad legacy: si su integración actual envía peticiones v3 a este endpoint v4, funcionarán exactamente igual sin modificaciones. El sistema detecta automáticamente el formato y aplica el comportamiento adecuado. Esto le permite migrar a v4 cuando lo desee, no a la fuerza.
Versión 1.0 – 1.7: Última actualización 2017. Versiones no soportadas. Contacte con soporte para ayuda a la migración.
Versión 2.0 – 2.55: Última actualización 2021. Funcionales pero se recomienda migrar a v3 o superior.
Versión 3.0 – 3.1: Última actualización 2023. Soporte completo. Convive con v4.
Versión 4.0: Esta versión (2026). Añade canales omnicanal, autorizaciones secuenciales, recuadros múltiples, OTP por canal elegible y multi-envío. Compatible 100% hacia atrás con v3.
En su cuenta de usuario encontrará el Usuario API y el API Token, ambos necesarios para realizar las peticiones REST. Las peticiones, por seguridad, deben realizarse en POST sobre HTTPS (TLS ≥ 1.2).
Para utilizar la Autenticación Básica HTTP debe incluir una cabecera del tipo:
Authorization: Basic Base64StringAPI
donde Base64StringAPI es la codificación en Base64 de la cadena UsuarioAPI:APIToken. Puede encontrar su Usuario API y API Token en su cuenta de usuario en Tus Datos → Configurar Cuenta.
Para generar el string codificado en Base64, simplemente concatene UsuarioApi:APIToken y codifíquelo con cualquier función base64_encode.
Todas las peticiones a esta API se realizan mediante POST en formato JSON en el body. La cabecera debe incluir Content-Type: application/json.
El parámetro RESP indica el formato de la respuesta. Valores posibles: JSON (recomendado), XML o TXT. Si no se especifica, se asume TXT por compatibilidad con versiones antiguas de la API.
SMS: mensaje de texto al móvil del firmante.EMAIL: correo electrónico al email del firmante. Puede usar el dominio por defecto del distribuidor (token interno __mensatek__ — el nombre se conserva por compatibilidad con datos existentes en BD; conceptualmente significa «dominio por defecto») o un dominio propio validado por DNS en su cuenta.RCS: mensaje RCS (Rich Communication Services) al móvil del firmante. Requiere agente RCS y plantilla configurados en el panel.WHATSAPP: mensaje WhatsApp al móvil del firmante. Requiere cuenta WhatsApp Business (WABA) y plantilla configurada en el panel.Cascada: el array CANALESFIRMA es una lista ordenada. El sistema intentará el primer canal; si el envío falla (operador caído, número inválido, plantilla rechazada, etc.), pasará automáticamente al siguiente. Si todos fallan, el envío queda marcado como fallido y puede reintentarse manualmente o esperar al recordatorio.
Recordatorios rotativos: si configura recordatorios automáticos, cada uno utilizará el siguiente canal de la cascada (no el mismo que ya falló previamente). De ese modo se maximiza la probabilidad de alcanzar al firmante.
Variables sustituibles en mensajes y plantillas (todos estos formatos son equivalentes, puede usar el que prefiera): {{LINK}}, [LINK], (LINK), ###LINK###. Las variables disponibles son:
{{LINK}} — enlace único de firma para ese firmante.
{{NOMBRE}} — nombre del firmante.
{{NIF}} — NIF del firmante.
{{EMAIL}} — email del firmante.
{{MOVIL}} — móvil del firmante.
{{TIPODOCUMENTO}} — el valor que pase en TIPODOCUMENTO (por defecto 'contrato').
TIPOFIRMA=OTP, el sistema enviará al firmante un código de un solo uso (PIN de 5 dígitos) que debe introducir antes de firmar. Por defecto se envía por SMS al móvil del firmante (comportamiento legacy v3). En v4 puede configurar CANALESOTP con la misma estructura que CANALESFIRMA para enviar el OTP por el canal/plantilla que prefiera.
La variable sustituible específica del PIN es: {{CODE}}. La plantilla del canal OTP debe contenerla obligatoriamente.
CONTRATO (default): el documento principal a firmar. Acepta recuadros de firma del firmante y del emisor.AUTORIZACION: un documento que el firmante debe revisar y aceptar antes de llegar al contrato a firmar. Se agrupan en hasta 3 grupos secuenciales mediante GRUPOAUT (1, 2 o 3). El firmante deberá aceptar primero todos los del Grupo 1, después los del Grupo 2, después los del Grupo 3 y, finalmente, firmar el documento de tipo CONTRATO.Coste extra por autorizaciones: PRECIO_FIJO_AUTORIZACIONES (7 créditos) × número de grupos distintos usados. Por ejemplo, si tiene autorizaciones del Grupo 1 y Grupo 3 (sin Grupo 2), se cobran 14 créditos (no 21).
STAMPFIRMAFIRMANTE) y otro para el emisor (STAMPFIRMAEMISOR). En v4 puede definir hasta 10 recuadros de cada tipo mediante los nuevos parámetros plurales STAMPFIRMASFIRMANTE y STAMPFIRMASEMISOR (arrays de strings con el mismo formato que el singular: pag,x,y,tamx,tamy,H|V).
Si solo necesita un recuadro, siga usando los singulares legacy. Si envía ambos (singular y plural) prevalece el plural.
Si el JSON incluye el campo ENVIOS (array de objetos), se ignoran los campos FIRMANTES y PERSONALIZACION de nivel raíz y cada objeto en ENVIOS genera un contrato independiente. La respuesta devuelve un array Contratos con un objeto por cada contrato creado.
Conexiones en vacío: Una conexión errónea repetida será tratada por el sistema como spam y podrá llegar a bloquear temporalmente la conexión. Evite realizar repetidas conexiones con datos erróneos o conexiones rápidas 'en vacío' (sin envíos) con los mismos datos para obtener el número de créditos o el mismo report.
Para obtener reports de forma óptima en tiempo real se recomienda configurar la API en el panel para recibirlos en un script de su web.
Respuesta de las peticiones:
La mayoría de las funciones disponen de un parámetro RESP que define el formato de la respuesta (JSON, XML o TXT). Se recomienda definirlo siempre como JSON para máxima claridad. Si no se define, las funciones responden por defecto en formato TXT por compatibilidad con versiones antiguas.
Funcionamiento recomendado:
- PROCESO 1: Envío de petición de firma con la función /EnviarContrato.
- PROCESO 2: Recepción automática de cambios de estado en su web (configurable en el panel — ver sección 'Recepción automática de eventos' en este documento).
Función principal de la API. Crea un contrato (o varios, si usa ENVIOS) y envía la solicitud de firma al/a los firmantes por los canales configurados.
Esta es la función más completa de la API. Soporta tanto el formato legacy v3 (un único canal definido por MEDIOCOMUNICACION, recuadros singulares, un solo envío) como el formato nuevo v4 (cascada omnicanal con CANALESFIRMA/CANALESOTP, recuadros múltiples, autorizaciones por grupos, multi-envío).
El sistema detecta automáticamente qué formato usa el cliente y aplica el comportamiento adecuado. Es perfectamente válido mezclar parámetros legacy y nuevos en una misma petición (por ejemplo: enviar CANALESFIRMA moderno pero seguir usando STAMPFIRMAFIRMANTE singular).
ATENCIÓN: revise la sección de recepción de eventos al final si desea recibir el estado de los contratos y las interacciones del firmante en tiempo real en un script de su servidor.
| Firmantes | Array of arrays Example: Firmantes=[{"Nombre":"Pedro Pérez","NIF":"00000000T","Email":"destinatario@eldominio.com","Telefono":"34600000001","Orden":1}] Array JSON con los datos de los firmantes. Use este parámetro cuando solo va a enviar UN contrato. Para enviar varios contratos en una sola petición, use
|
| Envios | Array of strings Example: Envios=[{"Firmantes":[{"Nombre":"Juan","NIF":"11111111H","Telefono":"34611111111","Email":"juan@a.com","Orden":1}],"Variables":{"importe":"100€"}}] NUEVO en v4. Array JSON para crear múltiples contratos independientes en una sola petición. Cada objeto del array genera un contrato.
|
| Flujotrabajo | string Example: Flujotrabajo=238754787 Identificador de un flujo de trabajo previamente guardado en su panel. Tiene predefinidos documentos, plantillas, tipo de firma, etc. y basta con definir los firmantes en la petición. |
| Firmasemisor | Array of arrays Example: Firmasemisor=[{"ID":1865998}] Array JSON con las firmas de emisor (usted) guardadas en su cuenta que desea estampar sobre los documentos firmados. El sistema añade su firma y certificados al documento al final del proceso, completando el documento legal. Los recuadros donde se estampan se definen con
|
| Documentos | Array of arrays Example: Documentos=[{"Tipo":"PDF","Nombre":"Contrato","Contenido":"JVBERi0xLj...","Aceptacion":"SI","TipoDoc":"CONTRATO","StampFirmaFirmante":"1,80,500,180,80,H"}] Array JSON con la lista de documentos del contrato. Cada elemento representa un PDF, una plantilla del panel o una casilla de verificación.
|
| Documentossolicitados | Array of arrays Example: Documentossolicitados=[{"Texto":"Adjunte copia del DNI","Firmante":0}] Array JSON con documentos que el firmante debe ADJUNTAR al firmar (ej. copia DNI, justificante, etc.). Cada elemento define un texto descriptivo y a qué firmante se le pide.
|
| Personalizacion | string Example: Personalizacion={"importe":"100€","plazo":"30 días"} Variables sustituibles en plantillas y mensajes. Debe ser un string JSON con un objeto plano de pares clave/valor. Las claves se normalizan a minúsculas y se accede a ellas en plantillas como
|
| Tipofirma | string Enum: 1 2 3 4 Example: Tipofirma=BIOMETRICA Tipo de firma a aplicar. IMPORTANTE: debe usar el TEXTO, no el número.
|
| Remitente | string Example: Remitente=FIRMA Identificador del emisor (3-11 caracteres alfanuméricos). Usado en SMS legacy y como fallback si no especifica REMITENTE en cada canal SMS. |
| Mensaje | string Example: Mensaje=Hola [NOMBRE], firma el [TIPODOCUMENTO] aquí: [LINK] Legacy v3. Texto del SMS/Email cuando se usa |
| Mediocomunicacion | string Enum: 1 2 3 Example: Mediocomunicacion=SMS Legacy v3. Canal único de notificación. Se ignora si envía CANALESFIRMA; en su lugar use CANALESFIRMA para definir uno o varios canales.
|
| Tipodocumento | string Example: Tipodocumento=Contrato Tipo de documento (texto libre, max 50 chars). Se sustituye en el placeholder |
| Verificacionidentidad | string Enum: "NO" "SI" Example: Verificacionidentidad=NO
|
| Minparecidoverificacion | integer |
| Referenciausuario | string Example: Referenciausuario=PEDIDO-2026-00123 Referencia interna del integrador (max 200 chars). Se devuelve en los reports y permite asociar el contrato con su sistema externo. Acepta letras, dígitos, espacios y los caracteres |
| Accesible | string Enum: "NO" "SI" Example: Accesible=SI
|
| Alternamedios | string Enum: "NO" "SI" Example: Alternamedios=SI
|
| Recordatorios | integer Example: Recordatorios=3 Número de recordatorios automáticos a enviar al firmante si no ha firmado (1-10). Cada recordatorio usa el siguiente canal de la cascada (rotación). |
| Fechalimite | string Example: Fechalimite=2026-12-31 23:59 Fecha límite de firma en formato |
| Idioma | string Enum: "es" "pt" Example: Idioma=es Idioma de la interfaz que verá el firmante en la pantalla de firma. |
| Minimocheck | integer Example: Minimocheck=0 Si hay CHECKBOXES en DOCUMENTOS, número mínimo de casillas que el firmante debe marcar para poder firmar. Entre 0 y el número total de checkboxes. |
| Maximocheck | integer Example: Maximocheck=10 Si hay CHECKBOXES en DOCUMENTOS, número máximo de casillas que el firmante puede marcar. Debe ser ≥ MINIMOCHECK. |
| Mensajeautorizacion | string Example: Mensajeautorizacion=Antes de firmar el contrato debe revisar y aceptar los documentos de autorización. NUEVO v4. Mensaje informativo (max 1000 chars) que se muestra al firmante en una ventana emergente al llegar al primer documento de autorización. Útil para explicar al firmante qué va a revisar antes de firmar el contrato. Se ignora si no hay documentos con TipoDoc=AUTORIZACION. |
| Resp | string Enum: "TXT" "JSON" "XML" Example: Resp=JSON Formato de la respuesta. Recomendado
|
| Canalesfirma | Array of strings Example: Canalesfirma=[{"TIPO":"SMS","REMITENTE":"FIRMA","MENSAJE":"Firma: {{LINK}}"}] NUEVO en v4. Array JSON con la lista ordenada de canales por los que enviar la solicitud de firma. El sistema intentará el primero; si falla, pasará al siguiente automáticamente (cascada). Si configura recordatorios, cada uno usará el siguiente canal disponible (rotación).
|
| Canalesotp | Array of strings Example: Canalesotp=[{"TIPO":"SMS","REMITENTE":"FIRMA","MENSAJE":"Código: {{CODE}}"}] NUEVO en v4. Array JSON con los canales por los que enviar el código OTP (PIN de 5 dígitos) cuando
|
| Res required | integer <int32> Resultado de la operación.
|
| ContratoId | string Identificador del contrato (CSV — Código Seguro de Verificación). Junto con ReportID se usa para llamadas posteriores a otras funciones de la API. También llega en los eventos en tiempo real. |
| ReportId | integer Identificador interno de reports. Junto con ContratoID se usa para llamadas posteriores (ej. descarga del PDF certificado, forzar reenvío, etc.). |
| Cred | integer Créditos restantes en la cuenta tras el envío. |
| Firmantes | integer Número de firmantes del contrato. |
| Documentos | integer Número de documentos enviados (PLANTILLAS + PDFs + CHECKBOXES). |
| Contratos | Array of arrays NUEVO v4. Solo presente si usó |
curl --location --request POST 'https://api.mensatek.com/firma/v4/EnviarContrato' \ --header 'Authorization: Basic BASE64ENCODEdelStringUsuarioAPI:APIToken' \
[- {
- "Res": "1",
- "ContratoId": "ASYYFRE5492-HN776TFD",
- "ReportId": "1994779988",
- "Cred": "12000",
- "Firmantes": "2",
- "Documentos": "3",
- "Contratos": "[{\"ContratoId\":\"...\",\"ReportID\":123,\"Firmantes\":1,\"Documentos\":2}]"
}
]RECEPCIÓN EN TIEMPO REAL DE LOS ESTADOS DE CADA CONTRATO EN UN SCRIPT DE SU SERVIDOR.
Activando la opción de recibir los reports en tiempo real en un script en su servidor desde su panel de usuario, recibirá una petición POST con el formato indicado cada vez que cada contrato enviado cambie de estado.
Puede configurar recibir las peticiones con autenticación básica y en formato JSON o FORM-DATA
Parámetros recibidos en su script en petición POST con la configuración especificada en su panel de usuario/configuración API.
| Servicio required | string Tipo de report. Para esta API recibirá | ||||||||||||||||||||||||
| ContratoID | string Identificador del contrato (CSV). | ||||||||||||||||||||||||
| ReportID | integer Identificador interno de reports. | ||||||||||||||||||||||||
| Resultado required | integer Estado del contrato. Estados posibles:
| ||||||||||||||||||||||||
| FechaEnvio | string Fecha en la que se envió el contrato. | ||||||||||||||||||||||||
| FechaFirma | string Fecha en la que se firmó el contrato (si se ha firmado). | ||||||||||||||||||||||||
| NumFirmantes required | string Número de firmantes del contrato. | ||||||||||||||||||||||||
| NumFirmados | string Número de firmantes que ya han firmado. | ||||||||||||||||||||||||
| Referencia | string REFERENCIAUSUARIO que envió en la petición original. | ||||||||||||||||||||||||
| TipoFirma | integer Tipo de firma del contrato (numérico):
| ||||||||||||||||||||||||
| CanalUsado | string NUEVO v4. Canal por el que se envió el último mensaje al firmante. Posibles: |
{- "Servicio": "CONTRATACION",
- "ContratoID": "ASYYFRE5492-HN776TFD",
- "ReportID": "299846332",
- "Resultado": "11",
- "FechaEnvio": "2026-05-03 10:10",
- "FechaFirma": "2026-05-03 11:30",
- "NumFirmantes": "2",
- "NumFirmados": "1",
- "Referencia": "PEDIDO-2026-00123",
- "TipoFirma": "3",
- "CanalUsado": "sms"
}Fuerza la continuación inmediata del flujo de firma. Su uso típico es reenviar la solicitud al firmante actual cuando no responde. Si configuró cascada de canales en CANALESFIRMA, este reenvío usará el SIGUIENTE canal de la cascada (rotación). Limitado a 2 ejecuciones por día por proceso de firma.
| Reportid | string Example: Reportid=1283876988 ReportID devuelto en la función de envío. |
| Contratoid | string Example: Contratoid=ASYYFRE5492-HN776TFD ContratoID devuelto en la función de envío. |
| Resp | string Example: Resp=JSON Formato de respuesta: |
| Res required | integer <int32>
|
| Cred | integer Créditos restantes. |
| CanalUsado | string NUEVO v4. Canal por el que se intentó el reenvío. |
curl --location --request POST 'https://api.mensatek.com/firma/v4/ForzarRecomunicacionCONTRATO' \ --header 'Authorization: Basic BASE64ENCODEdelStringUsuarioAPI:APIToken' \
[- {
- "Res": "1",
- "Cred": "12000",
- "CanalUsado": "email"
}
]Descarga el fichero PDF del certificado del contrato firmado. Se ejecuta normalmente como respuesta a la recepción del report con estado 101/1014 (Firmado y Certificado).
| Reportid | string Example: Reportid=1283876988 ReportID devuelto en la función de envío. |
| Contratoid | string Example: Contratoid=ASYYFRE5492-HN776TFD ContratoID devuelto en la función de envío. |
| Doc | string Example: Doc=CERTIFICADO Tipo de documento a descargar:
|
| Resp | string Example: Resp=JSON Formato de respuesta cuando hay error: |
curl --location --request POST 'https://api.mensatek.com/firma/v4/GetCertificadoCONTRATO' \ --header 'Authorization: Basic BASE64ENCODEdelStringUsuarioAPI:APIToken' \
PDF certificado del contrato.
Devuelve el número de créditos en la cuenta. Función esporádica ya que la mayoría de funciones devuelven el saldo en la respuesta.
| Resp | string Enum: "TXT" "JSON" "XML" Example: Resp=JSON Formato de respuesta: |
| Res required | integer <int32>
|
| Cred required | double Créditos restantes en la cuenta. |
curl --location --request POST 'https://api.mensatek.com/firma/v4/GetCreditos' \ --header 'Authorization: Basic BASE64ENCODEdelStringUsuarioAPI:APIToken' \
[- {
- "Res": "1",
- "Cred": "12000"
}
]CANALESFIRMA con un array de canales en lugar de o además de MEDIOCOMUNICACION.TipoDoc:'AUTORIZACION' y GrupoAut: 1|2|3 a los documentos relevantes.StampFirmaFirmante (singular) por StampFirmasFirmante (array de strings).ENVIOS en lugar de FIRMANTES + PERSONALIZACION.CANALESOTP cuando use TIPOFIRMA=OTP.| v3 | v4 |
|---|---|
MEDIOCOMUNICACION:'SMS' + MENSAJE + REMITENTE | CANALESFIRMA:[{TIPO:'SMS', REMITENTE:'...', MENSAJE:'... {{LINK}}'}] |
STAMPFIRMAFIRMANTE:'1,80,500,180,80,H' | STAMPFIRMASFIRMANTE:['1,80,500,180,80,H'] |
| Solo se podía firmar el contrato directo | TipoDoc:'AUTORIZACION' + GrupoAut:1 añade pasos previos |
créditos = PRECIO_FIJO_CONTRATO (11)
+ nFirmantes × FIRMANTE (3)
+ nFirmantesConVerifica × VERIFICAR_IDENTIDAD (20)
+ nCheckboxes × CHECKBOX (1)
+ (hayDocumentosSolicitados ? PRECIO_FIJO_SOLICITUD_DOCUMENTOS (11) : 0)
+ nGruposAutorizacionDistintos × PRECIO_FIJO_AUTORIZACIONES (7)
+ extras según MEDIOCOMUNICACION (legacy):
SMS: PRO_CREDITOS_MENSAJE
EMAIL: 0
SMSCERTIFICADO: CREDITOS_CERTIFICADO + CREDITOS_PARTE_CERTIFICADO
Un contrato con 2 firmantes, 1 PDF, 2 checkboxes, sin verificación de identidad, sin documentos solicitados, sin autorizaciones, enviado por SMS legacy:
11 + 2×3 + 0 + 2×1 + 0 + 0 + 2×PRO_CREDITOS_MENSAJE = 19 + 2×SMS
Un contrato con 1 firmante, 1 PDF, 0 checkboxes, con autorizaciones del Grupo 1 y Grupo 3 (2 grupos distintos), sin SMS legacy (usa CANALESFIRMA):
11 + 1×3 + 0 + 0 + 0 + 2×7 = 28 créditos. Cada canal de la cascada se cobra cuando se envía (no al crear el contrato).
| Código | Significado | Cuándo |
|---|---|---|
1 | OK | Operación exitosa. |
-1 | Auth/IP | Credenciales inválidas o IP no autorizada. |
-2 | Sin créditos | El campo Necesarios indica cuántos hacen falta. |
-3 | Parámetros | El campo Error describe el problema concreto. |
-4 a -6 | INSERT contrato | Error interno al insertar (contacte soporte). |
-7 a -9 | INSERT firmantes | Error interno al insertar firmantes. |
-10 a -14 | INSERT documentos | Error interno al insertar documentos. |
-15 | ACEPTACION=SI requiere 1 PDF | Si activa scroll de aceptación, debe haber exactamente UN PDF. |
-16 | PDF inexistente | El PDF referenciado no existe en su cuenta. |
-20 a -22 | INSERT solicitudes | Error al insertar documentos solicitados al firmante. |
-23 | NUEVO v4 Canal inválido | Estructura/tipo de un canal en CANALESFIRMA o CANALESOTP es incorrecta. El campo Error detalla cuál. |
-24 | NUEVO v4 Plantilla sin {{LINK}}/{{CODE}} | La plantilla referenciada no contiene el placeholder requerido. |
-25 | NUEVO v4 Dominio email no validado | El DOMINIO de un canal Email no está validado por DNS en su cuenta. |
-26 | NUEVO v4 WABA no configurado | WhatsApp Business no está configurado en su cuenta. |
-27 | NUEVO v4 GRUPOAUT inválido | GrupoAut debe ser 1, 2 o 3 y solo aplica con TipoDoc=AUTORIZACION. |
{
"RESP": "JSON",
"TIPOFIRMA": "BIOMETRICA",
"MEDIOCOMUNICACION": "SMS",
"REMITENTE": "FIRMA",
"MENSAJE": "Firma aquí: [LINK]",
"FIRMANTES": [{"Nombre":"Juan","NIF":"00000000T","Telefono":"34600000001","Email":"j@a.com","Orden":1}],
"DOCUMENTOS": [{"Tipo":"CHECKBOX","Texto":"Acepto","Inicial":"OFF","Final":"ON"}]
}
{
"RESP": "JSON",
"TIPOFIRMA": "BIOMETRICA",
"CANALESFIRMA": [
{"TIPO":"SMS","REMITENTE":"FIRMA","MENSAJE":"Firma: {{LINK}}"},
{"TIPO":"EMAIL","DOMINIO":"__mensatek__","REMITENTE":"contratos@su-dominio.com","ASUNTOEMAIL":"Firma","MENSAJEEMAIL":"Pulse {{LINK}}"}
],
"FIRMANTES": [{"Nombre":"Juan","NIF":"00000000T","Telefono":"34600000001","Email":"j@a.com","Orden":1}],
"DOCUMENTOS": [{"Tipo":"PDF","Nombre":"Contrato","Contenido":"JVBERi0xLj...","Aceptacion":"SI","StampFirmaFirmante":"1,80,500,180,80,H"}]
}
{
"RESP": "JSON",
"TIPOFIRMA": "BIOMETRICA",
"MENSAJEAUTORIZACION": "Antes de firmar revise NDA y RGPD.",
"CANALESFIRMA": [{"TIPO":"SMS","REMITENTE":"FIRMA","MENSAJE":"Firma: {{LINK}}"}],
"FIRMANTES": [{"Nombre":"Juan","NIF":"00000000T","Telefono":"34600000001","Email":"j@a.com","Orden":1}],
"DOCUMENTOS": [
{"Tipo":"PDF","Nombre":"NDA","Contenido":"JVBERi0xLj...","TipoDoc":"AUTORIZACION","GrupoAut":1},
{"Tipo":"PDF","Nombre":"RGPD","Contenido":"JVBERi0xLj...","TipoDoc":"AUTORIZACION","GrupoAut":2},
{"Tipo":"PDF","Nombre":"Contrato","Contenido":"JVBERi0xLj...","TipoDoc":"CONTRATO","Aceptacion":"SI","StampFirmaFirmante":"1,80,500,180,80,H"}
]
}
{
"RESP": "JSON",
"TIPOFIRMA": "OTP",
"CANALESFIRMA": [{"TIPO":"SMS","REMITENTE":"FIRMA","MENSAJE":"Firma: {{LINK}}"}],
"CANALESOTP": [
{"TIPO":"SMS","REMITENTE":"FIRMA","MENSAJE":"Tu código: {{CODE}}"},
{"TIPO":"EMAIL","DOMINIO":"__mensatek__","REMITENTE":"otp@su-dominio.com","ASUNTOEMAIL":"OTP","MENSAJEEMAIL":"Tu código es {{CODE}}"}
],
"FIRMANTES": [{"Nombre":"Juan","NIF":"00000000T","Telefono":"34600000001","Email":"j@a.com","Orden":1}],
"DOCUMENTOS": [{"Tipo":"CHECKBOX","Texto":"Acepto","Inicial":"OFF","Final":"ON"}]
}
{
"RESP": "JSON",
"TIPOFIRMA": "BIOMETRICA",
"CANALESFIRMA": [{"TIPO":"SMS","REMITENTE":"FIRMA","MENSAJE":"Hola {{NOMBRE}}: {{LINK}}"}],
"ENVIOS": [
{"Firmantes":[{"Nombre":"Juan","NIF":"11111111H","Telefono":"34611111111","Email":"j@a.com","Orden":1}],"Variables":{"importe":"100€"}},
{"Firmantes":[{"Nombre":"Ana","NIF":"22222222J","Telefono":"34622222222","Email":"a@a.com","Orden":1}],"Variables":{"importe":"250€"}}
],
"DOCUMENTOS": [{"Tipo":"PLANTILLA","Plantilla":"1234-5678","Nombre":"Contrato","Aceptacion":"SI"}]
}
La respuesta del ejemplo 5 contendrá un campo Contratos con 2 objetos (uno por contrato creado).