Copiar página

Templates

Una plantilla es un PDF (o DOCX) que reutilizas para emitir documentos. Si el PDF trae un formulario (AcroForm), sus widgets entran como campos con nombre, tipo y posición; tú les pones rol y, al crear cada documento, el firmante que toma ese rol hereda sus campos. Los campos también se dibujan por API (POST …/fields), se copian desde un documento ya armado (fields:from-document) y se versionan como un layout declarativo (PUT …/fields). La emisión vive en POST /v3/documents con templateId; la guía Formularios PDF recorre el proceso completo.

readiness resume el estado de la plantilla: empty (sin campos ni variables), pending (algún campo sin rol) o ready (todo asignado, lista para emitir).

GET …/file?format=form devuelve el PDF con los widgets vivos para revisarlo en Acrobat; format=flat lo hornea.

Las plantillas DOCX con variables {{ }} siguen funcionando (/variables, validate-values, templateValues al crear); las plantillas PDF con formulario usan campos y values.

Los ejemplos usan $ALLSIGN_API_KEY. Defínela una vez con tu key de sandbox: export ALLSIGN_API_KEY="allsign_test_sk_…" (en PowerShell: $env:ALLSIGN_API_KEY="allsign_test_sk_…").

Descargar OpenAPIColección de Postman

El objeto Template

Atributos

  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • id string requerido

    ID de la plantilla (tmpl_…).

  • object string, siempre "template"

    Siempre "template".

  • name string requerido

    Nombre de la plantilla.

  • description string puede ser null

    Descripción de la plantilla.

  • fileType string requerido

    Tipo de archivo fuente (ej. docx, pdf).

  • originalFilename string puede ser null

    Nombre del archivo original subido.

  • aiEditable boolean

    Si la edición asistida por IA está habilitada.

    default true

  • variableCount integer requerido

    Número de variables detectadas en la plantilla.

  • fieldCount integer

    Número de campos del formulario PDF (nombres distintos).

    default 0

  • unassignedFieldCount integer

    Campos del formulario sin rol; readiness es pending mientras haya alguno.

    default 0

  • roleCount integer

    Número de roles de la plantilla.

    default 0

  • pendingCandidates integer

    Candidatos del análisis vigente que aún no se confirmaron como variable (0 si no hay análisis).

    default 0

  • readiness enum requerido

    ready (≥1 variable y 0 pendientes, o ≥1 campo y todos con rol), pending (≥1 candidato sin confirmar o ≥1 campo sin rol) o empty (0 variables y 0 campos).

    Valores: ready pending empty

  • tags array de string

    Etiquetas de la plantilla (arreglo vacío por default).

    default []

  • category string puede ser null

    Categoría de la plantilla.

  • usageCount integer requerido

    Cuántas veces se ha usado la plantilla.

  • lastUsedAt string (fecha-hora ISO 8601) puede ser null

    Último uso (ISO 8601).

  • currentVersion integer requerido

    Versión actual de la plantilla.

  • previewUrl string puede ser null

    Ruta v3 relativa (/templates/{id}/preview) del PNG de la primera página. null si la plantilla no tiene una fuente renderizable (p.ej. DOCX).

  • downloadUrl string requerido

    Ruta v3 relativa (/templates/{id}/download) del archivo original.

  • createdAt string (fecha-hora ISO 8601) requerido

    Fecha de creación (ISO 8601).

  • updatedAt string (fecha-hora ISO 8601) requerido

    Última actualización (ISO 8601).

List templates

GET /templates

Lista tus plantillas con paginación por cursor y filtros por tipo de archivo, categoría y texto libre.

Parámetros

  • limit integer query

    Resultados por página (1–100, default 20).

    default 20 · entre 1 y 100

  • startingAfter string query

    Cursor: plantillas después de este id (tmpl_…).

  • endingBefore string query

    Cursor: plantillas antes de este id (tmpl_…).

  • sort enum query

    Orden por fecha de creación: createdAt o -createdAt (default -createdAt).

    Valores: createdAt -createdAt updatedAt -updatedAt name -name usageCount -usageCount

  • fileType string query

    Filtra por tipo de archivo (ej. docx, pdf).

  • category string query

    Filtra por categoría.

  • tags string query

    CSV de etiquetas — la plantilla debe tener TODAS.

  • search string query

    Búsqueda por texto libre en el nombre (1–255 caracteres).

    de 1 a 255 caracteres

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 Sobre de paginación por cursor (object: "list") con objetos Template.

Ver los 6 atributos de la respuesta
  • object string, siempre "list"

    Siempre "list".

  • data array de objetos requerido

    Arreglo de objetos Template.

    Ver 23 atributos hijos
    • data[].livemode boolean requerido

      true en entorno live, false en test/dev (marca de agua, sin validez legal).

    • data[].id string requerido

      ID de la plantilla (tmpl_…).

    • data[].object string, siempre "template"

      Siempre "template".

    • data[].name string requerido

      Nombre de la plantilla.

    • data[].description string puede ser null

      Descripción de la plantilla.

    • data[].fileType string requerido

      Tipo de archivo fuente (ej. docx, pdf).

    • data[].originalFilename string puede ser null

      Nombre del archivo original subido.

    • data[].aiEditable boolean

      Si la edición asistida por IA está habilitada.

      default true

    • data[].variableCount integer requerido

      Número de variables detectadas en la plantilla.

    • data[].fieldCount integer

      Número de campos del formulario PDF (nombres distintos).

      default 0

    • data[].unassignedFieldCount integer

      Campos del formulario sin rol; readiness es pending mientras haya alguno.

      default 0

    • data[].roleCount integer

      Número de roles de la plantilla.

      default 0

    • data[].pendingCandidates integer

      Candidatos del análisis vigente que aún no se confirmaron como variable (0 si no hay análisis).

      default 0

    • data[].readiness enum requerido

      ready (≥1 variable y 0 pendientes, o ≥1 campo y todos con rol), pending (≥1 candidato sin confirmar o ≥1 campo sin rol) o empty (0 variables y 0 campos).

      Valores: ready pending empty

    • data[].tags array de string

      Etiquetas de la plantilla (arreglo vacío por default).

      default []

    • data[].category string puede ser null

      Categoría de la plantilla.

    • data[].usageCount integer requerido

      Cuántas veces se ha usado la plantilla.

    • data[].lastUsedAt string (fecha-hora ISO 8601) puede ser null

      Último uso (ISO 8601).

    • data[].currentVersion integer requerido

      Versión actual de la plantilla.

    • data[].previewUrl string puede ser null

      Ruta v3 relativa (/templates/{id}/preview) del PNG de la primera página. null si la plantilla no tiene una fuente renderizable (p.ej. DOCX).

    • data[].downloadUrl string requerido

      Ruta v3 relativa (/templates/{id}/download) del archivo original.

    • data[].createdAt string (fecha-hora ISO 8601) requerido

      Fecha de creación (ISO 8601).

    • data[].updatedAt string (fecha-hora ISO 8601) requerido

      Última actualización (ISO 8601).

  • hasMore boolean requerido

    true si hay más resultados después de esta página.

  • nextCursor string puede ser null

    Cursor para la siguiente página (pásalo como startingAfter).

  • previousCursor string puede ser null

    Cursor para la página anterior (pásalo como endingBefore).

  • limit integer requerido

    El límite aplicado a esta página.

Errores posibles (problem+json): 400 401 403 422 429

Create template

POST /templates

Da de alta una plantilla a partir de un PDF o un DOCX en base64 (máximo 10 MB decodificados). Es el arranque del dominio: si el PDF trae formulario, sus widgets entran como campos (GET …/fields, guía Formularios PDF); si es un DOCX con {{ variables }}, se detectan en el mismo paso (GET …/variables). La respuesta trae fieldCount, variableCount y readiness. Idempotency-Key es opcional pero se honra: un reintento devuelve la misma plantilla.

Parámetros

  • Idempotency-Key string header

    Clave única (UUID v4) que vuelve idempotente el POST: un reintento con la misma clave repite la respuesta original en lugar de volver a crear, cobrar o notificar.

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • name string requerido

    Nombre visible de la plantilla.

    de 1 a 255 caracteres

  • file objeto requerido

    Archivo DOCX o PDF en base64. Máximo 10 MB decodificados. fileType es docx o pdf.

    Ver 3 atributos hijos
    • file.content string requerido

      Contenido del archivo codificado en Base64. Máximo 10 MB decodificados.

    • file.fileType enum

      Tipo de archivo fuente: docx o pdf.

      Valores: docx pdf

      default "docx"

    • file.name string puede ser null

      Nombre del archivo (ej. contrato.pdf). Se valida contra path traversal.

  • description string puede ser null

    Descripción libre de la plantilla.

    máx. 2000 caracteres

  • category string puede ser null

    Categoría de la plantilla (ej. legal).

    máx. 100 caracteres

  • tags array de string puede ser null

    Etiquetas de la plantilla.

Devuelve

201 La plantilla recién creada. — el objeto Template

Errores posibles (problem+json): 400 401 403 413 422 429

Retrieve template

GET /templates/{template_id}

Consulta una plantilla por su id. Un id inexistente responde 404 (no 500).

Parámetros

  • template_id string ruta requerido

    ID de la plantilla (tmpl_…).

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 El objeto Template. — el objeto Template

Errores posibles (problem+json): 400 401 403 404 422 429

Update template

PATCH /templates/{template_id}

Merge-patch de los metadatos: name, description, category, tags. Nunca cambia el archivo ni los campos/variables (para eso están …/fields y …/variables).

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • name string puede ser null

    Nuevo nombre de la plantilla.

    de 1 a 255 caracteres

  • description string puede ser null

    Nueva descripción.

    máx. 2000 caracteres

  • category string puede ser null

    Nueva categoría.

    máx. 100 caracteres

  • tags array de string puede ser null

    Nuevo arreglo de etiquetas — reemplaza al anterior por completo.

Devuelve

200 La plantilla ya actualizada. — el objeto Template

Errores posibles (problem+json): 400 401 403 404 422 429

Delete template

DELETE /templates/{template_id}

Borrado suave: la plantilla desaparece de las listas pero se conserva para auditoría. Responde 409 TEMPLATE_IN_USE si algún documento activo todavía la referencia; el detail trae el conteo.

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

204 Plantilla eliminada.

Errores posibles (problem+json): 400 401 403 404 409 422 429

Duplicate template

POST /templates/{template_id}:duplicate

Crea una copia independiente ("{name} (copia)") con el mismo archivo, campos, roles y variables. Idempotency-Key opcional: un reintento devuelve la primera copia.

Parámetros

  • template_id string ruta requerido
  • Idempotency-Key string header

    Clave única (UUID v4) que vuelve idempotente el POST: un reintento con la misma clave repite la respuesta original en lugar de volver a crear, cobrar o notificar.

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

201 La copia recién creada. — el objeto Template

Errores posibles (problem+json): 400 401 403 404 422 429

Create a document from a template

POST /templates/{template_id}/documents

Crea un borrador a partir de la plantilla y, opcionalmente, lo deja listo en la misma llamada: fija values, adjunta signers y, con send: true, lo manda a firma. {} basta para obtener el borrador. Equivale a POST /documents con templateId y mode: draft, seguido de PATCH /documents/{id}/values y, si se pide, de POST /documents/{id}/send — el mismo documento que devuelve GET /documents/{id}. Con send: true, un valor obligatorio que llena el dueño y no viene en values es un 422 VALIDATION_ERROR con la lista en missingVariables, y no se crea nada: los valores quedan fijos al enviar. Las variables de un firmante y las opcionales no cuentan. Si con values el PDF queda con menos páginas y alguna de las que se pierden tiene campos colocados, el borrador se crea con los valores pero su PDF no cambia, igual que en PATCH /documents/{id}/values, y POST /documents/{id}/send responde 409 DOCUMENT_NOT_SENDABLE hasta que muevas esos campos o cambies los valores. Con send: true ese 409 llega en esta misma llamada, con documentId, sin cobrar ni invitar. values se valida contra la plantilla antes de crear nada. Si algo falla después de creado el borrador (un envío sin saldo, por ejemplo), el problem+json trae documentId: retómalo con POST /documents/{id}/send, no repitiendo esta llamada. Idempotency-Key es obligatoria, igual que en POST /documents: un reintento con la misma clave repite la respuesta original (el 201 o un 4xx) en lugar de crear otro borrador. Un 402, un 429 o un 5xx liberan la clave, así que repetir esta llamada después de ellos crea otro borrador.

