Guia do produto e da API

Listar modelos

O que é um modelo

Um modelo é um design de documento armazenado com um código escolhido por você. Ele tem duas versões ao mesmo tempo: um rascunho que você continua editando e uma versão publicada usada na produção. Salvar não publica, então uma alteração inacabada não chega aos clientes.

Retorna os modelos do espaço de trabalho com os números das versões publicadas. O código do modelo é usado na renderização.

Solicitação
curl https://api.pdfgine.com/api/v1/templates \
  -H "X-PDFgine-Key: $PDFGINE_KEY"
Resposta
[
  {
    "templateId": "tpl_eca4c9985ad74913902f0469469936a1",
    "code": "invoice",
    "name": "Fatura corporativa",
    "version": 5,
    "publishedVersion": 1,
    "publishedAt": "2026-08-23T08:23:21+00:00"
  }
]

Formato do número de página

O conteúdo de um elemento de número de página é um formato: {{ page }} vira a página atual e {{ pages }} o total. Escreva “{{ page }} / {{ pages }}” e o documento imprime “3 / 12”, com contadores no PDF e campos PAGE/NUMPAGES no Word, atualizados automaticamente ao adicionar páginas. Sem marcadores no conteúdo, ele é ignorado e só o número da página é impresso.

Salvar uma versão

Um salvamento inclui a versão que você acredita estar editando. Se outra pessoa salvou nesse intervalo, a resposta é 409 e informa a versão atual, evitando sobrescritas silenciosas.

cURL
curl -X POST https://api.pdfgine.com/api/v1/templates \
  -H "X-PDFgine-Key: $PDFGINE_KEY" \
  -H "Content-Type: application/json" \
  -d '{
        "code": "invoice",
        "name": "Fatura corporativa",
        "saveMode": "manual",
        "expectedVersion": 5,
        "changeReason": "Logotipo movido para a margem direita.",
        "definition": {
          "page": { "size": "A4", "orientation": "portrait" },
          "elements": [
            { "type": "text", "text": "Fatura corporativa", "fontSize": 24 }
          ]
        }
      }'
Resposta
HTTP/1.1 409 Conflict

{
  "type": "https://pdfgine.dev/problems/template-conflict",
  "templateCode": "invoice",
  "currentVersion": 6,
  "currentDraftRevision": 0
}

expectedVersion é opcional, mas recomendado: sem ele, a última gravação vence e a alteração anterior desaparece sem deixar rastros.

Os problemas mais comuns

  • 409 não é um erro para repetir às cegas. Leia currentVersion, obtenha a definição mais recente, aplique sua alteração sobre ela e salve novamente.
  • Salvar não é publicar. A renderização de produção continua usando a última versão publicada até você publicar o rascunho.
  • A listagem retorna no máximo 200 modelos. Se houver mais, a resposta inclui um cabeçalho Link com rel="next"; siga-o em vez de assumir que a primeira página contém toda a biblioteca.
  • A leitura exige templates:read e o salvamento exige templates:write. Uma chave somente de leitura recebe 403 ao salvar, não 401.
  • O código é como todas as outras chamadas encontram o modelo. Renomear o modelo é livre; alterar seu código significa um novo modelo.