Guia de integração — Gráficos dinâmicos
Áreas da API: serviço de relatórios (/gateway/dynamic-chart-reports) — persistência, configuração e exportação; API principal (/gateway/dynamic-chart-report) — catálogo paginado e menu.
Autenticação: Bearer Token (JWT) ou Chave de API via header X-API-KEY.
Para seguir este guia com sucesso utilizando autenticação JWT, utilize o seguinte endpoint:
POST /gateway/auth/combined-login
Introdução
Este guia descreve como integrar com os gráficos dinâmicos: configurações guardadas que associam um relatório dinâmico (fonte de dados tabular e parâmetros @p_…) a definições visuais (tipo de série, diagrama, paleta, eixos e legenda).
Não existe SQL própria do gráfico. A fonte de dados é sempre o relatório dinâmico referenciado por selectedDynamicReportGuid. Na execução, os dados obtêm-se com GET /gateway/dynamic-reports/{guid}/data?jsonParameters=…, tal como no Guia de relatórios dinâmicos.
Este documento está organizado para leitura por etapas e para consulta por ferramentas: pré-requisitos e ligação campos ↔ eixos, permissões, fluxos (criação, atualização, obtenção de dados), parâmetros do relatório subjacente, jsonParameters, enumerados visuais, referência de endpoints e DTOs, exemplos e erros. Ver Mapa do documento.
Quando utilizar
- Criar ou alterar um gráfico ligado a um relatório dinâmico existente.
- Listar gráficos (lista completa no serviço de relatórios, catálogo paginado ou entradas de menu na API principal).
- Obter configuração (
…/config) para montar filtros e saber qual relatório e campos usar nos eixos. - Exportar o JSON interno do gráfico (cópia de segurança ou diagnóstico).
Mapa do documento
- Pré-requisitos — relatório dinâmico válido e colunas alinhadas com o gráfico; secção Pré-requisitos.
- Campos e eixos —
argument,value,serieMember; secção Ligação aos dados do relatório. - Permissões —
permissionType, grupos, utilizador; secção Permissões. - Fluxos de implementação — criação, atualização, execução de dados; secção Fluxos de implementação.
- Parâmetros do relatório subjacente — reciclagem do modelo do relatório dinâmico; secção Parâmetros do relatório subjacente.
jsonParameters— formato na cadeia de consulta; secção Parâmetro de queryjsonParameters.- Tipos visuais — séries, diagramas e paletas numéricas; secção Tipos visuais.
- Prefixos no gateway — Dois prefixos.
- Referência — Endpoints disponíveis, estrutura dos DTOs, exemplos JSON, tratamento de erros, recursos relacionados.
Pré-requisitos: relatório dinâmico
Antes de criar um gráfico dinâmico:
- Ter um relatório dinâmico criado e guardado (GUID conhecido). O fluxo inclui validação da SQL, configuração de
fieldseparameters— ver Guia de relatórios dinâmicos. - Confirmar que as colunas devolvidas pela SQL (propriedade
nameem cada campo do relatório) cobrem os nomes que vai usar emargument,valuee, se aplicável,serieMembernas definições do gráfico. - Garantir permissões para ler dados desse relatório no contexto autenticado (
GET …/dynamic-reports/{guid}/configeGET …/dynamic-reports/{guid}/data).
Se selectedDynamicReportGuid apontar para um relatório inexistente ou inacessível, as operações de gravar ou de GET …/config podem falhar no servidor ao resolver o relatório subjacente.
Ligação aos dados do relatório
Propriedade em settingsEntity / DynamicChartConfig | Função | Correspondência no relatório |
|---|---|---|
argument | Eixo de categorias (ex.: eixo X) | name de uma coluna no resultado do relatório (ex.: alias na SQL). |
value | Magnitude representada (ex.: eixo Y) | name de uma coluna tipicamente numérica. |
serieMember | Agrupamento em várias séries (opcional) | name de uma coluna que distinga séries (texto ou categorização). |
Os nomes devem coincidir exatamente com os identificadores das colunas configuradas no relatório dinâmico (não confundir com caption, que é apenas para apresentação).
Se alterar a SQL ou os fields do relatório dinâmico, volte a validar que argument, value e serieMember continuam a existir no resultado; caso contrário o cliente de gráficos pode receber dados incompletos ou vazios sem erro explícito na camada do gráfico.
Permissões
O modelo de permissionType, permissionGroupsId e userId segue a mesma linha dos relatórios dinâmicos (partilha de conceitos com o GC):
Valor permissionType | Significado habitual | Notas |
|---|---|---|
0 | Todos os utilizadores | Sem restrição por utilizador ou grupo no modelo «gráfico». |
1 | Utilizador atual | Associação ao utilizador autenticado; userId pode ser gerido pelo servidor. |
2 | Grupos | Preencher permissionGroupsId com os IDs dos grupos autorizados. |
No PUT, o serviço pode preservar o userId já guardado no servidor mesmo que o cliente envie outro valor — consulte o comportamento na sua versão e teste com GET …/dynamic-chart-reports/{guid} após atualizar.
Fluxos de implementação
O comportamento recomendado segue dois percursos: criação de um gráfico novo e atualização de um já guardado. Em ambos, o relatório dinâmico referenciado deve permanecer válido.
Execução no tempo de execução (obter dados para o gráfico)
Para desenhar o gráfico no cliente, o fluxo de dados é uma camada em cima do relatório dinâmico:
| Passo | Relatório dinâmico (tabular) | Gráfico dinâmico (visualização) |
|---|---|---|
| Identificar recurso | GUID do relatório | GUID do gráfico |
| Configuração para o ecrã (filtros + metadados) | GET /gateway/dynamic-reports/{guid}/config | GET /gateway/dynamic-chart-reports/{chartGuid}/config (inclui dynamicReportGuid e parameters do relatório subjacente) |
| Obter linhas | GET /gateway/dynamic-reports/{guid}/data?jsonParameters=… | Mesmo pedido, usando o dynamicReportGuid devolvido em config do gráfico e os mesmos jsonParameters |
| Mapeamento | Colunas → tabela | Cada linha → argument, value, serieMember conforme config do gráfico |
Ou seja: o gráfico não substitui o endpoint de dados do relatório; apenas indica qual relatório usar e como mapear colunas para a biblioteca de gráficos.
Criação de um gráfico novo
Diagrama do fluxo de primeira gravação:
- Escolher
selectedDynamicReportGuide definirsettingsEntity(argument,value,serieMember, tipo de série, diagrama, paleta, título, legendas). - Opcional: validar colunas com
GET /gateway/dynamic-reports/{selectedDynamicReportGuid}/configno relatório antes de gravar o gráfico. POST /gateway/dynamic-chart-reportscomguidvazio (ou omitido, conforme cliente).- Em HTTP 200, o corpo contém o GUID do gráfico criado (texto).
- Opcional:
GET …/{guid}/configpara obterparametersjá preparados para o formulário de execução.
Atualização de um gráfico existente
Para alterar um gráfico já guardado, é preciso o guid do gráfico e a configuração atual ou um delta coerente:
GET /gateway/dynamic-chart-reports/{guid}— obtémDynamicChartDataDTOtal como está persistido (recomendado antes de um PUT para não sobrescrever campos por omissão).- Ajustar nome, descrição,
selectedDynamicReportGuid, permissões ousettingsEntity. PUT /gateway/dynamic-chart-reportscom oguidcorreto no corpo.- Resposta esperada: 204 No Content.
Se só tiver uma lista proveniente do catálogo da API principal:
GET /gateway/dynamic-chart-report devolve um catálogo paginado (integração tipo lista de escolha no gateway principal). GET /gateway/dynamic-chart-reports (serviço de relatórios) devolve todos os gráficos dinâmicos num único array — útil para ferramentas administrativas; pode ser mais pesado em instalações grandes.
Ao atualizar, o backend pode manter o userId já guardado para o gráfico; não assuma que o valor enviado no corpo substitui sempre o persistido sem validar com um GET subsequente.
Parâmetros do relatório subjacente
GET /gateway/dynamic-chart-reports/{guid}/config devolve parameters como coleção de ReportParameterDetail: mesmo tipo de informação que o cliente usa para montar filtros antes de executar o relatório dinâmico.
- As chaves em
jsonParametersao chamarGET /gateway/dynamic-reports/{dynamicReportGuid}/datadevem alinhar com osparamHolder/ marcadores@p_…desse relatório (ver Parâmetros: lógica de configuração e visualização no guia de relatórios dinâmicos). - O tipo de controlo no ecrã (
ViewType, listas, Lookup, etc.) segue as mesmas regras documentadas para relatórios dinâmicos; o gráfico apenas encaminha o utilizador para preencher os filtros do relatório fonte.
Não existe operação dedicada «verify» para gráficos: alterações à SQL ou aos parâmetros do relatório tratam-se no fluxo do relatório dinâmico (verify-sqlquery, etc.).
Parâmetro de query jsonParameters
Para obter as linhas usadas no gráfico, utilize GET /gateway/dynamic-reports/{dynamicReportGuid}/data com o parâmetro de consulta opcional jsonParameters: objeto JSON serializado em texto e codificado para URL, tal como em Relatórios Padrão e no guia de relatórios dinâmicos.
- Chaves: iguais aos nomes dos parâmetros do relatório (
@p_…). - Valores: formatados conforme o tipo (data, número, texto, etc.).
Envie jsonParameters como texto JSON codificado na cadeia de consulta. As bibliotecas HTTP habituais tratam da serialização e da codificação para URL automaticamente.
Tipos visuais (série, diagrama, paleta)
Na API, selectedSeries, selectedDiagram e selectedPalette são inteiros. A ordem dos valores corresponde aos enumerados do servidor (também refletidos no schema OpenAPI do serviço de relatórios).
DiagramType (valores 0…5)
| Valor | Membro |
|---|---|
0 | SimpleDiagram2D |
1 | XYDiagram2D |
2 | RadarDiagram2D |
3 | PolarDiagram2D |
4 | SimpleDiagram3D |
5 | XYDiagram3D |
PaletteName (valores 0…8)
| Valor | Membro |
|---|---|
0 | Chameleon |
1 | DXCharts |
2 | InAFog |
3 | NatureColors |
4 | NorthernLights |
5 | Office |
6 | PastelKit |
7 | TerracottaPie |
8 | TheTrees |
SeriesType (valores 0…29)
| Valor | Membro | Valor | Membro |
|---|---|---|---|
0 | Pie | 15 | OverlappedRangeBar |
1 | Donut | 16 | Line |
2 | Area | 17 | StackedLine |
3 | StackedArea | 18 | FullStackedLine |
4 | FullStackedArea | 19 | StepLine |
5 | Bubble | 20 | ScatterLine |
6 | Point | 21 | Stock |
7 | StepArea | 22 | CandleStick |
8 | RangeArea | 23 | ManhattanBar |
9 | SideBySideBar | 24 | RadarArea |
10 | SideBySideStackedBar | 25 | RadarLine |
11 | SideBySideFullStackedBar | 26 | RadarPoint |
12 | StackedBar | 27 | PolarArea |
13 | FullStackedBar | 28 | PolarLine |
14 | SideBySideRangeBar | 29 | PolarPoint |
Alguns tipos de série esperam tipos de diagrama compatíveis no cliente de visualização (metadados Description no código servidor associam séries a famílias de diagrama). Em caso de dúvida, experimente no produto ou consulte o schema Swagger/OpenAPI gerado.
Dois prefixos no gateway
| Prefixo | Origem típica no gateway | Finalidade |
|---|---|---|
/gateway/dynamic-chart-reports | Serviço de relatórios | CRUD, /{guid}/config, /{guid}/export. |
/gateway/dynamic-chart-report | API principal | GET catálogo paginado; GET …/menu para entradas de menu. |
Não confunda dynamic-chart-report (singular, catálogo/menu) com dynamic-chart-reports (plural, recurso completo no microserviço de relatórios).
Endpoints disponíveis
Catálogo paginado (API principal)
URL: /gateway/dynamic-chart-report
Método: GET
Query (opcional): page, pageSize
Devolve listagem paginada de gráficos dinâmicos no modelo da API principal (EntityListingDTO). Útil para escolher um guid antes de GET /gateway/dynamic-chart-reports/{guid}.
Ver mais →
Entradas visíveis no menu (API principal)
URL: /gateway/dynamic-chart-report/menu
Método: GET
Lista de gráficos marcados para aparecer no menu (integração com ribbon/menu do produto).
Ver mais →
Operações sob /gateway/dynamic-chart-reports
Todos os pedidos seguintes utilizam esse prefixo e exigem autenticação.
Listar todos os gráficos (serviço de relatórios)
URL: /gateway/dynamic-chart-reports
Método: GET
Resposta (200): array de DynamicChartDataDTO (lista completa, sem paginação neste recurso).
Ver mais →
Criar gráfico dinâmico
URL: /gateway/dynamic-chart-reports
Método: POST
Corpo: DynamicChartDataDTO
Resposta (200): corpo com o GUID do gráfico criado (texto).
Ver mais →
Atualizar gráfico dinâmico
URL: /gateway/dynamic-chart-reports
Método: PUT
Corpo: DynamicChartDataDTO (incluir guid)
Resposta: 204 No Content em caso de sucesso.
Ver mais →
Obter gráfico guardado
URL: /gateway/dynamic-chart-reports/{guid}
Método: GET
Resposta (200): DynamicChartDataDTO completo.
Ver mais →
Eliminar gráfico dinâmico
URL: /gateway/dynamic-chart-reports/{guid}
Método: DELETE
Resposta: 204 No Content em caso de sucesso.
Ver mais →
Obter configuração para apresentação
URL: /gateway/dynamic-chart-reports/{guid}/config
Método: GET
Resposta (200): DynamicChartConfig — definições visuais, dynamicReportGuid e parameters do relatório subjacente.
Ver mais →
Exportar dados internos do gráfico
URL: /gateway/dynamic-chart-reports/{guid}/export
Método: GET
Resposta (200): cadeia JSON indentada com o estado interno persistido do gráfico (útil para cópia de segurança ou diagnóstico). Não substitui o fluxo GET …/dynamic-reports/…/data para alimentar o gráfico em tempo de execução.
Ver mais →
Estrutura dos DTOs principais
A composição segue o modelo metadados do gráfico + definições visuais + referência ao relatório. Os valores numéricos dos tipos visuais estão em Tipos visuais.
DynamicChartDataDTO
Corpo em POST / PUT e resposta em GET por GUID.
| Propriedade | Tipo | Obrigatório (criação típica) | Descrição |
|---|---|---|---|
guid | string | Atualização | Vazio ou omitido na criação; obrigatório no PUT e nas rotas com {guid} no path. |
name | string | Sim | Nome curto (máx. 25 caracteres). |
description | string | Sim | Descrição (máx. 250 caracteres). |
addToRibbon | boolean | Não | Expor no ribbon/menu do produto quando aplicável. |
selectedDynamicReportGuid | string | Sim | GUID do relatório dinâmico fonte de dados. |
permissionType | int | Não | Ver Permissões. |
userId | int? | Não | Contexto de permissão; ver nota sobre PUT. |
permissionGroupsId | int[] | Condicional | Obrigatório quando permissionType indica grupos. |
settingsEntity | DynamicChartSettingsDTO | Sim | Ligação de campos e opções visuais. |
DynamicChartSettingsDTO
| Propriedade | Tipo | Descrição |
|---|---|---|
chartTitle | string | Título do gráfico. |
argument | string | Campo dos dados (eixo de categorias). |
value | string | Campo dos dados (valores). |
serieMember | string | Campo para múltiplas séries (opcional). |
selectedSeries | int | Índice SeriesType. |
selectedDiagram | int | Índice DiagramType. |
selectedPalette | int | Índice PaletteName. |
animate | boolean | Animação. |
showLegend | boolean | Legenda principal. |
showSeriesLegend | boolean | Legenda por série. |
DynamicChartConfig
Resposta de GET …/{guid}/config.
| Propriedade | Descrição |
|---|---|
| Definições espelhadas | chartTitle, argument, value, serieMember, séries, diagrama, paleta, animação e legendas (espelho do persistido). |
dynamicReportGuid | GUID do relatório para GET …/dynamic-reports/{guid}/data. |
parameters | Coleção ReportParameterDetail para construir o formulário de execução. |
Exemplos JSON
Corpo de criação (POST /gateway/dynamic-chart-reports)
{
"guid": "",
"name": "VendasMensais",
"description": "Barras por mês e categoria",
"addToRibbon": true,
"selectedDynamicReportGuid": "fbdc2005-e157-4deb-9d49-a1a0557e4eef",
"permissionType": 0,
"userId": null,
"permissionGroupsId": [],
"settingsEntity": {
"chartTitle": "Vendas por mês",
"argument": "Mes",
"value": "TotalVendas",
"serieMember": "Categoria",
"selectedSeries": 9,
"selectedDiagram": 1,
"selectedPalette": 4,
"animate": true,
"showLegend": true,
"showSeriesLegend": true
}
}
Mes, TotalVendas e Categoria devem corresponder a name de colunas do relatório dinâmico referenciado. Os inteiros dos tipos visuais devem corresponder às tabelas em Tipos visuais.
Corpo de atualização (PUT /gateway/dynamic-chart-reports)
Utilize o mesmo formato de DynamicChartDataDTO, com guid preenchido com o identificador devolvido na criação. É boa prática basear o corpo num GET prévio e alterar apenas os campos pretendidos.
Tratamento de erros
As operações devolvem Problem Details ou erros alinhados com o padrão da API quando falham (autenticação, recurso não encontrado, falha de persistência, relatório subjacente inválido ao construir config, etc.).
O cliente de integração deve:
- Verificar o código de estado HTTP (
4xx/5xx). - Ler o corpo (título, detalhe, tipo) e corrigir pedido, permissões ou dados.
Este guia não fixa códigos numéricos internos de mensagens localizadas: siga o texto devolvido e a página OpenAPI da operação.
Conclusão
Integrar gráficos dinâmicos resume-se a: (1) garantir um relatório dinâmico adequado; (2) gravar o gráfico em POST /gateway/dynamic-chart-reports (ou atualizar com PUT); (3) usar GET …/{guid}/config para saber dynamicReportGuid e parameters; (4) obter linhas com GET /gateway/dynamic-reports/{guid}/data e jsonParameters, e mapear colunas para argument / value / serieMember. Para listagens no gateway principal, use GET /gateway/dynamic-chart-report (paginação) ou …/menu.
Recomenda-se testar em ambiente de qualidade alterações ao relatório subjacente, permissões e combinações série/diagrama antes de produção.
Recursos relacionados
- Guia de integração — Relatórios dinâmicos
- Guia de relatórios standard
- Primeiros passos / autenticação
- Listar todos os gráficos (serviço de relatórios)
- Criar gráfico dinâmico
- Atualizar gráfico dinâmico
- Obter gráfico por GUID
- Eliminar gráfico
- Obter configuração do gráfico
- Exportar dados do gráfico
- Obter dados do relatório dinâmico
- Obter configuração do relatório dinâmico
Última atualização: 12 de maio de 2026