Parámetros

  • template_id string ruta requerido

    ID de la plantilla desde la que se emite (tmpl_…).

  • Idempotency-Key string header requerido

    Clave única (UUID v4) que vuelve idempotente el POST: un reintento con la misma clave repite la respuesta original en lugar de volver a crear, cobrar o notificar.

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • name string puede ser null

    Nombre visible del documento. Si se omite, se toma el de la plantilla.

  • signers array de objetos puede ser null

    Firmantes a adjuntar al borrador. Pueden venir solo con roleName (sin contacto) y completarse después; para send: true al menos uno necesita email o phone.

    Ver 10 atributos hijos
    • signers[].email string puede ser null

      Correo del firmante. Manda email o phone, no los dos: cada firmante recibe su invitación por un solo canal (422 VALIDATION_ERROR si llegan ambos).

    • signers[].phone string puede ser null

      Teléfono del firmante (para invitación por WhatsApp). Excluye a email: un firmante lleva un solo canal.

      máx. 32 caracteres

    • signers[].name string puede ser null

      Nombre del firmante.

      máx. 255 caracteres

    • signers[].roleName string puede ser null

      Rol semántico del firmante (ej. proveedor), usado para auto-asignar variables de plantilla marcadas con ese rol. Opcional — si se omite, las variables deben asignarse manualmente.

      máx. 255 caracteres

    • signers[].values objeto (llave → valor) puede ser null

      Prellenado de campos del formulario PDF por nombre de campo (texto o casilla). Sólo aplica a plantillas PDF con campos; las llaves nunca se camelizan.

    • signers[].readOnly array de string puede ser null

      Nombres de campos prellenados que el firmante no puede cambiar.

    • signers[].routingOrder integer puede ser null

      Etapa de firma (1 = primera). Firmantes con el mismo número firman en paralelo. Solo aplica con signingOrder: "sequential". Con signingOrder: "sequential" es obligatorio en todos los firmantes: si le falta a alguno, la creación se rechaza con 422 VALIDATION_ERROR diciendo en cuál falta, en vez de repartir etapas por su cuenta. Dentro del producto un firmante sin número cuenta como etapa 1, pero la API v3 no asume ese default: un sequential a medio numerar sería un documento que firma todo el mundo a la vez sin decirlo. Después de crear, la etapa se cambia con PATCH /v3/documents/{documentId}/signers/{signerId}. Disponible sólo si el orden de firma está habilitado en el entorno; si no, pedir sequential responde 403 SEQUENTIAL_NOT_AVAILABLE y todo documento firma en paralelo.

      mín. 1

    • signers[].kind enum

      signer (default) firma. carbon_copy es un observador: nunca firma ni recibe campos, solo los avisos de events y, con capability: notify_and_view, un enlace de solo lectura. Un observador necesita email y no lleva roleName, routingOrder, values ni readOnly. Después de crear se administran con /v3/documents/{documentId}/observers.

      Valores: signer carbon_copy

      default "signer"

    • signers[].capability enum puede ser null

      Solo observadores: notify (default) o notify_and_view.

      Valores: notify notify_and_view

    • signers[].events array de string puede ser null

      Solo observadores: avisos que recibe. document.completed (default), document.expired, document.voided.

      máx. 10 elementos

  • values objeto (llave → valor)

    Mapa nombre→valor de las variables de la plantilla que fija el remitente. Las llaves conservan su forma natural (nombre_completo): nunca se camelizan.

  • send boolean

    Si es true, tras crear el borrador lo manda a firma como POST /documents/{id}/send (cobra créditos e invita a los firmantes pendientes). Exige al menos un firmante con email o phone.

    default false

Devuelve

201 El documento creado (borrador, o ya enviado si pediste send: true).

Ver los 20 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • id string requerido

    ID del documento (doc_…).

  • object string, siempre "document"

    Siempre "document".

  • name string requerido

    Nombre visible del documento.

  • status enum requerido

    Estado del ciclo de vida: draft, collecting_data, awaiting_signatures, correcting, processing, completed, expired, voided, error.

    Valores: draft collecting_data awaiting_signatures correcting processing completed expired voided error

  • documentType string requerido

    Token opaco del tipo de documento.

  • signerCount integer requerido

    Número total de firmantes.

  • signedCount integer requerido

    Cuántos firmantes ya firmaron.

  • ownerId string requerido

    Dueño del documento (usr_…).

  • orgId string puede ser null

    Organización del documento (org_…).

  • folderId string puede ser null

    Carpeta que contiene el documento (fld_…). Es null si el documento no está en ninguna carpeta que esta credencial pueda abrir con GET /v3/folders/{id}.

  • expiresAt string (fecha-hora ISO 8601) puede ser null

    Fecha límite de firma (ISO 8601).

  • signingOrder enum

    parallel o sequential (firmantes por etapas con routingOrder). Disponible sólo si el orden de firma está habilitado en el entorno; si no, pedir sequential responde 403 SEQUENTIAL_NOT_AVAILABLE y todo documento firma en paralelo.

    Valores: parallel sequential

  • currentStage integer puede ser null

    Etapa activa en un documento sequential mientras espera firmas; null en paralelo o al terminar. Disponible sólo si el orden de firma está habilitado en el entorno; si no, pedir sequential responde 403 SEQUENTIAL_NOT_AVAILABLE y todo documento firma en paralelo.

  • expirationReminders array de integer puede ser null

    Horas antes del vencimiento en las que se envían recordatorios.

  • templateId string puede ser null

    Plantilla de la que nació el documento (tmpl_…), o null.

  • templateVersionId string puede ser null

    Versión de esa plantilla cuyo layout se aplicó (tv_…), o null.

  • parentDocumentId string puede ser null

    Documento del que este es un anexo (doc_…). null si es un documento raíz. Ver POST /documents/{id}/annexes y GET /documents/{id}/family.

  • createdAt string (fecha-hora ISO 8601) requerido

    Fecha de creación (ISO 8601).

  • updatedAt string (fecha-hora ISO 8601) requerido

    Última actualización (ISO 8601).

Errores posibles (problem+json): 400 401 402 403 404 409 422 429

List template versions

GET /templates/{template_id}/versions

Las versiones guardadas de la plantilla, de la más reciente a la más antigua. Cada una trae su layout —orden de firma, roles con su etapa, firmantes habituales y ajustes del documento— y un summary para comparar dos versiones de un vistazo sin bajar el archivo. summary.fields cuenta los campos de firma de la plantilla (nombres distintos): los campos no se versionan, así que ese número es el mismo en todas las filas.

Parámetros

  • template_id string ruta requerido

    ID de la plantilla (tmpl_…).

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 Las versiones, de la más reciente a la más antigua.

Ver los 3 atributos de la respuesta
  • object string, siempre "list"

    Siempre "list".

  • templateId string requerido

    La plantilla a la que pertenecen (tmpl_…).

  • data array de objetos requerido

    Versiones, de la más reciente a la más antigua.

    Ver 6 atributos hijos
    • data[].id string requerido

      ID de la versión (tv_…).

    • data[].versionNumber integer requerido

      Número de versión (1, 2, 3…).

      mín. 1

    • data[].createdAt string (fecha-hora ISO 8601) requerido

      Cuándo se guardó la versión (ISO 8601).

    • data[].createdBy string requerido

      Quién la creó: user, ai o system.

    • data[].summary objeto requerido

      Conteos de un vistazo.

      Ver 4 atributos hijos
      • data[].summary.roles integer requerido

        Roles que trae el layout de esta versión.

        mín. 0

      • data[].summary.fields integer requerido

        Campos de firma de la plantilla (nombres distintos).

        mín. 0

      • data[].summary.variables integer requerido

        Variables de esta versión.

        mín. 0

      • data[].summary.proposals integer requerido

        Cuántas de esas variables traen valor por defecto (defaultValue).

        mín. 0

    • data[].layout objeto puede ser null

      Layout guardado, o null en versiones anteriores a plt_0001.

      Ver 3 atributos hijos
      • data[].layout.signingOrderMode enum

        parallel o sequential. Disponible sólo si el orden de firma está habilitado en el entorno; si no, pedir sequential responde 403 SEQUENTIAL_NOT_AVAILABLE y todo documento firma en paralelo.

        Valores: parallel sequential

      • data[].layout.roles array de objetos

        Roles del documento, en orden.

        Ver 4 atributos hijos
        • data[].layout.roles[].name string requerido

          Nombre del rol tal como lo verá el siguiente documento.

        • data[].layout.roles[].kind string

          Papel del participante (token opaco): signer, witness, notary, carbon_copy, approver o in_person_signer.

          default "signer"

        • data[].layout.roles[].stage integer puede ser null

          Etapa de firma (1 = primera). null en orden paralelo. Disponible sólo si el orden de firma está habilitado en el entorno; si no, pedir sequential responde 403 SEQUENTIAL_NOT_AVAILABLE y todo documento firma en paralelo.

          mín. 1

        • data[].layout.roles[].habitualSigner objeto puede ser null

          Persona que suele tomar el rol, o null.

          Ver 3 atributos hijos
          • data[].layout.roles[].habitualSigner.name string puede ser null

            Nombre de la persona habitual.

          • data[].layout.roles[].habitualSigner.email string puede ser null

            Correo de la persona habitual.

          • data[].layout.roles[].habitualSigner.phone string puede ser null

            Teléfono de la persona habitual.

      • data[].layout.settings objeto

        Vigencia, recordatorios, mensaje y vista del formulario del documento.

        Ver 4 atributos hijos
        • data[].layout.settings.expiresInDays integer puede ser null

          Días de vigencia desde que se crea el documento, o null si no vence.

          mín. 1

        • data[].layout.settings.reminders objeto puede ser null

          Configuración de recordatorios, o null.

          Ver 2 atributos hijos
          • data[].layout.settings.reminders.enabled boolean

            Si el documento manda recordatorios.

            default false

          • data[].layout.settings.reminders.everyDays integer puede ser null

            Cada cuántos días se recuerda.

            entre 1 y 365

        • data[].layout.settings.message string puede ser null

          Mensaje del remitente que acompaña la invitación.

        • data[].layout.settings.formView enum puede ser null

          Vista con la que abre el formulario de los documentos que nacen de esta versión: fill (Llenar) o edit (Editar campos). null se trata como edit.

          Valores: fill edit

Errores posibles (problem+json): 400 401 403 404 422 429

List template facets

GET /templates/facets

Las categorías y etiquetas que usan tus plantillas, con conteos, para construir filtros en tu propia UI (GET /templates?category=…).

Parámetros

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 Colección acotada de facetas con su conteo.

Ver los 2 atributos de la respuesta
  • categories array de objetos requerido

    Categorías presentes.

    Ver 2 atributos hijos
    • categories[].name string requerido

      Nombre de la categoría o etiqueta.

    • categories[].count integer requerido

      Cuántas plantillas visibles tienen este valor.

  • tags array de objetos requerido

    Etiquetas presentes.

    Ver 2 atributos hijos
    • tags[].name string requerido

      Nombre de la categoría o etiqueta.

    • tags[].count integer requerido

      Cuántas plantillas visibles tienen este valor.

Errores posibles (problem+json): 401 403 422 429

List catalog templates

GET /templates/catalog

El catálogo curado por AllSign (contratos y formatos mexicanos listos para usar). Cada entrada trae un slug estable y los planes que la incluyen; copia una a tu tenant con POST /templates/catalog/{slug}:copy.

Parámetros

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 Colección acotada del catálogo publicado.

Ver los 2 atributos de la respuesta
  • object string, siempre "list"

    Siempre "list".

  • data array de objetos requerido

    Arreglo de objetos CatalogTemplate.

    Ver 10 atributos hijos
    • data[].slug string requerido

      Identificador URL-friendly, único.

    • data[].displayName string requerido

      Nombre público en la galería.

    • data[].description string puede ser null

      Descripción pública.

    • data[].category string requerido

      Categoría: legal, admin, rrhh, inmobiliaria, financiero.

    • data[].icon string puede ser null

      Emoji o clave de ícono para la galería.

    • data[].isFeatured boolean requerido

      true si se destaca en la galería.

    • data[].variableCount integer requerido

      Número de variables detectadas en la plantilla fuente.

    • data[].includedInPlans array de string

      Slugs de los planes que incluyen esta plantilla.

    • data[].templateId string requerido

      La plantilla fuente (tmpl_…).

    • data[].displayOrder integer requerido

      Orden de despliegue en la galería.

Errores posibles (problem+json): 401 403 422 429

