Templates
Um template é HTML e CSS com alguns extras. Os valores de data entram com {{ }}, e
{% %} acrescenta lógica. A sintaxe é a do Tera, parecida
com os templates Jinja e Django.
<h1>Fatura {{ number }}</h1><p>{{ customer.name }}, emitida em {{ issued | date(style="long") }}</p>
<table> {% for item in items %} <tr> <td>{{ item.name }}</td> <td>{{ item.amount | currency(code="BRL") }}</td> </tr> {% endfor %}</table>
{% if discount %}<p>Desconto aplicado</p>{% endif %}
<p>Total {{ total | currency(code="BRL") }}</p>Valores
Seção intitulada “Valores”data é um objeto JSON. Acesse objetos com ponto (customer.name) e percorra listas com
{% for %}. Uma variável chamada locale está sempre disponível e guarda o idioma da
geração.
Os valores têm o HTML escapado: um nome como <b>Ana</b> aparece como texto, não como
marcação. O seu template é marcação confiável; os seus dados não são.
{% if x %}…{% elif y %}…{% else %}…{% endif %}e comparações comox > 1.{% for item in items %}comloop.index,loop.firsteloop.last.- Aritmética:
{{ price * qty }}. {% set name = value %}para dar nome a um valor intermediário.
Os filtros do próprio Tera (upper, lower, round, length e outros) também funcionam.
O serviço acrescenta três para formatação; veja Idiomas e formatação.
O que um template não pode fazer
Seção intitulada “O que um template não pode fazer”Templates não podem incluir outros arquivos nem ler nada fora da geração. A saída de uma geração tem um limite definido pelo plano, e um template que produz demais é recusado.
Salvar templates
Seção intitulada “Salvar templates”Crie e edite templates no portal, que pré-visualiza e valida enquanto você digita, ou pela API. Um template precisa compilar para ser salvo.
curl -X POST https://api.example.com/v1/templates \ -H "Authorization: Bearer $RUSTEDF_KEY" \ -H "Content-Type: application/json" \ -d '{ "name": "Fatura", "source": "<h1>{{ number }}</h1>", "locale": "pt-BR", "sample_data": { "number": "2025-0042" } }'sample_data serve só para a pré-visualização do portal. Cada alteração aumenta a version
do template. Templates pertencem a uma conta: o id de um template de outra conta dá 404.
Limites dos dados
Seção intitulada “Limites dos dados”data precisa ser um objeto JSON, com no máximo 32 níveis de profundidade e 200.000 valores,
e não maior que o limite de entrada do seu plano.