Skip to content

Relatórios (CRUD)

O servidor armazena definições de relatório e permite operações completas de criação, leitura, atualização e exclusão.

Listar — GET /api/v1/reports

Permissão: canList

Query params

ParamTipoDescrição
qstringBusca full-text pelo nome/descrição
pageintPágina (começa em 1)
limitintItens por página (1–100, default 20)

Resposta sem paginação

json
[
  {
    "id": "uuid",
    "name": "Sales Report",
    "description": "Monthly sales overview",
    "createdAt": "2026-04-06T12:00:00.000Z",
    "updatedAt": "2026-04-06T12:00:00.000Z",
    "storageKind": "inline"
  }
]

Resposta com paginação

json
{
  "data": [ ... ],
  "pagination": {
    "page": 1,
    "limit": 20,
    "total": 42,
    "totalPages": 3
  }
}

Detalhes — GET /api/v1/reports/:id

Permissão: canList

Retorna o relatório completo incluindo definitionJson, packageBytes, etc.

StatusErroQuando
404not_foundID não encontrado

Criar — POST /api/v1/reports

Permissão: canInsert

Body:

json
{
  "name": "My Report",
  "description": "Optional description",
  "definitionJson": "{ ... }",
  "packageBytes": "base64encoded..."
}
CampoObrigatórioDescrição
nameSimNome do relatório (não vazio)
descriptionNãoDescrição
definitionJsonNãoJSON inline da definição
packageBytesNãoBase64 do pacote .sulfite

Resposta 201: Metadados do relatório criado (id, name, description, createdAt, updatedAt, storageKind).

StatusErroQuando
400validation_errorname ausente ou vazio
403forbiddenSem canInsert

Atualizar — PUT /api/v1/reports/:id

Permissão: canEdit

Body: Mesmos campos do POST (todos opcionais). Se name for fornecido, não pode ser vazio.

Resposta 200: Metadados atualizados.

StatusErroQuando
400validation_errorname vazio
404not_foundID não encontrado

Excluir — DELETE /api/v1/reports/:id

Permissão: canDelete

Resposta 204: Sem body.

StatusErroQuando
404not_foundID não encontrado

Exemplo: fluxo completo

bash
# Criar
curl -X POST http://localhost:8080/api/v1/reports \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name": "Vendas Mensal", "definitionJson": "{...}"}'

# Listar
curl http://localhost:8080/api/v1/reports \
  -H "Authorization: Bearer $TOKEN"

# Buscar
curl "http://localhost:8080/api/v1/reports?q=vendas" \
  -H "Authorization: Bearer $TOKEN"

# Atualizar
curl -X PUT http://localhost:8080/api/v1/reports/$ID \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"description": "Atualizado"}'

# Excluir
curl -X DELETE http://localhost:8080/api/v1/reports/$ID \
  -H "Authorization: Bearer $TOKEN"

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