Campos y posiciones
Coloca firmas y datos en un PDF, asigna destinatarios y configura variantes de campo.
Un campo relaciona un PDF, un destinatario y una zona de página. Antes de añadirlo, consulta el sobre y conserva un envelopeItems[].id de texto y un recipients[].id numérico.
Coordenadas e identificadores
| Propiedad | Significado |
|---|---|
envelopeItemId | ID del PDF al que pertenece el campo. |
recipientId | ID numérico de la persona que lo utiliza. |
page | Página dentro de ese PDF, empezando por 1. |
positionX | Porcentaje horizontal desde el borde izquierdo. |
positionY | Porcentaje vertical desde el borde superior. |
width | Ancho relativo al ancho de página, en porcentaje. |
height | Alto relativo al alto de página, en porcentaje. |
Posiciones y dimensiones admiten valores entre 0 y 100. Verifica además que la suma de posición y dimensión no salga de la zona de página que deseas utilizar.
Al crear campos dentro de /envelope/create, identifier selecciona el PDF de la carga. En operaciones posteriores, utiliza envelopeItemId.
Añade una firma y un nombre
Este ejemplo añade dos campos al mismo PDF y destinatario en un borrador. Sustituye los tres IDs por los obtenidos al consultar el sobre.
curl --fail-with-body \
'https://business.digito.do/api/v2/envelope/field/create-many' \
-H "Authorization: $DIGITO_API_TOKEN" \
-H 'Content-Type: application/json' \
--data '{
"envelopeId": "envelope_ejemplo",
"data": [
{
"type": "SIGNATURE",
"envelopeItemId": "item_ejemplo",
"recipientId": 123,
"page": 1,
"positionX": 10,
"positionY": 75,
"width": 30,
"height": 8
},
{
"type": "NAME",
"envelopeItemId": "item_ejemplo",
"recipientId": 123,
"page": 1,
"positionX": 10,
"positionY": 85,
"width": 40,
"height": 5
}
]
}'La respuesta contiene data con los campos creados. Guarda sus IDs numéricos para posteriores cambios. Comprueba que ambos campos pertenezcan al PDF y al destinatario correctos.
Configura un campo de texto
El tipo principal usa mayúsculas (TEXT) y la variante de fieldMeta usa minúsculas (text). Esta configuración solicita una referencia de contrato y limita su longitud visual:
curl --fail-with-body \
'https://business.digito.do/api/v2/envelope/field/create-many' \
-H "Authorization: $DIGITO_API_TOKEN" \
-H 'Content-Type: application/json' \
--data '{
"envelopeId": "envelope_ejemplo",
"data": [
{
"type": "TEXT",
"envelopeItemId": "item_ejemplo",
"recipientId": 123,
"page": 1,
"positionX": 10,
"positionY": 60,
"width": 45,
"height": 6,
"fieldMeta": {
"type": "text",
"label": "Referencia del contrato",
"placeholder": "Contrato 001",
"required": true,
"fontSize": 12,
"characterLimit": 30,
"textAlign": "left"
}
}
]
}'La misma estructura no sirve para todos los tipos. fieldMeta es una unión de variantes; propiedades de text no deben enviarse como si pertenecieran a checkbox o dropdown.
type | Uso |
|---|---|
SIGNATURE, FREE_SIGNATURE, INITIALS | Representaciones visibles relacionadas con la firma. |
NAME, EMAIL, DATE | Datos de persona o fecha. |
TEXT, NUMBER | Texto o valor numérico. |
RADIO, CHECKBOX, DROPDOWN | Selección entre opciones. |
Por ejemplo, esta variante de fieldMeta configura opciones de un campo DROPDOWN:
{
"type": "dropdown",
"label": "Tipo de servicio",
"required": true,
"values": [
{
"value": "Consultoría"
},
{
"value": "Soporte"
}
],
"defaultValue": "Consultoría"
}Es solo el objeto fieldMeta; añade el tipo principal, los IDs y las coordenadas para crear un campo. Consulta los esquemas de creación para cada variante.
Actualiza y revisa
POST /envelope/field/update-many actualiza campos existentes y POST /envelope/field/delete utiliza un fieldId numérico. No crees un campo nuevo para corregir otro sin retirar o actualizar la configuración anterior.
Después de cambiar un PDF, su orden o sus páginas, revisa cada campo nuevamente. El servidor puede aceptar unas coordenadas que resulten poco legibles en el documento.
Firma visible y autorización
La representación visible no es el certificado de firma electrónica cualificada ni confirma por sí sola una firma completada. El firmante se autentica de nuevo con Digito ID antes de cada acción de firma. La sesión, la clave de API y los tokens técnicos no sustituyen esa autenticación.