Copy catalog template

POST /templates/catalog/{slug}:copy

Materializa una copia de la plantilla del catálogo dentro de tu tenant, con sus campos, roles y variables. A partir de ahí es tuya: edítala y emite documentos con su id.

Parámetros

  • slug string ruta requerido
  • Idempotency-Key string header

    Clave única (UUID v4) que vuelve idempotente el POST: un reintento con la misma clave repite la respuesta original en lugar de volver a crear, cobrar o notificar.

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

201 Tu copia, ya como plantilla del tenant. — el objeto Template

Errores posibles (problem+json): 401 403 404 422 429

List template fields

GET /templates/{template_id}/fields

Los campos del formulario de una plantilla PDF: los que trajo el AcroForm al subirla (source: acroform), los que dibujaste por API (drawn) y los que copiaste de un documento (template). Cada campo tiene un name estable (el del widget del PDF), un type (text, date, checkbox, radio, select, signature, initials o stamp), sus areas (una o varias por página, en % del papel) y el role que lo llena — o null si nadie lo ha reclamado. unassignedCount dice cuántos siguen sin rol; mientras haya uno, la plantilla queda en readiness: "pending".

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 Colección acotada (object: "list", hasMore siempre false) con todos los campos.

Ver los 7 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • object string, siempre "list"

    Siempre "list".

  • templateId string requerido

    La plantilla dueña de los campos (tmpl_…).

  • pageCount integer requerido

    Páginas del PDF de la plantilla.

    mín. 0

  • data array de objetos requerido

    Campos de la plantilla.

    Ver 15 atributos hijos
    • data[].object string, siempre "template_field"

      Siempre "template_field".

    • data[].name string requerido

      Nombre del campo (clave estable, igual al widget del PDF).

    • data[].type enum requerido

      Tipo de campo.

      Valores: text date checkbox radio select signature initials stamp

    • data[].role string puede ser null

      Rol dueño del campo, o null si nadie lo ha reclamado.

    • data[].required boolean

      Si el firmante debe llenarlo antes de firmar.

      default true

    • data[].label string puede ser null

      Etiqueta que ve el firmante.

    • data[].options array de string puede ser null

      Opciones de select / radio.

    • data[].group string puede ser null

      Grupo de exclusión mutua (radio).

    • data[].source enum puede ser null

      De dónde nació el campo.

      Valores: acroform drawn template

    • data[].value string puede ser null

      Valor que el emisor dejó puesto, o null. En casillas, "true" o "false".

    • data[].readOnly boolean

      Si el valor queda fijo: el firmante lo ve y no lo puede cambiar. Sin value siempre es false.

      default false

    • data[].fixedWidth boolean

      Ancho fijo: si el texto no cabe, el campo no se alarga y se encoge la letra (mínimo 6 pt).

      default false

    • data[].placeholder string puede ser null

      Texto de ejemplo que ve el firmante en el campo vacío, o null si no tiene.

    • data[].maxLength integer puede ser null

      Cuántos caracteres admite el campo, o null si no tiene límite.

    • data[].areas array de objetos requerido

      Huecos donde aparece el campo (uno o varios).

      Ver 2 atributos hijos
      • data[].areas[].page integer requerido

        Página 1-based.

        mín. 1

      • data[].areas[].rect objeto requerido

        Rectángulo del hueco, en % del papel.

        Ver 4 atributos hijos
        • data[].areas[].rect.x number requerido

          X izquierdo, porcentaje del ancho de la página.

          entre 0 y 100

        • data[].areas[].rect.y number requerido

          Y superior, porcentaje del alto de la página.

          entre 0 y 100

        • data[].areas[].rect.width number requerido

          Ancho en porcentaje de la página.

          entre 0 y 100

        • data[].areas[].rect.height number requerido

          Alto en porcentaje de la página.

          entre 0 y 100

  • unassignedCount integer requerido

    Cuántos campos no tienen rol todavía.

    mín. 0

  • hasMore boolean

    Siempre false en esta colección acotada.

    default false

Errores posibles (problem+json): 400 401 403 404 422 429

Create template field

POST /templates/{template_id}/fields

Dibuja un campo nuevo sobre el PDF de la plantilla. Indica type, name (único en la plantilla) y al menos un área {page, rect}; opcionalmente el role que lo llenará (se crea si no existe), required, label para el firmante, options para select/radio y group para casillas excluyentes. Nace con source: "drawn".

Parámetros

  • template_id string ruta requerido
  • Idempotency-Key string header

    Clave única (UUID v4) que vuelve idempotente el POST: un reintento con la misma clave repite la respuesta original en lugar de volver a crear, cobrar o notificar.

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • name string requerido

    Nombre del campo.

    de 1 a 120 caracteres

  • type enum requerido

    Tipo de campo.

    Valores: text date checkbox radio select signature initials stamp

  • role string puede ser null

    Rol dueño (se crea si no existe).

    máx. 120 caracteres

  • required boolean

    Si es obligatorio.

    default true

  • label string puede ser null

    Etiqueta para el firmante.

    máx. 200 caracteres

  • options array de string puede ser null

    Opciones de select / radio.

  • group string puede ser null

    Grupo de exclusión mutua.

    máx. 120 caracteres

  • value string puede ser null

    Valor que ya va puesto. En casillas, "true" o "false".

    máx. 4000 caracteres

  • readOnly boolean

    Deja el valor fijo. Se ignora si no mandas value.

    default false

  • fixedWidth boolean puede ser null

    Ancho fijo: si el texto no cabe, el campo no se alarga y se encoge la letra. Solo text, select y date.

  • placeholder string puede ser null

    Texto de ejemplo para el firmante. Solo campos de texto (text y select); en otros tipos se ignora.

    máx. 200 caracteres

  • maxLength integer puede ser null

    Cuántos caracteres admite el campo (1 a 500). Solo campos de texto (text y select); en otros tipos se ignora.

    entre 1 y 500

  • areas array de objetos requerido

    Huecos del campo en % del papel.

    mín. 1 elementos

    Ver 2 atributos hijos
    • areas[].page integer requerido

      Página 1-based.

      mín. 1

    • areas[].rect objeto requerido

      Rectángulo del hueco, en % del papel.

      Ver 4 atributos hijos
      • areas[].rect.x number requerido

        X izquierdo, porcentaje del ancho de la página.

        entre 0 y 100

      • areas[].rect.y number requerido

        Y superior, porcentaje del alto de la página.

        entre 0 y 100

      • areas[].rect.width number requerido

        Ancho en porcentaje de la página.

        entre 0 y 100

      • areas[].rect.height number requerido

        Alto en porcentaje de la página.

        entre 0 y 100

Devuelve

201 El campo creado, con sus áreas normalizadas.

Ver los 15 atributos de la respuesta
  • object string, siempre "template_field"

    Siempre "template_field".

  • name string requerido

    Nombre del campo (clave estable, igual al widget del PDF).

  • type enum requerido

    Tipo de campo.

    Valores: text date checkbox radio select signature initials stamp

  • role string puede ser null

    Rol dueño del campo, o null si nadie lo ha reclamado.

  • required boolean

    Si el firmante debe llenarlo antes de firmar.

    default true

  • label string puede ser null

    Etiqueta que ve el firmante.

  • options array de string puede ser null

    Opciones de select / radio.

  • group string puede ser null

    Grupo de exclusión mutua (radio).

  • source enum puede ser null

    De dónde nació el campo.

    Valores: acroform drawn template

  • value string puede ser null

    Valor que el emisor dejó puesto, o null. En casillas, "true" o "false".

  • readOnly boolean

    Si el valor queda fijo: el firmante lo ve y no lo puede cambiar. Sin value siempre es false.

    default false

  • fixedWidth boolean

    Ancho fijo: si el texto no cabe, el campo no se alarga y se encoge la letra (mínimo 6 pt).

    default false

  • placeholder string puede ser null

    Texto de ejemplo que ve el firmante en el campo vacío, o null si no tiene.

  • maxLength integer puede ser null

    Cuántos caracteres admite el campo, o null si no tiene límite.

  • areas array de objetos requerido

    Huecos donde aparece el campo (uno o varios).

    Ver 2 atributos hijos
    • areas[].page integer requerido

      Página 1-based.

      mín. 1

    • areas[].rect objeto requerido

      Rectángulo del hueco, en % del papel.

      Ver 4 atributos hijos
      • areas[].rect.x number requerido

        X izquierdo, porcentaje del ancho de la página.

        entre 0 y 100

      • areas[].rect.y number requerido

        Y superior, porcentaje del alto de la página.

        entre 0 y 100

      • areas[].rect.width number requerido

        Ancho en porcentaje de la página.

        entre 0 y 100

      • areas[].rect.height number requerido

        Alto en porcentaje de la página.

        entre 0 y 100

Errores posibles (problem+json): 400 401 403 404 409 422 429

Update template field

PATCH /templates/{template_id}/fields/{name}

Cambia una o varias cosas de un campo por su name: moverlo o redistribuir sus areas, renombrarlo (name, renombra todas sus áreas), cambiar su type, asignarle un role (o null para dejarlo sin rol), required, label, options o group. Es la llamada con la que asignas los campos importados del PDF a un rol antes de emitir.

Parámetros

  • template_id string ruta requerido
  • name string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • name string puede ser null

    Nuevo nombre (renombra todas sus áreas).

    de 1 a 120 caracteres

  • type enum puede ser null

    Nuevo tipo.

    Valores: text date checkbox radio select signature initials stamp

  • role string puede ser null

    Nuevo rol (null lo deja sin rol).

    máx. 120 caracteres

  • required boolean puede ser null

    Si es obligatorio.

  • label string puede ser null

    Etiqueta para el firmante.

    máx. 200 caracteres

  • options array de string puede ser null

    Opciones de select / radio.

  • group string puede ser null

    Grupo de exclusión mutua.

    máx. 120 caracteres

  • value string puede ser null

    Nuevo valor (null lo vacía y suelta el candado).

    máx. 4000 caracteres

  • readOnly boolean puede ser null

    Deja el valor fijo. Se ignora si el campo queda sin value.

  • fixedWidth boolean puede ser null

    Ancho fijo (true); false o null lo quita. Solo text, select y date.

  • placeholder string puede ser null

    Texto de ejemplo, solo en campos de texto (text y select). Vacío o null lo quita.

    máx. 200 caracteres

  • maxLength integer puede ser null

    Cuántos caracteres admite (1 a 500), solo en campos de texto (text y select). null quita el límite.

    entre 1 y 500

  • areas array de objetos puede ser null

    Reemplaza todos los huecos.

    mín. 1 elementos

    Ver 2 atributos hijos
    • areas[].page integer requerido

      Página 1-based.

      mín. 1

    • areas[].rect objeto requerido

      Rectángulo del hueco, en % del papel.

      Ver 4 atributos hijos
      • areas[].rect.x number requerido

        X izquierdo, porcentaje del ancho de la página.

        entre 0 y 100

      • areas[].rect.y number requerido

        Y superior, porcentaje del alto de la página.

        entre 0 y 100

      • areas[].rect.width number requerido

        Ancho en porcentaje de la página.

        entre 0 y 100

      • areas[].rect.height number requerido

        Alto en porcentaje de la página.

        entre 0 y 100

Devuelve

200 El campo ya actualizado.

Ver los 15 atributos de la respuesta
  • object string, siempre "template_field"

    Siempre "template_field".

  • name string requerido

    Nombre del campo (clave estable, igual al widget del PDF).

  • type enum requerido

    Tipo de campo.

    Valores: text date checkbox radio select signature initials stamp

  • role string puede ser null

    Rol dueño del campo, o null si nadie lo ha reclamado.

  • required boolean

    Si el firmante debe llenarlo antes de firmar.

    default true

  • label string puede ser null

    Etiqueta que ve el firmante.

  • options array de string puede ser null

    Opciones de select / radio.

  • group string puede ser null

    Grupo de exclusión mutua (radio).

  • source enum puede ser null

    De dónde nació el campo.

    Valores: acroform drawn template

  • value string puede ser null

    Valor que el emisor dejó puesto, o null. En casillas, "true" o "false".

  • readOnly boolean

    Si el valor queda fijo: el firmante lo ve y no lo puede cambiar. Sin value siempre es false.

    default false

  • fixedWidth boolean

    Ancho fijo: si el texto no cabe, el campo no se alarga y se encoge la letra (mínimo 6 pt).

    default false

  • placeholder string puede ser null

    Texto de ejemplo que ve el firmante en el campo vacío, o null si no tiene.

  • maxLength integer puede ser null

    Cuántos caracteres admite el campo, o null si no tiene límite.

  • areas array de objetos requerido

    Huecos donde aparece el campo (uno o varios).

    Ver 2 atributos hijos
    • areas[].page integer requerido

      Página 1-based.

      mín. 1

    • areas[].rect objeto requerido

      Rectángulo del hueco, en % del papel.

      Ver 4 atributos hijos
      • areas[].rect.x number requerido

        X izquierdo, porcentaje del ancho de la página.

        entre 0 y 100

      • areas[].rect.y number requerido

        Y superior, porcentaje del alto de la página.

        entre 0 y 100

      • areas[].rect.width number requerido

        Ancho en porcentaje de la página.

        entre 0 y 100

      • areas[].rect.height number requerido

        Alto en porcentaje de la página.

        entre 0 y 100

