Saltar al contenido principal

Creación de plantillas

Este servicio permite crear plantillas personalizadas que posteriormente se pueden utilizar para diligenciar de documentos para firma.

POST/templatellave privadaprk_

Autenticación​

Incluye tu llave privada en el encabezado Authorization.

Authorization: prk_xxx...

Parámetros de creación​

NombreTipoDescripción
nameString requeridoNombre de la automatización.
descriptionString opcionalTexto que describe la plantilla, máximo 500 caracteres.
configArray requeridoArreglo de preguntas para el usuario. Consulta Configuración JSON.
signatureProfileArray requeridoDefinición de firmantes y aprobadores. Consulta Perfiles de Firma.
signArray requeridoNombres de preguntas obligatorias.
preBuildBoolean opcionalSi es true, incluye prellenado automático.
El límite de description son 500 caracteres

description es informativo: no cambia el comportamiento de la plantilla y sirve para que tu equipo reconozca para qué es cada una. Si no lo envías, la plantilla queda sin descripción. Si el texto pasa de 500 caracteres, la API responde 400 y no crea la plantilla.

El campo lo devuelve GET /template, tanto en el listado como en el detalle por id.

Ejemplos de Creación​

curl -X POST https://api.auco.ai/v1.5/ext/template \
-H "Content-Type: application/json" \
-H "Authorization: prk_private_key_company" \
-d '{
"name": "Documento de prueba modificación variables",
"description": "Contrato de servicios con un firmante, para el equipo comercial",
"config": [
{
"name": "nombre_cliente",
"type": "name",
"description": "Ingrese el nombre del cliente"
},
{
"description": "Seleccione el tipo de documento para el cliente",
"name": "tipo_documento_cliente",
"type": "clausula",
"value": "cc",
"options": [
{
"name": "Cédula de Ciudadanía",
"value": "cc"
},
{
"name": "Cédula de extranjería",
"value": "ce"
}
]
},
{
"description": "Digite el número de cédula de ciudadanía para el cliente",
"name": "cedula_cliente",
"type": "number",
"prereq": [
{
"k": "tipo_documento_cliente",
"v": "cc"
}
]
},
{
"description": "Digite el número de cédula de extranjería para el cliente",
"name": "cedula_extranjeria_cliente",
"type": "number",
"prereq": [
{
"k": "tipo_documento_cliente",
"v": "ce"
}
]
},
{
"name": "correo_cliente",
"type": "email",
"description": "Ingrese el correo del cliente"
},
{
"name": "telefono_cliente",
"type": "phone",
"description": "Ingrese el teléfono del cliente"
}
],
"sign": [
"nombre_cliente",
"cedula_cliente",
"cedula_extranjeria_cliente",
"correo_cliente",
"telefono_cliente"
],
"signatureProfile": [
{
"email": "correo_cliente",
"phone": "telefono_cliente",
"identification": "cedula_cliente|cedula_extranjeria_cliente",
"name": "nombre_cliente",
"type": "cliente"
}
]
}'

Ejemplo de respuesta​

{
"id": "template_id",
"urls": {
"mask": "https://signed_url_mask",
"complete": "https://signed_url_complete"
}
}

Carga de HTML Complete y HTML Mask:​

En la respuesta del servicio de creación encontrarás dos URLs firmadas, una para cada HTML. Tienen una vida útil de 120 segundos: después ya no son válidas. Ten listos los archivos HTML Complete y HTML Mask antes de crear la plantilla y sube cada uno, tal cual, con una petición PUT a su URL.

Sube con Content-Type: binary/octet-stream

Las URLs están firmadas para ese tipo de contenido: si envías otro —por ejemplo text/html—, la carga se rechaza. Envía el archivo sin transformarlo: en curl usa --data-binary, no -d, que elimina los saltos de línea.

# Cargar HTML Mask
curl -X PUT https://signed_url_mask \
-H "Content-Type: binary/octet-stream" \
--data-binary @mask.html

# Cargar HTML Complete
curl -X PUT https://signed_url_complete \
-H "Content-Type: binary/octet-stream" \
--data-binary @complete.html
Las URLs expiran en 120 segundos

Si expiran antes de subir los archivos, llama a PUT /template con el id de la plantilla para obtener URLs nuevas. No vuelvas a llamar POST /template: crearías otra plantilla.


⚠️ Respuestas de error​

Los errores llegan con el cuerpo { "message": "..." }.

CódigoDescripción
400Cuerpo inválido: PAYLOAD_NOT_VALID (el cuerpo no es JSON), PROFILE_FIELD_NOT_FOUND: <campo> (el email o phone de un firmante no es una pregunta de config ni un campo de preFill), PROFILE_FIELD_TYPE_INVALID: <campo> must be type <tipo> (apunta a una pregunta de otro tipo), o el mensaje del validador
401Autenticación inválida o ausente

El mensaje del validador nombra el campo que falla, por ejemplo "name" is required, "config[0].maxLength" is not allowed o "signatureProfile[0].name" must be a string. Consulta las reglas de cada campo en Configuración JSON.