Dar de alta un template PDF desde bytes

POST
/developers/template/save/{title}

Igual que POST /developers/template/save, pero el cuerpo es el PDF crudo en vez de JSON — útil cuando el archivo es lo bastante grande como para que pese el sobrecosto de Base64.

Esta ruta maneja PDFs con formulario AcroForm, y los campos del formulario se vuelven los campos de la plantilla. Siempre crea una plantilla nueva; para reemplazar una, usa POST /developers/template/save.

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

Parámetros de ruta

title*string

Nombre con el que se dará de alta la plantilla.

Cuerpo de la petición

application/pdf

Definiciones de TypeScript

Usa el tipo request body en TypeScript.

body*file
Formatobinary

Cuerpo de la respuesta

application/json

text/plain

curl -X POST "https://example.com/developers/template/save/contrato-arrendamiento" \  -H "Content-Type: application/pdf" \  -d 'string'
{  "summary": "html",  "value": {    "template_title": "contrato-arrendamiento",    "fields": [      {        "id": "full-name",        "value": ""      }    ],    "tables": [      {        "id": "directory",        "rows": []      }    ]  }}