Errores posibles (problem+json): 400 401 403 404 409 422 429

Delete template field

DELETE /templates/{template_id}/fields/{name}

Quita el campo y todas sus áreas de la plantilla. Los documentos ya emitidos no cambian.

Parámetros

  • template_id string ruta requerido
  • name string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

204 Campo eliminado.

Errores posibles (problem+json): 400 401 403 404 409 422 429

Replace template fields

PUT /templates/{template_id}/fields

Reemplaza el layout completo de una vez (declarativo e idempotente): mandas la lista final de campos y AllSign crea, mueve, reasigna y borra lo que haga falta para que la plantilla quede exactamente así. Útil para versionar el layout en tu repositorio o para sincronizarlo desde tu propio editor.

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • fields array de objetos requerido

    Layout completo; reemplaza el anterior.

    Ver 13 atributos hijos
    • fields[].name string requerido

      Nombre del campo.

      de 1 a 120 caracteres

    • fields[].type enum requerido

      Tipo de campo.

      Valores: text date checkbox radio select signature initials stamp

    • fields[].role string puede ser null

      Rol dueño (se crea si no existe).

      máx. 120 caracteres

    • fields[].required boolean

      Si es obligatorio.

      default true

    • fields[].label string puede ser null

      Etiqueta para el firmante.

      máx. 200 caracteres

    • fields[].options array de string puede ser null

      Opciones de select / radio.

    • fields[].group string puede ser null

      Grupo de exclusión mutua.

      máx. 120 caracteres

    • fields[].value string puede ser null

      Valor que ya va puesto. En casillas, "true" o "false".

      máx. 4000 caracteres

    • fields[].readOnly boolean

      Deja el valor fijo. Se ignora si no mandas value.

      default false

    • fields[].fixedWidth boolean puede ser null

      Ancho fijo: si el texto no cabe, el campo no se alarga y se encoge la letra. Solo text, select y date.

    • fields[].placeholder string puede ser null

      Texto de ejemplo para el firmante. Solo campos de texto (text y select); en otros tipos se ignora.

      máx. 200 caracteres

    • fields[].maxLength integer puede ser null

      Cuántos caracteres admite el campo (1 a 500). Solo campos de texto (text y select); en otros tipos se ignora.

      entre 1 y 500

    • fields[].areas array de objetos requerido

      Huecos del campo en % del papel.

      mín. 1 elementos

      Ver 2 atributos hijos
      • fields[].areas[].page integer requerido

        Página 1-based.

        mín. 1

      • fields[].areas[].rect objeto requerido

        Rectángulo del hueco, en % del papel.

        Ver 4 atributos hijos
        • fields[].areas[].rect.x number requerido

          X izquierdo, porcentaje del ancho de la página.

          entre 0 y 100

        • fields[].areas[].rect.y number requerido

          Y superior, porcentaje del alto de la página.

          entre 0 y 100

        • fields[].areas[].rect.width number requerido

          Ancho en porcentaje de la página.

          entre 0 y 100

        • fields[].areas[].rect.height number requerido

          Alto en porcentaje de la página.

          entre 0 y 100

Devuelve

200 La lista completa de campos tal como quedó.

Ver los 7 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • object string, siempre "list"

    Siempre "list".

  • templateId string requerido

    La plantilla dueña de los campos (tmpl_…).

  • pageCount integer requerido

    Páginas del PDF de la plantilla.

    mín. 0

  • data array de objetos requerido

    Campos de la plantilla.

    Ver 15 atributos hijos
    • data[].object string, siempre "template_field"

      Siempre "template_field".

    • data[].name string requerido

      Nombre del campo (clave estable, igual al widget del PDF).

    • data[].type enum requerido

      Tipo de campo.

      Valores: text date checkbox radio select signature initials stamp

    • data[].role string puede ser null

      Rol dueño del campo, o null si nadie lo ha reclamado.

    • data[].required boolean

      Si el firmante debe llenarlo antes de firmar.

      default true

    • data[].label string puede ser null

      Etiqueta que ve el firmante.

    • data[].options array de string puede ser null

      Opciones de select / radio.

    • data[].group string puede ser null

      Grupo de exclusión mutua (radio).

    • data[].source enum puede ser null

      De dónde nació el campo.

      Valores: acroform drawn template

    • data[].value string puede ser null

      Valor que el emisor dejó puesto, o null. En casillas, "true" o "false".

    • data[].readOnly boolean

      Si el valor queda fijo: el firmante lo ve y no lo puede cambiar. Sin value siempre es false.

      default false

    • data[].fixedWidth boolean

      Ancho fijo: si el texto no cabe, el campo no se alarga y se encoge la letra (mínimo 6 pt).

      default false

    • data[].placeholder string puede ser null

      Texto de ejemplo que ve el firmante en el campo vacío, o null si no tiene.

    • data[].maxLength integer puede ser null

      Cuántos caracteres admite el campo, o null si no tiene límite.

    • data[].areas array de objetos requerido

      Huecos donde aparece el campo (uno o varios).

      Ver 2 atributos hijos
      • data[].areas[].page integer requerido

        Página 1-based.

        mín. 1

      • data[].areas[].rect objeto requerido

        Rectángulo del hueco, en % del papel.

        Ver 4 atributos hijos
        • data[].areas[].rect.x number requerido

          X izquierdo, porcentaje del ancho de la página.

          entre 0 y 100

        • data[].areas[].rect.y number requerido

          Y superior, porcentaje del alto de la página.

          entre 0 y 100

        • data[].areas[].rect.width number requerido

          Ancho en porcentaje de la página.

          entre 0 y 100

        • data[].areas[].rect.height number requerido

          Alto en porcentaje de la página.

          entre 0 y 100

  • unassignedCount integer requerido

    Cuántos campos no tienen rol todavía.

    mín. 0

  • hasMore boolean

    Siempre false en esta colección acotada.

    default false

Errores posibles (problem+json): 400 401 403 404 422 429

Import fields from a document

POST /templates/{template_id}/fields:from-document

Copia los campos y los roles de un documento a la plantilla: es el "guardar como plantilla" del super editor, por API. Los firmantes del documento no viajan — la plantilla guarda estructura (campos + roles), nunca personas. Tampoco viajan los datos: de cada campo se copian nombre, tipo, rol, posición (convertida a % de la hoja), requerido, etiqueta, opciones y grupo, nunca el valor que tenía en el documento origen ni su candado (readOnly). Los campos existentes de la plantilla se reemplazan por los del documento.

Parámetros

  • template_id string ruta requerido
  • Idempotency-Key string header

    Clave única (UUID v4) que vuelve idempotente el POST: un reintento con la misma clave repite la respuesta original en lugar de volver a crear, cobrar o notificar.

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • documentId string requerido

    Documento (doc_…) del que se copian campos y roles.

Devuelve

200 La lista de campos de la plantilla después de la importación.

Ver los 7 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • object string, siempre "list"

    Siempre "list".

  • templateId string requerido

    La plantilla dueña de los campos (tmpl_…).

  • pageCount integer requerido

    Páginas del PDF de la plantilla.

    mín. 0

  • data array de objetos requerido

    Campos de la plantilla.

    Ver 15 atributos hijos
    • data[].object string, siempre "template_field"

      Siempre "template_field".

    • data[].name string requerido

      Nombre del campo (clave estable, igual al widget del PDF).

    • data[].type enum requerido

      Tipo de campo.

      Valores: text date checkbox radio select signature initials stamp

    • data[].role string puede ser null

      Rol dueño del campo, o null si nadie lo ha reclamado.

    • data[].required boolean

      Si el firmante debe llenarlo antes de firmar.

      default true

    • data[].label string puede ser null

      Etiqueta que ve el firmante.

    • data[].options array de string puede ser null

      Opciones de select / radio.

    • data[].group string puede ser null

      Grupo de exclusión mutua (radio).

    • data[].source enum puede ser null

      De dónde nació el campo.

      Valores: acroform drawn template

    • data[].value string puede ser null

      Valor que el emisor dejó puesto, o null. En casillas, "true" o "false".

    • data[].readOnly boolean

      Si el valor queda fijo: el firmante lo ve y no lo puede cambiar. Sin value siempre es false.

      default false

    • data[].fixedWidth boolean

      Ancho fijo: si el texto no cabe, el campo no se alarga y se encoge la letra (mínimo 6 pt).

      default false

    • data[].placeholder string puede ser null

      Texto de ejemplo que ve el firmante en el campo vacío, o null si no tiene.

    • data[].maxLength integer puede ser null

      Cuántos caracteres admite el campo, o null si no tiene límite.

    • data[].areas array de objetos requerido

      Huecos donde aparece el campo (uno o varios).

      Ver 2 atributos hijos
      • data[].areas[].page integer requerido

        Página 1-based.

        mín. 1

      • data[].areas[].rect objeto requerido

        Rectángulo del hueco, en % del papel.

        Ver 4 atributos hijos
        • data[].areas[].rect.x number requerido

          X izquierdo, porcentaje del ancho de la página.

          entre 0 y 100

        • data[].areas[].rect.y number requerido

          Y superior, porcentaje del alto de la página.

          entre 0 y 100

        • data[].areas[].rect.width number requerido

          Ancho en porcentaje de la página.

          entre 0 y 100

        • data[].areas[].rect.height number requerido

          Alto en porcentaje de la página.

          entre 0 y 100

  • unassignedCount integer requerido

    Cuántos campos no tienen rol todavía.

    mín. 0

  • hasMore boolean

    Siempre false en esta colección acotada.

    default false

Errores posibles (problem+json): 400 401 403 404 422 429

List template roles

GET /templates/{template_id}/roles

Los roles de la plantilla en orden, con cuántos campos tiene cada uno. Al crear un documento desde la plantilla, cada firmante toma un rol por roleName y hereda todos sus campos.

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 Colección acotada con los roles en orden.

Ver los 5 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • object string, siempre "list"

    Siempre "list".

  • templateId string requerido

    La plantilla dueña de los roles (tmpl_…).

  • data array de objetos requerido

    Roles de la plantilla, en orden.

    Ver 4 atributos hijos
    • data[].object string, siempre "template_role"

      Siempre "template_role".

    • data[].name string requerido

      Nombre del rol (ej. Cliente).

    • data[].order integer requerido

      Orden de presentación, 0-based.

      mín. 0

    • data[].fieldCount integer requerido

      Cuántos campos tiene asignados.

      mín. 0

  • hasMore boolean

    Siempre false en esta colección acotada.

    default false

Errores posibles (problem+json): 400 401 403 404 422 429

Replace template roles

PUT /templates/{template_id}/roles

Fija la lista de roles (nombre y orden). Los roles que ya no estén en la lista se quitan y sus campos quedan sin rol (unassignedCount sube); los nombres nuevos se crean vacíos, listos para asignarles campos con PATCH …/fields/{name}.

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • roles array de string requerido

    Nombres de rol en orden; los que falten se quitan (sus campos quedan sin rol).

Devuelve

200 Los roles tal como quedaron.

Ver los 5 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • object string, siempre "list"

    Siempre "list".

  • templateId string requerido

    La plantilla dueña de los roles (tmpl_…).

  • data array de objetos requerido

    Roles de la plantilla, en orden.

    Ver 4 atributos hijos
    • data[].object string, siempre "template_role"

      Siempre "template_role".

    • data[].name string requerido

      Nombre del rol (ej. Cliente).

    • data[].order integer requerido

      Orden de presentación, 0-based.

      mín. 0

    • data[].fieldCount integer requerido

      Cuántos campos tiene asignados.

      mín. 0

  • hasMore boolean

    Siempre false en esta colección acotada.

    default false

Errores posibles (problem+json): 400 401 403 404 422 429

