SET: Nueva solicitud de firma

Este servicio permite crear una nueva solicitud de firma (SET) para uno o varios documentos, que pueden ser firmados por uno o varios destinatarios.


Solicitud (Request)

Método y URL POST https://{urlbase}/documents/api/v3/set

Cabeceras (Headers)

Clave Valor
Content-Type application/json

El cuerpo de la solicitud de firma debe contener un objeto JSON


JSON del SET(Solicitud de firma)

A continuación se describen las claves utilizadas en el cuerpo en la solicitud de firma.

Clave Tipo Obligatorio Descripción
groupCode string ✅ Sí Código del grupo o entidad que identifica el contexto del SET.
title string No Título descriptivo de la solicitud.
description string No Descripción detallada de la solicitud.
expires integer (epoch ms) No Fecha de expiración en milisegundos desde época Unix.
retryTime integer No Intervalo de tiempo (en días) entre recordatorios automáticos.
retryCount integer No Número máximo de recordatorios automáticos.
recipients array[Recipient] No Lista de destinatarios o firmantes.
customization object ✅ Sí Personalización de notificaciones (correo, SMS, etc.).
messages array[Message] ✅ Sí Documentos que conforman el conjunto de firma.
metadataList array[Param] No Metadatos asociados al SET.
externalCode string No Código externo para correlación con sistemas externos.
externalStatus string No Estado externo de control o sincronización.
userCode string No Código del usuario que envía la solicitud.
autoFinalize boolean No Si true, el proceso se finaliza automáticamente al completar todas las firmas.
callbackMails string No Correos electrónicos para recibir notificación y/o documento final.
callbackURL string No URL a la que se enviará un POST al cambiar el estado del SET.
callbackAuthorization string No Token o credencial usada en el callback.
callbackRedirectURL string No URL externa de redirección al finalizar el proceso.
callbackRedirectURLTargetWindow string No Ventana destino para la redirección (ej. _blank, _self).
workflowCode string No Flujo de firmantes que sustituye la configuración de una lista de recipients, siendo reutilizable en nuestras peticiones.Para más información de como crear un flujo y como obtener el código necesario, pulsa el siguiente enlace.

Clave Recipient

Define a cada uno de los firmantes o destinatarios de la solicitud.

Clave Tipo Obligatorio Descripción
key string ✅ Sí Identificador único del destinatario o firmante.
mail string No Correo electrónico del firmante.
mailCc string No Correo en copia (CC).
mailBcc string No Correo en copia oculta (BCC).
phone string No Teléfono de contacto con prefijo internacional.
name string No Nombre completo del destinatario.
id string No Documento de identidad del firmante (DNI, cédula, pasaporte, etc.).
order integer No Orden en el flujo de firma (para procesos secuenciales).
presential boolean No Indica si el firmante es presencial (firma en punto físico).
userCode string No Código de usuario en Viafirma.
deviceCode string No Código del dispositivo asociado al usuario.
appCode string No Código de la aplicación de Viafirma asociada.
notificationType string No Tipo de notificación (MAIL, MAIL_SMS, SMS, NONE).
callbackType string No Canal del callback al firmante (correo, SMS, etc.).
smsType string No Tipo de SMS o canal (SMS, WHATSAPP, SMS_WHATSAPP).
label string No Etiqueta descriptiva o alias del firmante.
optional boolean No Si true, su firma es opcional (firma solidaria).

Clave Message

Contiene la información del documento a firmar.

Clave Tipo Obligatorio Descripción
document object (Document) ✅ Sí Documento principal a firmar.
metadataList array[Param] No Metadatos asociados al documento.
policies array[Policy] No Políticas de firma aplicadas al documento.

Clave Document

Clave Tipo Obligatorio Descripción
templateType string ✅ Sí Define el tipo de origen del documento (uploaded, url, pdf, etc.).
templateReference string Depende del tipo Referencia del documento: token de carga o URL.
templateCode string No Código de una plantilla predefinida en Viafirma.
items array No Valores dinámicos para los campos de una plantilla.
formRequired boolean No Indica si el formulario debe completarse antes de firmar.
watermarkText string No Texto a mostrar como marca de agua (solo para previsualización).
policyCode string No Código de política preconfigurada en Viafirma.

Respuestas (Responses)

Ejemplos de solicitud de firma.

A continuación se muestra un ejemplo para crear una solicitud con dos documentos y dos firmantes. Esta solicitud usa una plantilla de configuración del documento. Puedes ver como configurar tu propia plantilla en la web de Viafirma Documents usando el siguiente enlace.

{
  "groupCode": "MY_GROUP_001",
  "title": "Acuerdo de servicio - Lote 123",
  "description": "Solicitud de firma con dos documentos y dos firmantes",
  "recipients": [
    {
      "key": "signer01",
      "name": "Ana Pérez",
      "mail": "[email protected]",
      "phone": "+34123456789"
    },
    {
      "key": "signer02",
      "name": "Luis García",
      "mail": "[email protected]",
      "phone": "+34987654321"
    }
  ],
  "customization": {
    "requestMailSubject": "Contrato listo para firmar",
    "requestMailBody": "Hola {{recipient.name}}, revisa y firma el documento.",
    "requestSmsBody": "Por favor firma tu contrato en el enlace recibido"
  },
  "messages": [
    {
      "document": {
        "templateType": "pdf",
        "templateCode": "TEMPLATE_CONTRATO_V1"
      },
      "metadataList": [
        { "key": "orderId", "value": "123-XYZ" }
      ],
      "policies": [
        {
          "signatures": [
            { "type": "CLIENT", "recipientKey": "signer01" },
            { "type": "CLIENT", "recipientKey": "signer02" }
          ]
        }
      ]
    },
    {
      "document": {
        "templateType": "pdf",
        "templateCode": "ANEXO_01"
      },
      "policies": [
        {
          "signatures": [
            { "type": "CLIENT", "recipientKey": "signer01" },
            { "type": "CLIENT", "recipientKey": "signer02" }
          ],
          "attachments": []
        }
      ]
    }
  ]
}

Respuesta Exitosa (Success)

Código de estado: 200 OK

Cuerpo de la respuesta:

{
  "code": "string",
  "status": "string",
  "messages": [
    {
      "code": "string",
      "status": "string",
      "policies": []
    }
  ]
}

Respuesta de Error (Error)

Código de estado: 4xx o 5xx (distinto de 200)

Cuerpo de ejemplo:

{
  "code": 999,
  "type": "String",
  "message": "Descripción del error",
  "trace": "Detalles del error"
}

Para consultar el listado de errores, visita el siguiente enlace.


En el siguiente enlace puedes ver ejemplos de las diferentes solicitudes de fima que puedes realizar y las respuestas que debes recibir.

Notas y buenas prácticas

  • Para firma desatendida (server-side) se utiliza el mismo endpoint, ajustando las políticas a tipo SERVER.
  • Se recomienda usar callbackURL para recibir notificaciones automáticas de cambio de estado. También podrás consultar el estado de un callbackURL e incluso realizar un reenvío en caso de error.
  • Para pruebas rápidas, puede usarse templateType: "url" apuntando a un PDF público.
  • Si se sube un archivo al entorno sandbox, primero se solicita el enlace (GET /uploads/link/pdf), se realiza el PUT del archivo y luego se usa el token devuelto como templateReference.

results matching ""

    No results matching ""