Dar de alta un template

POST
/developers/template/save

Registra una plantilla en tu cuenta, o la reemplaza si ya existe una con el mismo nombre.

Un solo endpoint atiende los cuatro tipos de plantilla — HTML, PDF con AcroForm, pdfmake y DOCX. Lo que cambia es template_type y cómo se codifica template_data; el flujo siempre es el mismo:

  1. Da de alta la plantilla aquí.
  2. Firmame responde con los placeholders que encontró, así que te enteras de los nombres de los campos en vez de adivinarlos.
  3. De ahí en adelante genera documentos con POST /developers/json, mandando solo template y fields.
Authorization<token>

Cada petición lleva Authorization: signmage {webId}:{firma}, donde firma es el Base64 de HMAC-SHA256(apiKey, cadenaFirmada).

Qué va dentro de cadenaFirmada depende de la petición:

PeticióncadenaFirmada
GETLa URI completa incluyendo el query string, exactamente como se envía
POST con JSONEl cuerpo JSON, re-serializado compacto (sin espacios ni salto de línea final)
POST multipartEl SHA-256 en Base64 del archivo, que además se manda en el header Content-SHA256

Dos detalles que conviene resolverlos desde el principio:

  1. En GET, la URI se firma tal como se envía, así que el orden y el encoding de los parámetros importan.
  2. En POST, la comparación se hace contra tu JSON re-serializado en forma compacta. Manda JSON compacto y canónico para que las firmas coincidan.

Una firma que no coincide devuelve 401 con el cuerpo vacío. Como la misma respuesta cubre un web ID desconocido, una llave inactiva y una firma que no coincide, revisa las tres cosas al diagnosticar.

En: header

Cuerpo de la petición

application/json

Definiciones de TypeScript

Usa el tipo request body en TypeScript.

Da de alta una plantilla, o la reemplaza si ya existe una con el mismo nombre.

Se aceptan dos formas de payload. La plana que aparece abajo es la que usan los SDKs y el portal actual; también se acepta un objeto anidado template: {title, type, data, url}, que es equivalente.

Cuerpo de la respuesta

application/json

text/plain

curl -X POST "https://example.com/developers/template/save" \  -H "Content-Type: application/json" \  -d '{    "template_type": "html",    "template_name": "contrato-arrendamiento",    "template_data": "PHA+SG9sYSB7e25vbWJyZX19PC9wPg=="  }'

{  "tables": [    {      "id": "directory",      "rows": []    }  ],  "template_title": "contrato-arrendamiento",  "fields": [    {      "id": "full-name",      "value": ""    }  ]}