Download template file

GET /templates/{template_id}/file

El PDF de la plantilla. Con format=form conserva los widgets del formulario vivos (para revisarlo en Acrobat o en tu propio visor); con format=flat los hornea (aplanado, sin campos editables). Solo plantillas PDF: una plantilla DOCX responde 422.

Parámetros

  • template_id string ruta requerido
  • format enum query

    form (default) conserva los widgets; flat los hornea.

    Valores: form flat

    default "form"

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 El PDF (application/pdf, Content-Disposition: attachment).

Errores posibles (problem+json): 400 401 403 404 422 429

Replace a PDF template's file

POST /templates/{template_id}/file

Sustituye el PDF de la plantilla —una cláusula nueva, otro logo— sin rehacer los campos que ya colocaste: sus áreas se guardan en porcentaje de página, así que un archivo con otro tamaño de hoja no las mueve. Lo único que sí puede romperse es el número de páginas: un campo que vivía en una página que el archivo nuevo ya no tiene se poda —se borra esa área, nunca la plantilla ni el resto de sus áreas— y la respuesta lo dice en prunedFields, con el nombre del campo, las páginas que perdió y removed en true si se quedó sin ninguna. Revísalo siempre después de reemplazar. Solo plantillas PDF (fileType: "pdf") y el reemplazo también debe ser PDF: este endpoint no convierte DOCX↔PDF. El archivo viaja en base64, máximo 10 MB decodificados, igual que al crear la plantilla.

Parámetros

  • template_id string ruta requerido

    ID de la plantilla PDF cuyo archivo se reemplaza (tmpl_…).

  • Idempotency-Key string header

    Clave única (UUID v4) que vuelve idempotente el POST: un reintento con la misma clave repite la respuesta original en lugar de volver a crear, cobrar o notificar.

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • file objeto requerido

    El PDF nuevo en base64. Máximo 10 MB decodificados.

    Ver 3 atributos hijos
    • file.content string requerido

      Contenido del archivo codificado en Base64. Máximo 10 MB decodificados.

    • file.fileType enum

      Tipo de archivo fuente: docx o pdf.

      Valores: docx pdf

      default "docx"

    • file.name string puede ser null

      Nombre del archivo (ej. contrato.pdf). Se valida contra path traversal.

Devuelve

200 La plantilla con el archivo ya reemplazado, las páginas del archivo nuevo y prunedFields.

Ver los 5 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • object string, siempre "template_file_replace"

    Siempre "template_file_replace".

  • template objeto requerido

    La plantilla con el archivo ya reemplazado.

    Ver 23 atributos hijos
    • template.livemode boolean requerido

      true en entorno live, false en test/dev (marca de agua, sin validez legal).

    • template.id string requerido

      ID de la plantilla (tmpl_…).

    • template.object string, siempre "template"

      Siempre "template".

    • template.name string requerido

      Nombre de la plantilla.

    • template.description string puede ser null

      Descripción de la plantilla.

    • template.fileType string requerido

      Tipo de archivo fuente (ej. docx, pdf).

    • template.originalFilename string puede ser null

      Nombre del archivo original subido.

    • template.aiEditable boolean

      Si la edición asistida por IA está habilitada.

      default true

    • template.variableCount integer requerido

      Número de variables detectadas en la plantilla.

    • template.fieldCount integer

      Número de campos del formulario PDF (nombres distintos).

      default 0

    • template.unassignedFieldCount integer

      Campos del formulario sin rol; readiness es pending mientras haya alguno.

      default 0

    • template.roleCount integer

      Número de roles de la plantilla.

      default 0

    • template.pendingCandidates integer

      Candidatos del análisis vigente que aún no se confirmaron como variable (0 si no hay análisis).

      default 0

    • template.readiness enum requerido

      ready (≥1 variable y 0 pendientes, o ≥1 campo y todos con rol), pending (≥1 candidato sin confirmar o ≥1 campo sin rol) o empty (0 variables y 0 campos).

      Valores: ready pending empty

    • template.tags array de string

      Etiquetas de la plantilla (arreglo vacío por default).

      default []

    • template.category string puede ser null

      Categoría de la plantilla.

    • template.usageCount integer requerido

      Cuántas veces se ha usado la plantilla.

    • template.lastUsedAt string (fecha-hora ISO 8601) puede ser null

      Último uso (ISO 8601).

    • template.currentVersion integer requerido

      Versión actual de la plantilla.

    • template.previewUrl string puede ser null

      Ruta v3 relativa (/templates/{id}/preview) del PNG de la primera página. null si la plantilla no tiene una fuente renderizable (p.ej. DOCX).

    • template.downloadUrl string requerido

      Ruta v3 relativa (/templates/{id}/download) del archivo original.

    • template.createdAt string (fecha-hora ISO 8601) requerido

      Fecha de creación (ISO 8601).

    • template.updatedAt string (fecha-hora ISO 8601) requerido

      Última actualización (ISO 8601).

  • pageCount integer requerido

    Páginas del archivo nuevo.

  • prunedFields array de objetos

    Campos que perdieron área(s) al reemplazar el archivo.

    Ver 3 atributos hijos
    • prunedFields[].name string requerido

      Nombre del campo.

    • prunedFields[].pages array de integer requerido

      Páginas que ocupaba y que el archivo nuevo ya no tiene.

    • prunedFields[].removed boolean requerido

      true si el campo se eliminó por completo (ninguna de sus áreas cupo en el archivo nuevo); false si sólo perdió algunas de varias áreas.

Errores posibles (problem+json): 400 401 403 404 413 422 429

Download original file

GET /templates/{template_id}/download

El archivo original tal como se subió (PDF o DOCX), sin marcar ni convertir. Se transmite directo, nunca por redirect. Para el PDF con widgets o aplanado usa GET …/file?format=form|flat.

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 El archivo (Content-Disposition: attachment).

Errores posibles (problem+json): 400 401 403 404 422 429

Get template preview

GET /templates/{template_id}/preview

PNG de la primera página, para mostrar la plantilla en tu propia lista. Solo plantillas PDF; un DOCX responde 404 PREVIEW_UNAVAILABLE. width reduce la imagen (nunca la agranda).

Parámetros

  • template_id string ruta requerido
  • width integer query

    Ancho máximo en píxeles; la imagen se reduce, nunca se agranda.

    default 400 · entre 200 y 1200

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 La imagen (image/png).

Errores posibles (problem+json): 400 401 403 404 422 429

Get template page image

GET /templates/{template_id}/pages/{page_number}

Imagen limpia de una página del PDF (sin widgets ni anotaciones), para pintar tu propio editor de campos encima; las coordenadas de areas son porcentajes de esta página.

Parámetros

  • template_id string ruta requerido
  • page_number integer ruta requerido

    mín. 1

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 La imagen (image/png).

Ver los 7 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • object string, siempre "template_page"

    Siempre "template_page".

  • templateId string requerido

    La plantilla (tmpl_…).

  • pageNumber integer requerido

    Página 1-based.

    mín. 1

  • imageUrl string requerido

    URL firmada de la imagen PNG de la página, con los widgets vacíos.

  • width integer requerido

    Ancho de la imagen en píxeles.

    mín. 0

  • height integer requerido

    Alto de la imagen en píxeles.

    mín. 0

Errores posibles (problem+json): 400 401 403 404 422 429

Get template layout

GET /templates/{template_id}/layout

Vista de solo lectura del layout completo: páginas con su tamaño y cada campo o variable con su posición. Útil para dibujar el editor; para cambiar campos usa …/fields.

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 El layout por página.

Ver los 5 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • object string, siempre "template_layout"

    Siempre "template_layout".

  • templateId string requerido

    La plantilla (tmpl_…).

  • pageCount integer requerido

    Número de páginas.

    mín. 0

  • items array de objetos

    Datos, decisiones y firmas posicionados.

    Ver 3 atributos hijos
    • items[].name string requerido

      Nombre del dato, decisión o campo de firma.

    • items[].kind enum requerido

      Tipo de ítem: data, decision o signature.

      Valores: data decision signature

    • items[].slots array de objetos requerido

      Huecos en el papel, en % de la página.

      Ver 2 atributos hijos
      • items[].slots[].page integer requerido

        Página 1-based.

        mín. 1

      • items[].slots[].rect objeto requerido

        Rectángulo del hueco, en % del papel.

        Ver 4 atributos hijos
        • items[].slots[].rect.x number requerido

          X izquierdo, porcentaje del ancho de la página.

          entre 0 y 100

        • items[].slots[].rect.y number requerido

          Y superior, porcentaje del alto de la página.

          entre 0 y 100

        • items[].slots[].rect.width number requerido

          Ancho en porcentaje de la página.

          entre 0 y 100

        • items[].slots[].rect.height number requerido

          Alto en porcentaje de la página.

          entre 0 y 100

Errores posibles (problem+json): 400 401 403 404 422 429

Download marked Word file

GET /templates/{template_id}/marked.docx

Solo plantillas DOCX: el Word original con {{nombre}} en cada dato ya confirmado, conservando los estilos. Sirve para revisar en Word qué detectó el análisis. Un PDF responde 422.

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 El DOCX marcado (Content-Disposition: attachment).

Errores posibles (problem+json): 400 401 403 404 422 429

List template variables

GET /templates/{template_id}/variables

Lista las variables de una plantilla — justo lo que necesitas para armar el mapa templateValues de Create document. Es una colección acotada (no paginada por cursor): el número de variables lo limita el propio archivo.

Parámetros

  • template_id string ruta requerido

    ID de la plantilla (tmpl_…).

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 Colección acotada (object: "list", hasMore siempre false) con las variables de la plantilla.

Ver los 4 atributos de la respuesta
  • object string, siempre "list"

    Siempre "list".

  • templateId string requerido

    La plantilla a la que pertenecen las variables (tmpl_…).

  • data array de objetos requerido

    Arreglo de variables de la plantilla.

    Ver 14 atributos hijos
    • data[].name string requerido

      Nombre de la variable — es la llave que usas en templateValues. Se mantiene en snake_case natural, nunca se cameliza.

    • data[].label string requerido

      Etiqueta legible para mostrar.

    • data[].type string

      Tipo de dato (token opaco snake_case): text, date, currency, textarea, select, number.

      default "text"

    • data[].required boolean

      Si la variable es obligatoria.

      default true

    • data[].defaultValue string puede ser null

      Valor por default sugerido.

    • data[].options array de string puede ser null

      Opciones válidas cuando type es select.

    • data[].role string puede ser null

      Rol del firmante inferido del prefijo con doble guion bajo, o null si la variable no está ligada a un rol.

    • data[].source string puede ser null

      Origen del dato (token opaco): form_field, jinja, signal o manual.

    • data[].page integer puede ser null

      Página 1-based del hueco principal.

      mín. 1

    • data[].rect objeto puede ser null

      Rectángulo del hueco principal, en % del papel.

      Ver 4 atributos hijos
      • data[].rect.x number requerido

        X izquierdo, porcentaje del ancho de la página.

        entre 0 y 100

      • data[].rect.y number requerido

        Y superior, porcentaje del alto de la página.

        entre 0 y 100

      • data[].rect.width number requerido

        Ancho en porcentaje de la página.

        entre 0 y 100

      • data[].rect.height number requerido

        Alto en porcentaje de la página.

        entre 0 y 100

    • data[].slots array de objetos puede ser null

      Huecos adicionales cuando el mismo dato aparece más de una vez.

      Ver 2 atributos hijos
      • data[].slots[].page integer requerido

        Página 1-based.

        mín. 1

      • data[].slots[].rect objeto requerido

        Rectángulo del hueco, en % del papel.

        Ver 4 atributos hijos
        • data[].slots[].rect.x number requerido

          X izquierdo, porcentaje del ancho de la página.

          entre 0 y 100

        • data[].slots[].rect.y number requerido

          Y superior, porcentaje del alto de la página.

          entre 0 y 100

        • data[].slots[].rect.width number requerido

          Ancho en porcentaje de la página.

          entre 0 y 100

        • data[].slots[].rect.height number requerido

          Alto en porcentaje de la página.

          entre 0 y 100

    • data[].filledBy string puede ser null

      Quién llena el dato: owner (el remitente) o null. Por compatibilidad puede traer signer o el nombre de un rol; esos valores ya no se aceptan en el body de crear, editar ni confirmar.

    • data[].snippet string puede ser null

      Texto exacto del hueco detectado en el análisis (______, [CIUDAD]), o null.

    • data[].analysisIndex integer puede ser null

      Índice del candidato del análisis del que se confirmó esta variable, o null si se creó a mano.

      mín. 1

  • hasMore boolean

    Siempre false en esta colección acotada.

    default false

