Integra em minutos, confia para sempre

A consola usa exatamente a mesma API que te damos: REST, JSON, erros previsíveis e idempotência nativa. Esta página cobre as convenções; a referência completa documenta cada endpoint de integração.

Fundamentos

Base URL

https://api.doptizer.pavulla.com

Versão atual: v0.1.0 · prefixo /v1 em todas as rotas.

Autenticação

Authorization: Bearer {token}

Obtém o token com POST /v1/auth/login. Cada resposta traz um correlation id — inclui-o em pedidos de suporte.

Idempotência

Todas as operações de criação aceitam o header Idempotency-Key. Repetir a chamada com a mesma chave devolve o MESMO recurso — sem duplicados e, no caso dos renders, sem consumir quota. Usa uma chave estável derivada do teu domínio (ex.: o id do pedido no teu sistema).

Erros (RFC 9457)

Todos os erros são application/problem+json: um type estável para programar contra e um detail legível para humanos.

{
  "type": "https://errors.doptizer.com/render/template_not_published",
  "title": "Template rule violated",
  "status": 409,
  "detail": "A versão indicada não está publicada.",
  "correlationId": "01J8Z…"
}

Quota excedida responde 402 com metric, used, limit e resets_at — trata-o como sinal de negócio, não como bug.

Quickstart: três chamadas até ao PDF

  1. 1 · Autentica

    curl -X POST https://api.doptizer.pavulla.com/v1/auth/login \
      -H "Content-Type: application/json" \
      -d '{"email": "tu@empresa.pt", "password": "•••"}'
  2. 2 · Encontra a versão publicada do template

    curl "https://api.doptizer.pavulla.com/v1/templates?state=published" \
      -H "Authorization: Bearer $TOKEN"
    # guarda o id da versão publicada em /v1/templates/{id}/versions
  3. 3 · Gera

    curl -X POST https://api.doptizer.pavulla.com/v1/render \
      -H "Authorization: Bearer $TOKEN" \
      -H "Idempotency-Key: o-teu-id-unico" \
      -H "Content-Type: application/json" \
      -d '{"templateVersionId": "…", "format": "pdf", "data": { … }}'

Referência por área