Receta
Prellena un formulario PDF y mándalo a firma
Objetivo: Un formulario PDF con sus campos prellenados, el RFC bloqueado y enviado a la persona que lo llena y firma.
Grabado en el entorno interno de AllSign con una key de sandbox · backend 24c0469 · · test docs-checks-v3/tests/recetas/formulario-pdf-acroform.receta.spec.ts
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_…").
1 Da de alta el formulario como plantilla
POST /templates ver en la referencia
Qué haces
AllSign importa cada campo del formulario (los widgets del PDF) con su nombre y su tipo. Ya trae un rol (roleCount: 1) porque el PDF tiene una caja de firma llamada firma_cliente. readiness en pending quiere decir que hay campos que todavía no son de nadie.
Qué mirar
id="tmpl_39701d80589b412dbd39e02b48679840"fieldCount=5roleCount=1readiness="pending"
2 Revisa los campos que importó
GET /templates/{template_id}/fields ver en la referencia
Qué haces
La caja de firma ya es del rol Cliente, así que no tienes que declarar roles. Los otros cuatro campos (nombre, rfc, fecha y acepta) esperan a que digas quién los llena.
Qué mirar
unassignedCount=4data.4.role="Cliente"
3 Asigna un campo al rol
PATCH /templates/{template_id}/fields/{name} ver en la referencia
Qué haces
Repite esta llamada con rfc, fecha y acepta: cada campo dice qué rol lo llena. Un rol es un lugar en el formulario, no una persona; la persona se asigna al crear cada documento.
Qué mirar
name="nombre"role="Cliente"
4 Confirma que la plantilla quedó lista
GET /templates/{template_id} ver en la referencia
Qué haces
Con todos los campos asignados, readiness pasa a ready.
Qué mirar
readiness="ready"
5 Crea el documento con valores y un campo bloqueado
POST /documents ver en la referencia
Qué haces
values prellena los campos por su nombre (texto o casilla) y readOnly bloquea los que el firmante no debe cambiar: aquí el RFC, que ya validaste de tu lado. Un nombre de campo que no existe se ignora sin error, así que revisa la ortografía contra la lista de campos.
Qué mirar
id="doc_c8fee66bd4fb43ad9d928183b9ed7b38"status="draft"
6 Revisa cómo quedaron los campos
GET /documents/{document_id}/fields ver en la referencia
Qué haces
filledBy en owner dice que el valor lo puso quien envía; la fecha queda vacía para que la llene el firmante.
Qué mirar
data.1.value={"text":"XAXX010101000","checked":null}data.1.readOnly=truedata.1.filledBy="owner"data.2.filledBy=null
7 Envíalo a firma
POST /documents/{document_id}/send ver en la referencia
Qué haces
La persona recibe su invitación, llena la fecha, ve el RFC sin poder cambiarlo y firma.
Qué mirar
status="awaiting_signatures"
En producción
Con una key live este paso consume créditos de tu saldo; en sandbox no se cobra nada.
Errores comunes de esta receta
Errores reales que el test de esta receta provocó a propósito en sandbox, sobre sus mismos pasos. Cada uno enlaza a su explicación en Errores.
FIELD_NOT_FOUND · 404 · en el paso 3 (Asigna un campo al rol)
{
"type": "https://allsign.io/developers/docs/errors#FIELD_NOT_FOUND",
"title": "Not Found",
"status": 404,
"detail": "Field 'telefono_movil' not found in this template.",
"instance": "/v3/templates/tmpl_24c55a589976432da1a168e3c4859ce6/fields/telefono_movil",
"code": "FIELD_NOT_FOUND",
"requestId": "req_06aa3c8f7ed843d0afa10acac48240e5"
}Grabado en el entorno interno de AllSign con una key de sandbox · backend 24c0469 · · test docs-checks-v3/tests/recetas/formulario-pdf-acroform.receta.spec.ts
DOCUMENT_CONFLICT · 409 · en PATCH /v3/documents/doc_6b7fc763d2bc430980ae397679f7a465/fields/fie_fb20c7c439fc4902b6b6bbc9bbca55cc
{
"type": "https://allsign.io/developers/docs/errors#DOCUMENT_CONFLICT",
"title": "Conflict",
"status": 409,
"detail": "Este documento ya terminó (ANULADO): sus campos ya no se pueden crear, mover, reasignar ni borrar.",
"instance": "/v3/documents/doc_6b7fc763d2bc430980ae397679f7a465/fields/fie_fb20c7c439fc4902b6b6bbc9bbca55cc",
"code": "DOCUMENT_CONFLICT",
"requestId": "req_55b09c55654746338f3f811e0ced82a7",
"reason": "document_terminal"
}Grabado en el entorno interno de AllSign con una key de sandbox · backend 24c0469 · · test docs-checks-v3/tests/recetas/formulario-pdf-acroform.receta.spec.ts
Siguiente
- Recibe y verifica los webhooks de AllSign — Un endpoint que recibe los eventos de AllSign, comprueba que de verdad los firmó AllSign y sobrevive a sus propias caídas y a la rotación del secreto.
- Crea un contrato desde tu plantilla de Word — Un acuerdo de confidencialidad generado desde tu plantilla DOCX, con los datos de cada parte en su lugar y enviado a firma.