Errores posibles (problem+json): 400 401 403 404 422 429

Create template variable

POST /templates/{template_id}/variables

Agrega una variable {{ }} a mano a una plantilla DOCX: nombre, etiqueta, tipo y, opcionalmente, su posición (page, rect, slots). mergeInto la une a una variable existente como hueco adicional. Todas las variables las llena el remitente: filledBy solo acepta owner, y signer responde 422. Lo que captura el firmante va en un campo del formulario PDF (guía Formularios PDF).

Parámetros

  • template_id string ruta requerido
  • Idempotency-Key string header

    Clave única (UUID v4) que vuelve idempotente el POST: un reintento con la misma clave repite la respuesta original en lugar de volver a crear, cobrar o notificar.

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • name string requerido

    Nombre de la variable — llave de templateValues, en snake_case natural.

    de 1 a 255 caracteres

  • label string puede ser null

    Etiqueta legible. Si se omite, se deriva del nombre.

  • type string

    Tipo de dato (token opaco): text, date, currency, textarea, select, number.

    default "text"

  • required boolean

    Si la variable es obligatoria.

    default true

  • defaultValue string puede ser null

    Valor por default sugerido.

  • options array de string puede ser null

    Opciones válidas cuando type es select.

  • role string puede ser null

    Rol del firmante al que se asigna, o null.

  • page integer puede ser null

    Página 1-based del hueco.

    mín. 1

  • rect objeto puede ser null

    Rectángulo del hueco, en % del papel.

    Ver 4 atributos hijos
    • rect.x number requerido

      X izquierdo, porcentaje del ancho de la página.

      entre 0 y 100

    • rect.y number requerido

      Y superior, porcentaje del alto de la página.

      entre 0 y 100

    • rect.width number requerido

      Ancho en porcentaje de la página.

      entre 0 y 100

    • rect.height number requerido

      Alto en porcentaje de la página.

      entre 0 y 100

  • slots array de objetos puede ser null

    Huecos adicionales del mismo dato.

    Ver 2 atributos hijos
    • slots[].page integer requerido

      Página 1-based.

      mín. 1

    • slots[].rect objeto requerido

      Rectángulo del hueco, en % del papel.

      Ver 4 atributos hijos
      • slots[].rect.x number requerido

        X izquierdo, porcentaje del ancho de la página.

        entre 0 y 100

      • slots[].rect.y number requerido

        Y superior, porcentaje del alto de la página.

        entre 0 y 100

      • slots[].rect.width number requerido

        Ancho en porcentaje de la página.

        entre 0 y 100

      • slots[].rect.height number requerido

        Alto en porcentaje de la página.

        entre 0 y 100

  • mergeInto string puede ser null

    Nombre de una variable existente. Si se envía, este dato se une a ella como slots.

  • filledBy enum puede ser null

    Quién llena el dato: owner (el remitente) u omítelo. signer responde 422 SIGNER_VARIABLE_NOT_SUPPORTED: lo que llena el firmante va en un campo del formulario PDF asignado a su rol (role en los campos de la plantilla; role o signer en los del documento).

    Valores: owner signer

Devuelve

201 La variable creada.

Ver los 4 atributos de la respuesta
  • object string, siempre "list"

    Siempre "list".

  • templateId string requerido

    La plantilla a la que pertenecen las variables (tmpl_…).

  • data array de objetos requerido

    Arreglo de variables de la plantilla.

    Ver 14 atributos hijos
    • data[].name string requerido

      Nombre de la variable — es la llave que usas en templateValues. Se mantiene en snake_case natural, nunca se cameliza.

    • data[].label string requerido

      Etiqueta legible para mostrar.

    • data[].type string

      Tipo de dato (token opaco snake_case): text, date, currency, textarea, select, number.

      default "text"

    • data[].required boolean

      Si la variable es obligatoria.

      default true

    • data[].defaultValue string puede ser null

      Valor por default sugerido.

    • data[].options array de string puede ser null

      Opciones válidas cuando type es select.

    • data[].role string puede ser null

      Rol del firmante inferido del prefijo con doble guion bajo, o null si la variable no está ligada a un rol.

    • data[].source string puede ser null

      Origen del dato (token opaco): form_field, jinja, signal o manual.

    • data[].page integer puede ser null

      Página 1-based del hueco principal.

      mín. 1

    • data[].rect objeto puede ser null

      Rectángulo del hueco principal, en % del papel.

      Ver 4 atributos hijos
      • data[].rect.x number requerido

        X izquierdo, porcentaje del ancho de la página.

        entre 0 y 100

      • data[].rect.y number requerido

        Y superior, porcentaje del alto de la página.

        entre 0 y 100

      • data[].rect.width number requerido

        Ancho en porcentaje de la página.

        entre 0 y 100

      • data[].rect.height number requerido

        Alto en porcentaje de la página.

        entre 0 y 100

    • data[].slots array de objetos puede ser null

      Huecos adicionales cuando el mismo dato aparece más de una vez.

      Ver 2 atributos hijos
      • data[].slots[].page integer requerido

        Página 1-based.

        mín. 1

      • data[].slots[].rect objeto requerido

        Rectángulo del hueco, en % del papel.

        Ver 4 atributos hijos
        • data[].slots[].rect.x number requerido

          X izquierdo, porcentaje del ancho de la página.

          entre 0 y 100

        • data[].slots[].rect.y number requerido

          Y superior, porcentaje del alto de la página.

          entre 0 y 100

        • data[].slots[].rect.width number requerido

          Ancho en porcentaje de la página.

          entre 0 y 100

        • data[].slots[].rect.height number requerido

          Alto en porcentaje de la página.

          entre 0 y 100

    • data[].filledBy string puede ser null

      Quién llena el dato: owner (el remitente) o null. Por compatibilidad puede traer signer o el nombre de un rol; esos valores ya no se aceptan en el body de crear, editar ni confirmar.

    • data[].snippet string puede ser null

      Texto exacto del hueco detectado en el análisis (______, [CIUDAD]), o null.

    • data[].analysisIndex integer puede ser null

      Índice del candidato del análisis del que se confirmó esta variable, o null si se creó a mano.

      mín. 1

  • hasMore boolean

    Siempre false en esta colección acotada.

    default false

Errores posibles (problem+json): 400 401 403 404 422 429

Update template variable

PATCH /templates/{template_id}/variables

Cambia una variable por su name: renombrarla (newName), su etiqueta, tipo o su posición. Los documentos ya creados no cambian. filledBy solo acepta owner: todas las variables las llena el remitente, y signer responde 422.

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • name string requerido

    Nombre actual de la variable a modificar.

  • newName string puede ser null

    Nuevo nombre. Conserva el slot original.

  • label string puede ser null

    Nueva etiqueta legible.

  • type string puede ser null

    Nuevo tipo de dato (token opaco).

  • required boolean puede ser null

    Si la variable es obligatoria.

  • defaultValue string puede ser null

    Nuevo valor por default.

  • options array de string puede ser null

    Nuevas opciones cuando type es select.

  • role string puede ser null

    Nuevo rol, o null para desligarlo.

  • page integer puede ser null

    Nueva página 1-based del hueco.

    mín. 1

  • rect objeto puede ser null

    Nuevo rectángulo, en % del papel.

    Ver 4 atributos hijos
    • rect.x number requerido

      X izquierdo, porcentaje del ancho de la página.

      entre 0 y 100

    • rect.y number requerido

      Y superior, porcentaje del alto de la página.

      entre 0 y 100

    • rect.width number requerido

      Ancho en porcentaje de la página.

      entre 0 y 100

    • rect.height number requerido

      Alto en porcentaje de la página.

      entre 0 y 100

  • slots array de objetos puede ser null

    Reemplaza los huecos adicionales.

    Ver 2 atributos hijos
    • slots[].page integer requerido

      Página 1-based.

      mín. 1

    • slots[].rect objeto requerido

      Rectángulo del hueco, en % del papel.

      Ver 4 atributos hijos
      • slots[].rect.x number requerido

        X izquierdo, porcentaje del ancho de la página.

        entre 0 y 100

      • slots[].rect.y number requerido

        Y superior, porcentaje del alto de la página.

        entre 0 y 100

      • slots[].rect.width number requerido

        Ancho en porcentaje de la página.

        entre 0 y 100

      • slots[].rect.height number requerido

        Alto en porcentaje de la página.

        entre 0 y 100

  • mergeInto string puede ser null

    Nombre de otra variable. Si se envía, esta se une a ella como slots.

  • filledBy enum puede ser null

    Quién llena el dato: owner (el remitente) u omítelo. signer responde 422 SIGNER_VARIABLE_NOT_SUPPORTED: lo que llena el firmante va en un campo del formulario PDF asignado a su rol (role en los campos de la plantilla; role o signer en los del documento).

    Valores: owner signer

Devuelve

200 La variable ya actualizada.

Ver los 4 atributos de la respuesta
  • object string, siempre "list"

    Siempre "list".

  • templateId string requerido

    La plantilla a la que pertenecen las variables (tmpl_…).

  • data array de objetos requerido

    Arreglo de variables de la plantilla.

    Ver 14 atributos hijos
    • data[].name string requerido

      Nombre de la variable — es la llave que usas en templateValues. Se mantiene en snake_case natural, nunca se cameliza.

    • data[].label string requerido

      Etiqueta legible para mostrar.

    • data[].type string

      Tipo de dato (token opaco snake_case): text, date, currency, textarea, select, number.

      default "text"

    • data[].required boolean

      Si la variable es obligatoria.

      default true

    • data[].defaultValue string puede ser null

      Valor por default sugerido.

    • data[].options array de string puede ser null

      Opciones válidas cuando type es select.

    • data[].role string puede ser null

      Rol del firmante inferido del prefijo con doble guion bajo, o null si la variable no está ligada a un rol.

    • data[].source string puede ser null

      Origen del dato (token opaco): form_field, jinja, signal o manual.

    • data[].page integer puede ser null

      Página 1-based del hueco principal.

      mín. 1

    • data[].rect objeto puede ser null

      Rectángulo del hueco principal, en % del papel.

      Ver 4 atributos hijos
      • data[].rect.x number requerido

        X izquierdo, porcentaje del ancho de la página.

        entre 0 y 100

      • data[].rect.y number requerido

        Y superior, porcentaje del alto de la página.

        entre 0 y 100

      • data[].rect.width number requerido

        Ancho en porcentaje de la página.

        entre 0 y 100

      • data[].rect.height number requerido

        Alto en porcentaje de la página.

        entre 0 y 100

    • data[].slots array de objetos puede ser null

      Huecos adicionales cuando el mismo dato aparece más de una vez.

      Ver 2 atributos hijos
      • data[].slots[].page integer requerido

        Página 1-based.

        mín. 1

      • data[].slots[].rect objeto requerido

        Rectángulo del hueco, en % del papel.

        Ver 4 atributos hijos
        • data[].slots[].rect.x number requerido

          X izquierdo, porcentaje del ancho de la página.

          entre 0 y 100

        • data[].slots[].rect.y number requerido

          Y superior, porcentaje del alto de la página.

          entre 0 y 100

        • data[].slots[].rect.width number requerido

          Ancho en porcentaje de la página.

          entre 0 y 100

        • data[].slots[].rect.height number requerido

          Alto en porcentaje de la página.

          entre 0 y 100

    • data[].filledBy string puede ser null

      Quién llena el dato: owner (el remitente) o null. Por compatibilidad puede traer signer o el nombre de un rol; esos valores ya no se aceptan en el body de crear, editar ni confirmar.

    • data[].snippet string puede ser null

      Texto exacto del hueco detectado en el análisis (______, [CIUDAD]), o null.

    • data[].analysisIndex integer puede ser null

      Índice del candidato del análisis del que se confirmó esta variable, o null si se creó a mano.

      mín. 1

  • hasMore boolean

    Siempre false en esta colección acotada.

    default false

Errores posibles (problem+json): 400 401 403 404 422 429

Delete template variable

DELETE /templates/{template_id}/variables

Quita una variable de la plantilla (por name). Los documentos ya creados conservan sus valores.

Parámetros

  • template_id string ruta requerido
  • name string query requerido

    Nombre de la variable a quitar.

    mín. 1 caracteres

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

204 Variable eliminada.

Errores posibles (problem+json): 400 401 403 404 422 429

