Skip to content

Modo Consumidor

O modo consumidor oferece uma API simplificada e somente-leitura para aplicações que apenas consomem relatórios. Ideal para:

  • Portais de autoatendimento
  • Aplicações embedadas (iframe)
  • Integrações que só precisam listar e baixar relatórios

Permissões mínimas

O modo consumidor funciona com o preset de permissão consumer:

PermissãoValor
can_list
can_generate
Todas as demais

Endpoints

Catálogo — GET /api/v1/consumer/reports

Permissão: canList

Query params: ?page=1&limit=20 (paginação opcional)

Retorna uma lista leve (sem a definição completa) dos relatórios disponíveis:

json
[
  {
    "id": "uuid",
    "name": "Sales Report",
    "description": "Monthly sales overview",
    "updatedAt": "2026-04-06T12:00:00.000Z",
    "formats": ["pdf", "html", "csv", "excel"]
  }
]

Metadados — GET /api/v1/consumer/reports/:id

Permissão: canList

Retorna metadados do relatório com informações sobre parâmetros:

json
{
  "id": "uuid",
  "name": "Sales Report",
  "description": "Monthly sales overview",
  "updatedAt": "2026-04-06T12:00:00.000Z",
  "formats": ["pdf", "html", "csv", "excel"],
  "hasParams": true,
  "paramCount": 3
}
StatusErroQuando
404not_foundID não encontrado

Esquema de parâmetros — GET /api/v1/consumer/reports/:id/params

Permissão: canList

Retorna o schema dos parâmetros aceitos pelo relatório:

json
{
  "parameters": [
    {
      "id": "date_start",
      "label": "Data Início",
      "type": "date",
      "required": true,
      "defaultValue": "2026-01-01",
      "options": ["2026-01-01", "2026-02-01"]
    },
    {
      "id": "region",
      "label": "Região",
      "type": "string",
      "required": false,
      "defaultValue": null,
      "options": ["Norte", "Sul", "Leste", "Oeste"]
    }
  ]
}
StatusErroQuando
404not_foundID não encontrado
422invalid_reportDefinição inválida

Gerar e baixar — GET /api/v1/consumer/reports/:id/output

Permissão: canGenerate

Query params: Todos os query params (exceto format) são passados como parâmetros do relatório.

ParamDescrição
formatFormato de saída: pdf, html, csv, excel (default: pdf)
*Demais params são passados ao relatório

Exemplo: /consumer/reports/abc123/output?format=pdf&date_start=2026-01-01&region=Sul

Resposta 200: Binário do arquivo com Content-Type e Content-Disposition apropriados.

StatusErroQuando
400invalid_formatFormato não suportado
404not_foundID não encontrado
422invalid_reportDefinição inválida
422generation_failedErro na renderização

Exemplo: portal de autoatendimento

javascript
// Token consumer — sem acesso a settings/edit/delete
const API = 'https://servidor.com/api/v1/consumer';
const headers = { 'Authorization': 'Bearer <consumer-token>' };

// 1. Listar relatórios disponíveis
const reports = await fetch(`${API}/reports`, { headers }).then(r => r.json());

// 2. Obter parâmetros de um relatório
const params = await fetch(`${API}/reports/${id}/params`, { headers })
  .then(r => r.json());

// 3. Gerar e baixar
const qs = new URLSearchParams({ format: 'pdf', date_start: '2026-01-01' });
const output = await fetch(`${API}/reports/${id}/output?${qs}`, { headers });
const blob = await output.blob();

// 4. Exibir no iframe ou baixar
const url = URL.createObjectURL(blob);
iframe.src = url;

Sulfite do 🇧🇷 para o mundo © 2026 Rafael S. Pinheiro