Confirm variable candidates

POST /templates/{template_id}/variables:confirm

Convierte candidatos del análisis en variables de la plantilla, con nombre final y etiqueta. Todas las variables las llena el remitente: filledBy solo acepta owner, y signer responde 422. Lo que captura el firmante va en un campo del formulario PDF (guía Formularios PDF). Cuando no quedan candidatos pendientes la plantilla pasa a readiness: "ready".

Parámetros

  • template_id string ruta requerido
  • Idempotency-Key string header

    Clave única (UUID v4) que vuelve idempotente el POST: un reintento con la misma clave repite la respuesta original en lugar de volver a crear, cobrar o notificar.

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • all boolean puede ser null

    true para confirmar todos los candidatos no-firma del análisis vigente.

  • items array de objetos puede ser null

    Candidatos puntuales a confirmar, por índice.

    Ver 6 atributos hijos
    • items[].index integer requerido

      Índice (1-based) del candidato del análisis a confirmar.

      mín. 1

    • items[].name string puede ser null

      Nombre a usar en vez del propuesto por el análisis.

    • items[].label string puede ser null

      Etiqueta legible a usar en vez de la propuesta.

    • items[].type string puede ser null

      Tipo de dato (token opaco) a usar en vez del propuesto.

    • items[].kind enum puede ser null

      data o decision. Un candidato signature nunca puede confirmarse aquí.

      Valores: data decision

    • items[].filledBy string puede ser null

      Quién llena el dato: owner (el remitente) o null. signer o el nombre de un rol responden 422 SIGNER_VARIABLE_NOT_SUPPORTED: lo que llena el firmante va en un campo del formulario PDF asignado a su rol (role en los campos de la plantilla; role o signer en los del documento).

Devuelve

200 Las variables de la plantilla después de confirmar.

Ver los 4 atributos de la respuesta
  • object string, siempre "list"

    Siempre "list".

  • templateId string requerido

    La plantilla a la que pertenecen las variables (tmpl_…).

  • data array de objetos requerido

    Arreglo de variables de la plantilla.

    Ver 14 atributos hijos
    • data[].name string requerido

      Nombre de la variable — es la llave que usas en templateValues. Se mantiene en snake_case natural, nunca se cameliza.

    • data[].label string requerido

      Etiqueta legible para mostrar.

    • data[].type string

      Tipo de dato (token opaco snake_case): text, date, currency, textarea, select, number.

      default "text"

    • data[].required boolean

      Si la variable es obligatoria.

      default true

    • data[].defaultValue string puede ser null

      Valor por default sugerido.

    • data[].options array de string puede ser null

      Opciones válidas cuando type es select.

    • data[].role string puede ser null

      Rol del firmante inferido del prefijo con doble guion bajo, o null si la variable no está ligada a un rol.

    • data[].source string puede ser null

      Origen del dato (token opaco): form_field, jinja, signal o manual.

    • data[].page integer puede ser null

      Página 1-based del hueco principal.

      mín. 1

    • data[].rect objeto puede ser null

      Rectángulo del hueco principal, en % del papel.

      Ver 4 atributos hijos
      • data[].rect.x number requerido

        X izquierdo, porcentaje del ancho de la página.

        entre 0 y 100

      • data[].rect.y number requerido

        Y superior, porcentaje del alto de la página.

        entre 0 y 100

      • data[].rect.width number requerido

        Ancho en porcentaje de la página.

        entre 0 y 100

      • data[].rect.height number requerido

        Alto en porcentaje de la página.

        entre 0 y 100

    • data[].slots array de objetos puede ser null

      Huecos adicionales cuando el mismo dato aparece más de una vez.

      Ver 2 atributos hijos
      • data[].slots[].page integer requerido

        Página 1-based.

        mín. 1

      • data[].slots[].rect objeto requerido

        Rectángulo del hueco, en % del papel.

        Ver 4 atributos hijos
        • data[].slots[].rect.x number requerido

          X izquierdo, porcentaje del ancho de la página.

          entre 0 y 100

        • data[].slots[].rect.y number requerido

          Y superior, porcentaje del alto de la página.

          entre 0 y 100

        • data[].slots[].rect.width number requerido

          Ancho en porcentaje de la página.

          entre 0 y 100

        • data[].slots[].rect.height number requerido

          Alto en porcentaje de la página.

          entre 0 y 100

    • data[].filledBy string puede ser null

      Quién llena el dato: owner (el remitente) o null. Por compatibilidad puede traer signer o el nombre de un rol; esos valores ya no se aceptan en el body de crear, editar ni confirmar.

    • data[].snippet string puede ser null

      Texto exacto del hueco detectado en el análisis (______, [CIUDAD]), o null.

    • data[].analysisIndex integer puede ser null

      Índice del candidato del análisis del que se confirmó esta variable, o null si se creó a mano.

      mín. 1

  • hasMore boolean

    Siempre false en esta colección acotada.

    default false

Errores posibles (problem+json): 400 401 403 404 422 429

Get template analysis

GET /templates/{template_id}/analysis

Solo plantillas DOCX: el análisis vigente de huecos (______, [CIUDAD], {{ }}) con sus candidatos a variable. Los candidatos no son variables hasta que los confirmas con POST …/variables:confirm; pendingCandidates en la plantilla dice cuántos faltan.

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 El análisis con sus candidatos.

Ver los 8 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • object string, siempre "template_analysis"

    Siempre "template_analysis".

  • templateId string requerido

    La plantilla analizada (tmpl_…).

  • status enum requerido

    Estado de la lectura: reading, done o failed.

    Valores: reading done failed

  • stages array de objetos

    Etapas de la lectura, para polling.

    Ver 3 atributos hijos
    • stages[].name string requerido

      Nombre de la etapa de lectura.

    • stages[].status string requerido

      Estado de la etapa: pending, running, done o failed.

    • stages[].detail string puede ser null

      Detalle legible de la etapa, o null.

  • candidates array de objetos

    Candidatos detectados.

    Ver 17 atributos hijos
    • candidates[].name string puede ser null

      Nombre propuesto, o null si aún no se nombra.

    • candidates[].label string puede ser null

      Etiqueta humana tal como aparece en el documento, o null.

    • candidates[].kind string requerido

      Tipo de candidato (token opaco): data, decision o signature.

    • candidates[].type string puede ser null

      Tipo de dato inferido: text, date, amount, rfc, email, phone, number, boolean o choice, o null.

    • candidates[].confidence number puede ser null

      Confianza 0–1, o null.

      entre 0 y 1

    • candidates[].why string puede ser null

      Por qué se propuso este candidato.

    • candidates[].slots array de objetos

      Huecos donde aparece el candidato.

      Ver 2 atributos hijos
      • candidates[].slots[].page integer requerido

        Página 1-based.

        mín. 1

      • candidates[].slots[].rect objeto requerido

        Rectángulo del hueco, en % del papel.

        Ver 4 atributos hijos
        • candidates[].slots[].rect.x number requerido

          X izquierdo, porcentaje del ancho de la página.

          entre 0 y 100

        • candidates[].slots[].rect.y number requerido

          Y superior, porcentaje del alto de la página.

          entre 0 y 100

        • candidates[].slots[].rect.width number requerido

          Ancho en porcentaje de la página.

          entre 0 y 100

        • candidates[].slots[].rect.height number requerido

          Alto en porcentaje de la página.

          entre 0 y 100

    • candidates[].index integer puede ser null

      Índice estable del candidato dentro del análisis, o null.

      mín. 1

    • candidates[].paragraph integer puede ser null

      Párrafo (0-based) del DOCX fuente, o null si no aplica.

      mín. 0

    • candidates[].run integer puede ser null

      Run (0-based) dentro del párrafo, o null si no aplica.

      mín. 0

    • candidates[].start integer puede ser null

      Offset de inicio (0-based) dentro del párrafo del DOCX fuente, o null.

      mín. 0

    • candidates[].end integer puede ser null

      Offset final (0-based) dentro del párrafo del DOCX fuente, o null.

      mín. 0

    • candidates[].neighborText string puede ser null

      Texto vecino o de párrafo alrededor de la señal detectada, o null.

    • candidates[].snippet string puede ser null

      Texto exacto del hueco detectado (p.ej. ______, [CIUDAD], ( X )), o null.

    • candidates[].options array de string puede ser null

      Opciones válidas cuando kind es decision, o null.

    • candidates[].filledBy string puede ser null

      Quién lo llena según el análisis: owner o null. Si trae otro valor, no lo reenvíes en filledBy al confirmar: las variables son solo del remitente.

    • candidates[].labeledBy string puede ser null

      llm cuando el etiquetador IA ajustó nombre/tipo/parte; null si sólo el lector determinista.

  • parts array de objetos

    Partes detectadas de las líneas de firma.

    Ver 4 atributos hijos
    • parts[].index integer puede ser null

      Índice estable de la parte, o null.

      mín. 1

    • parts[].text string requerido

      Texto de la parte detectada en una línea de firma.

    • parts[].paragraph integer puede ser null

      Párrafo (0-based) del DOCX fuente, o null si no aplica.

      mín. 0

    • parts[].run integer puede ser null

      Run (0-based) dentro del párrafo, o null si no aplica.

      mín. 0

  • pageCount integer

    Número de páginas del documento fuente.

    default 0 · mín. 0

Errores posibles (problem+json): 400 401 403 404 422 429

Validate template values

POST /templates/{template_id}/validate-values

Comprueba un mapa templateValues contra las variables de la plantilla sin crear nada y sin consumir crédito. Es el ensayo previo de Create document: te dice qué falta antes de que el documento exista. Por qué importa: si emites el documento sin una variable requerida, la respuesta es 422 y no se crea nada — pero ya escribiste el formulario, ya pediste los datos al usuario y ya armaste el request. Validar en cada guardado te deja corregir mientras el usuario sigue en la pantalla. Siempre responde 200, incluso cuando el mapa está mal: es un diagnóstico, no un rechazo. Lo que te dice si puedes crear el documento es el campo valid. La respuesta separa tres cosas que no pesan igual: - errors — falta una variable requerida, llegó vacía, o mandaste una llave que la plantilla no declara (UNKNOWN_VARIABLE, casi siempre un typo como nombre_completoo). Cualquiera de ellos pone valid en false. POST /v3/templates/{id}/documents rechaza con 422 estos mismos errores; POST /v3/documents rechaza la requerida que falta, pero descarta sin imprimir las llaves desconocidas. - warnings — el valor no cuadra con el type de la variable. Nunca bloquean. El type no se declara: se infiere del nombre, así que una variable llamada forma_de_pago se marca currency aunque contenga texto. Trátalos como una pista para revisar, no como un error. - ignored — las mismas llaves desconocidas, en una lista simple de nombres. Cada una aparece también en errors con UNKNOWN_VARIABLE.

Parámetros

  • template_id string ruta requerido

    ID de la plantilla (tmpl_…) contra la que se validan los valores.

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • templateValues objeto (llave → valor)

    El mismo mapa que mandarías en templateValues al crear el documento. Las llaves son los name de las variables y conservan su forma natural (nombre_completo): nunca se camelizan, porque son datos del negocio y no campos del protocolo.

Devuelve

200 El diagnóstico del mapa (object: "template_values_validation"), con valid y los tres bloques. 200 no significa que el mapa esté bien — revisa valid.

Ver los 7 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • object string, siempre "template_values_validation"

    Siempre "template_values_validation".

  • templateId string requerido

    La plantilla contra la que se validó (tmpl_…).

  • valid boolean requerido

    false únicamente cuando hay errors, incluida una llave que la plantilla no declara. Los warnings no invalidan: el type de una variable se infiere de su nombre, así que no puede bloquear.

  • errors array de objetos

    Problemas que SÍ romperían el documento: una variable requerida ausente o vacía saldría como un espacio en blanco en el contrato, y una llave que la plantilla no declara (UNKNOWN_VARIABLE) no se imprimiría en ningún lado. POST /v3/templates/{id}/documents rechaza con 422 estos mismos errores.

    Ver 3 atributos hijos
    • errors[].name string requerido

      La variable a la que se refiere el hallazgo.

    • errors[].code string requerido

      Código estable del hallazgo: MISSING_REQUIRED_VARIABLE (falta), EMPTY_REQUIRED_VARIABLE (llegó vacía), UNKNOWN_VARIABLE (la plantilla no declara esa llave) o TYPE_MISMATCH_HINT (el valor no cuadra con el tipo inferido).

    • errors[].detail string requerido

      Explicación legible de qué pasaría si envías así el documento.

  • warnings array de objetos

    Avisos que no bloquean. El type de cada variable se infiere de su nombre (monto_… → currency), no está declarado en la plantilla; por eso un desajuste se avisa pero nunca rechaza.

    Ver 3 atributos hijos
    • warnings[].name string requerido

      La variable a la que se refiere el hallazgo.

    • warnings[].code string requerido

      Código estable del hallazgo: MISSING_REQUIRED_VARIABLE (falta), EMPTY_REQUIRED_VARIABLE (llegó vacía), UNKNOWN_VARIABLE (la plantilla no declara esa llave) o TYPE_MISMATCH_HINT (el valor no cuadra con el tipo inferido).

    • warnings[].detail string requerido

      Explicación legible de qué pasaría si envías así el documento.

  • ignored array de string

    Llaves que mandaste y la plantilla no declara — normalmente un typo. Cada una sale también en errors con UNKNOWN_VARIABLE: POST /v3/templates/{id}/documents las rechaza con 422 y POST /v3/documents las descarta sin imprimirlas.

Errores posibles (problem+json): 400 401 403 404 422 429

Get signing layout (legacy)

GET /templates/{template_id}/signing

El layout de firma del modo anterior a los formularios: cajas de firma/iniciales/fecha por rol sobre una plantilla DOCX. Para plantillas PDF con formulario usa …/fields y …/roles, que lo sustituyen.

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 Roles con sus cajas.

Ver los 4 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • object string, siempre "template_signing"

    Siempre "template_signing".

  • templateId string requerido

    La plantilla (tmpl_…).

  • roles array de objetos

    Roles y sus campos de firma.

    Ver 2 atributos hijos
    • roles[].name string requerido

      Nombre del rol (ej. proveedor).

    • roles[].fields array de objetos

      Campos de firma de este rol.

      Ver 8 atributos hijos
      • roles[].fields[].roleName string requerido

        Nombre del rol al que pertenece este campo.

      • roles[].fields[].kind enum requerido

        Tipo de campo: signature, initials, name, date o vobo.

        Valores: signature initials name date vobo

      • roles[].fields[].page integer requerido

        Página 1-based.

        mín. 1

      • roles[].fields[].rect objeto requerido

        Rectángulo del campo, en % del papel.

        Ver 4 atributos hijos
        • roles[].fields[].rect.x number requerido

          X izquierdo, porcentaje del ancho de la página.

          entre 0 y 100

        • roles[].fields[].rect.y number requerido

          Y superior, porcentaje del alto de la página.

          entre 0 y 100

        • roles[].fields[].rect.width number requerido

          Ancho en porcentaje de la página.

          entre 0 y 100

        • roles[].fields[].rect.height number requerido

          Alto en porcentaje de la página.

          entre 0 y 100

      • roles[].fields[].rule enum puede ser null

        Regla de expansión. all_pages replica el campo en cada página.

        Valores: all_pages

      • roles[].fields[].anchor string puede ser null

        Texto ancla en el PDF, o null si va por coordenadas.

      • roles[].fields[].expect integer puede ser null

        Cuántas coincidencias del ancla se esperan.

        mín. 1

      • roles[].fields[].onMiss enum puede ser null

        Qué hacer si el ancla no aparece: fail o ignore.

        Valores: fail ignore

Errores posibles (problem+json): 400 401 403 404 422 429

Replace signing layout (legacy)

PUT /templates/{template_id}/signing

Reemplaza el layout de firma completo (roles y cajas) de una plantilla DOCX. Declarativo. En plantillas PDF con formulario usa PUT …/fields.

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • roles array de objetos requerido

    Disposición completa de roles y campos. Reemplaza la anterior.

    Ver 2 atributos hijos
    • roles[].name string requerido

      Nombre del rol (ej. proveedor).

    • roles[].fields array de objetos

      Campos de firma de este rol.

      Ver 8 atributos hijos
      • roles[].fields[].roleName string requerido

        Nombre del rol al que pertenece este campo.

      • roles[].fields[].kind enum requerido

        Tipo de campo: signature, initials, name, date o vobo.

        Valores: signature initials name date vobo

      • roles[].fields[].page integer requerido

        Página 1-based.

        mín. 1

      • roles[].fields[].rect objeto requerido

        Rectángulo del campo, en % del papel.

        Ver 4 atributos hijos
        • roles[].fields[].rect.x number requerido

          X izquierdo, porcentaje del ancho de la página.

          entre 0 y 100

        • roles[].fields[].rect.y number requerido

          Y superior, porcentaje del alto de la página.

          entre 0 y 100

        • roles[].fields[].rect.width number requerido

          Ancho en porcentaje de la página.

          entre 0 y 100

        • roles[].fields[].rect.height number requerido

          Alto en porcentaje de la página.

          entre 0 y 100

      • roles[].fields[].rule enum puede ser null

        Regla de expansión. all_pages replica el campo en cada página.

        Valores: all_pages

      • roles[].fields[].anchor string puede ser null

        Texto ancla en el PDF, o null si va por coordenadas.

      • roles[].fields[].expect integer puede ser null

        Cuántas coincidencias del ancla se esperan.

        mín. 1

      • roles[].fields[].onMiss enum puede ser null

        Qué hacer si el ancla no aparece: fail o ignore.

        Valores: fail ignore

Devuelve

200 El layout tal como quedó.

Ver los 4 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • object string, siempre "template_signing"

    Siempre "template_signing".

  • templateId string requerido

    La plantilla (tmpl_…).

  • roles array de objetos

    Roles y sus campos de firma.

    Ver 2 atributos hijos
    • roles[].name string requerido

      Nombre del rol (ej. proveedor).

    • roles[].fields array de objetos

      Campos de firma de este rol.

      Ver 8 atributos hijos
      • roles[].fields[].roleName string requerido

        Nombre del rol al que pertenece este campo.

      • roles[].fields[].kind enum requerido

        Tipo de campo: signature, initials, name, date o vobo.

        Valores: signature initials name date vobo

      • roles[].fields[].page integer requerido

        Página 1-based.

        mín. 1

      • roles[].fields[].rect objeto requerido

        Rectángulo del campo, en % del papel.

        Ver 4 atributos hijos
        • roles[].fields[].rect.x number requerido

          X izquierdo, porcentaje del ancho de la página.

          entre 0 y 100

        • roles[].fields[].rect.y number requerido

          Y superior, porcentaje del alto de la página.

          entre 0 y 100

        • roles[].fields[].rect.width number requerido

          Ancho en porcentaje de la página.

          entre 0 y 100

        • roles[].fields[].rect.height number requerido

          Alto en porcentaje de la página.

          entre 0 y 100

      • roles[].fields[].rule enum puede ser null

        Regla de expansión. all_pages replica el campo en cada página.

        Valores: all_pages

      • roles[].fields[].anchor string puede ser null

        Texto ancla en el PDF, o null si va por coordenadas.

      • roles[].fields[].expect integer puede ser null

        Cuántas coincidencias del ancla se esperan.

        mín. 1

      • roles[].fields[].onMiss enum puede ser null

        Qué hacer si el ancla no aparece: fail o ignore.

        Valores: fail ignore

Errores posibles (problem+json): 400 401 403 404 422 429

List documents to seed the signing layout (legacy)

GET /templates/{template_id}/signing/documents

Documentos ya firmados creados desde esta plantilla, de los que puedes copiar las cajas de firma con POST …/signing:from-document.

Parámetros

  • template_id string ruta requerido
  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Devuelve

200 Colección de documentos candidatos.

Ver los 2 atributos de la respuesta
  • object string, siempre "list"

    Siempre "list".

  • data array de objetos requerido

    Documentos candidatos, más recientes primero.

    Ver 6 atributos hijos
    • data[].documentId string requerido

      El documento candidato (doc_…).

    • data[].name string requerido

      Nombre del documento.

    • data[].completedAt string (fecha-hora ISO 8601) puede ser null

      Cuándo terminó de firmarse, o null si el documento aún no se completa (puede seguir listado si ya trae una disposición de firma original).

    • data[].fieldCount integer requerido

      Campos de firma originales que tiene este documento.

      mín. 0

    • data[].roleNames array de string

      Roles con campos de firma en este documento.

    • data[].matchable boolean requerido

      true si el documento nació exactamente de esta plantilla (mapeo directo por rol); false si solo es comparable por archivo/hash.

Errores posibles (problem+json): 400 401 403 404 422 429

Import signing layout from a document (legacy)

POST /templates/{template_id}/signing:from-document

Copia las cajas de firma (por rol) de un documento firmado al layout de la plantilla DOCX. El equivalente para formularios PDF es POST …/fields:from-document.

Parámetros

  • template_id string ruta requerido
  • Idempotency-Key string header

    Clave única (UUID v4) que vuelve idempotente el POST: un reintento con la misma clave repite la respuesta original en lugar de volver a crear, cobrar o notificar.

  • AllSign-Version enum header

    Fecha del contrato contra la que quieres resolver la petición. Si la omites se sirve la versión vigente; una fecha desconocida responde 400 UNSUPPORTED_API_VERSION.

    Valores: 2026-07-11

Cuerpo de la petición

application/json

  • documentId string puede ser null

    Documento (doc_…) del que se copian los campos de firma.

  • consolidate boolean

    Si es true, consolida campos de documentos comparables en vez de copiar uno solo.

    default false

Devuelve

200 El layout tal como quedó.

Ver los 7 atributos de la respuesta
  • livemode boolean requerido

    true en entorno live, false en test/dev (marca de agua, sin validez legal).

  • object string, siempre "template_signing_import"

    Siempre "template_signing_import".

  • templateId string requerido

    La plantilla destino (tmpl_…).

  • matchedCount integer requerido

    Campos que encajaron.

    mín. 0

  • totalCount integer requerido

    Campos considerados.

    mín. 0

  • signing objeto requerido

    Disposición resultante.

    Ver 4 atributos hijos
    • signing.livemode boolean requerido

      true en entorno live, false en test/dev (marca de agua, sin validez legal).

    • signing.object string, siempre "template_signing"

      Siempre "template_signing".

    • signing.templateId string requerido

      La plantilla (tmpl_…).

    • signing.roles array de objetos

      Roles y sus campos de firma.

      Ver 2 atributos hijos
      • signing.roles[].name string requerido

        Nombre del rol (ej. proveedor).

      • signing.roles[].fields array de objetos

        Campos de firma de este rol.

        Ver 8 atributos hijos
        • signing.roles[].fields[].roleName string requerido

          Nombre del rol al que pertenece este campo.

        • signing.roles[].fields[].kind enum requerido

          Tipo de campo: signature, initials, name, date o vobo.

          Valores: signature initials name date vobo

        • signing.roles[].fields[].page integer requerido

          Página 1-based.

          mín. 1

        • signing.roles[].fields[].rect objeto requerido

          Rectángulo del campo, en % del papel.

          Ver 4 atributos hijos
          • signing.roles[].fields[].rect.x number requerido

            X izquierdo, porcentaje del ancho de la página.

            entre 0 y 100

          • signing.roles[].fields[].rect.y number requerido

            Y superior, porcentaje del alto de la página.

            entre 0 y 100

          • signing.roles[].fields[].rect.width number requerido

            Ancho en porcentaje de la página.

            entre 0 y 100

          • signing.roles[].fields[].rect.height number requerido

            Alto en porcentaje de la página.

            entre 0 y 100

        • signing.roles[].fields[].rule enum puede ser null

          Regla de expansión. all_pages replica el campo en cada página.

          Valores: all_pages

        • signing.roles[].fields[].anchor string puede ser null

          Texto ancla en el PDF, o null si va por coordenadas.

        • signing.roles[].fields[].expect integer puede ser null

          Cuántas coincidencias del ancla se esperan.

          mín. 1

        • signing.roles[].fields[].onMiss enum puede ser null

          Qué hacer si el ancla no aparece: fail o ignore.

          Valores: fail ignore

  • unmatched array de objetos

    Campos que no encajaron, con su diferencia.

    Ver 4 atributos hijos
    • unmatched[].roleName string requerido

      Rol del campo que no encajó.

    • unmatched[].kind enum requerido

      Tipo del campo que no encajó.

      Valores: signature initials name date vobo

    • unmatched[].page integer requerido

      Página 1-based del campo que no encajó.

      mín. 1

    • unmatched[].detail string requerido

      Por qué quedó fuera (posición distinta, rol sin pareja, etc.).

Errores posibles (problem+json): 400 401 403 404 422 429 503