Dashboards do seller
Como o seller monta abas e cards, executa os dados e recebe alertas, pela API do painel do seller.
Um dashboard do seller é uma coleção de abas, e cada aba é uma grade de cards. Um card responde a uma pergunta de negócio (por exemplo, "quanto vendi neste mês?") e é desenhado como número, gráfico ou tabela. O seller (lojista) monta as próprias abas, o painel guarda a definição de cada card e a plataforma executa essas definições e devolve os dados prontos para desenhar. Esta seção documenta as rotas /api/v1/vendor/dashboards.
O ponto central: o card não é código nem SQL. É um documento JSON, a spec, que diz qual entidade do catálogo consultar (pedidos, produtos, devoluções...), quais métricas somar, como agrupar e filtrar, e como desenhar. A plataforma valida a spec, compila a consulta e sempre a restringe ao seller do token: não existe parâmetro para escolher outro seller.
Como funciona
- Descubra o que dá para consultar
GET /vendor/dashboards/cataloglista as entidades, campos e métricas disponíveis para o seller, com limites e tipos de gráfico. - Monte e teste a spec
POST /vendor/dashboards/previewexecuta uma spec sem salvar. Ajuste até o resultado fazer sentido. Se preferir,POST /vendor/dashboards/ai/specgera a spec a partir de uma frase. - Salve o card na aba
POST /vendor/dashboards/{id}/cardsguarda o card. A spec é revalidada: card que não compila não entra. - Execute e desenhe
POST /vendor/dashboards/{id}/rundevolve os dados de todos os cards.POST .../cards/{cardId}/drilldownabre as linhas por trás de um ponto do gráfico. - Acompanhe sem abrir o painel
POST /vendor/dashboards/subscriptionscria um alerta de limite ou um envio periódico por e-mail.
Conceitos-chave
Aba e card
Uma aba (dashboard) tem nome, ícone, cor, um período padrão e posição. Um card pertence a uma aba, guarda a spec e o lugar na grade (grid_row, grid_col, width, height, de 1 a 3 colunas ou linhas). O layout fica fora da spec de propósito, para o mesmo card poder ser copiado ou virar modelo.
Aba de fábrica
Todo seller recebe uma aba fabrica (is_system: true) com cards prontos. Ela não pode ser renomeada nem apagada, mas pode ser restaurada ao estado original e duplicada para virar um ponto de partida seu.
Tipos de card
kind na spec | Letra no card | O que é |
|---|---|---|
query | Q | Consulta montada pelo catálogo. É o tipo comum e o único com drilldown. |
sql | S | SQL escrito à mão, para uso avançado. Exige privilégio e uma declaração de escopo (veja Cards). |
component | C | Bloco nativo do painel (atalhos, status), sem dados. |
service | V | Indicador pronto da plataforma (por exemplo RFM, coortes). |
text | T | Nota em texto livre; não consulta nada. |
Dataset
Executar um card devolve um dataset: columns (cada uma com key, label, type, role dimensão ou métrica, unit), rows (lista de listas, na ordem das colunas) e meta (row_count, truncated, limit, elapsed_ms, cached, spec_hash, warnings, error). Um erro de execução não vira status HTTP: vem em meta.error (ou em error no resultado de run) com um code e uma message_key.
Período
O período de cada card pode ser inherit (usa o da aba ou o enviado na chamada), preset (today, yesterday, last7, last30, last90, thisMonth, lastMonth, thisQuarter, thisYear, lastYear), relative (last_n_days de 1 a 1095) ou fixed (from e to). Sem nenhum período, vale last30. Os dias são os de Brasília.
Status contados na receita
Métricas como orders.revenue e orders.orders_count dependem de quais status de pedido contam como venda. Ao salvar o card, a plataforma grava em status_scope a lista de status naquele momento (mode: store_default acompanha a regra da loja; mode: custom congela a lista). O número do card é, portanto, reproduzível.
Endpoints
| Método | Caminho | Para que serve | Página |
|---|---|---|---|
| GET | /api/v1/vendor/dashboards | Lista as abas. | Abas |
| POST | /api/v1/vendor/dashboards | Cria uma aba. | Abas |
| GET | /api/v1/vendor/dashboards/{id} | Uma aba com seus cards. | Abas |
| PUT | /api/v1/vendor/dashboards/{id} | Edita a aba. | Abas |
| DELETE | /api/v1/vendor/dashboards/{id} | Apaga a aba. | Abas |
| POST | /api/v1/vendor/dashboards/{id}/duplicate | Copia a aba. | Ações sobre a aba |
| POST | /api/v1/vendor/dashboards/{id}/set-default | Define a aba padrão. | Ações sobre a aba |
| POST | /api/v1/vendor/dashboards/{id}/restore-default | Restaura a aba de fábrica. | Ações sobre a aba |
| POST | /api/v1/vendor/dashboards/{id}/cards | Cria um card. | Cards |
| PUT | /api/v1/vendor/dashboards/{id}/cards/{cardId} | Edita um card. | Cards |
| DELETE | /api/v1/vendor/dashboards/{id}/cards/{cardId} | Apaga um card. | Cards |
| POST | /api/v1/vendor/dashboards/{id}/cards/{cardId}/duplicate | Copia um card. | Cards |
| POST | /api/v1/vendor/dashboards/{id}/cards/{cardId}/approve | Aprova um card SQL. | Cards |
| PUT | /api/v1/vendor/dashboards/{id}/layout | Salva posição e tamanho dos cards. | Layout e modelos |
| GET | /api/v1/vendor/dashboards/templates | Biblioteca de modelos. | Layout e modelos |
| POST | /api/v1/vendor/dashboards/{id}/cards/from-template | Cria um card de um modelo. | Layout e modelos |
| POST | /api/v1/vendor/dashboards/{id}/cards/{cardId}/save-as-template | Salva um card como modelo. | Layout e modelos |
| POST | /api/v1/vendor/dashboards/{id}/run | Executa todos os cards da aba. | Executar dados |
| POST | /api/v1/vendor/dashboards/preview | Executa uma spec ainda não salva. | Executar dados |
| POST | /api/v1/vendor/dashboards/cards/{cardId}/drilldown | Linhas por trás de um ponto do gráfico. | Executar dados |
| GET | /api/v1/vendor/dashboards/catalog | O que dá para consultar. | Catálogo |
| POST | /api/v1/vendor/dashboards/{id}/publish | Compartilha a aba. | Compartilhamento |
| GET | /api/v1/vendor/dashboards/{id}/shares | Lista os compartilhamentos. | Compartilhamento |
| DELETE | /api/v1/vendor/dashboards/{id}/shares/{shareId} | Remove um compartilhamento. | Compartilhamento |
| GET | /api/v1/vendor/dashboards/insights | Insights gerados para o seller. | Insights |
| POST | /api/v1/vendor/dashboards/insights/tab | Cria a aba de insights. | Insights |
| POST | /api/v1/vendor/dashboards/insights/pin | Fixa um insight como card. | Insights |
| POST | /api/v1/vendor/dashboards/cards/{cardId}/narrative | Texto explicativo de um card. | Insights |
| POST | /api/v1/vendor/dashboards/ai/spec | Gera a spec de um card a partir de um pedido em texto. | Card por pedido em texto |
| GET | /api/v1/vendor/dashboards/subscriptions | Lista alertas e agendamentos. | Alertas e agendamentos |
| POST | /api/v1/vendor/dashboards/subscriptions | Cria um alerta ou agendamento. | Alertas e agendamentos |
| PUT | /api/v1/vendor/dashboards/subscriptions/{id} | Liga ou desliga. | Alertas e agendamentos |
| DELETE | /api/v1/vendor/dashboards/subscriptions/{id} | Apaga. | Alertas e agendamentos |
| POST | /api/v1/vendor/dashboards/subscriptions/{id}/run | Executa agora. | Execuções de alerta |
| GET | /api/v1/vendor/dashboards/subscriptions/{id}/runs | Histórico de execuções. | Execuções de alerta |
Erros comuns
- Tratar
GET /vendor/dashboardscomo leitura pura. Na primeira vez ele cria a aba de fábrica. Se a lista vem vazia numa conta nova, não é erro: chame de novo. - Esperar status HTTP de erro por card.
runepreviewrespondem200mesmo quando um card falha. Olhestatus(ok,error,native) de cada resultado. - Formatar dinheiro pelo valor. Em
rows, dinheiro vem como texto em centavos. Dividir por 100 só vale quandocolumns[].unitécents. - Mandar campos extras na spec. A spec é estrita: qualquer campo desconhecido é recusado com
unknown_field. - Tentar editar uma aba publicada pelo administrador. Ela é somente leitura. Duplique-a e edite a cópia.
- Salvar o layout sem a versão. Sem
version, uma edição concorrente é sobrescrita sem aviso. Envie oversionda última leitura e trate o409. - Confundir card sem dados com card quebrado. Um card que usa uma entidade que o seller não pode consultar (por exemplo, uma aba do administrador publicada) mostra um erro próprio no resultado, não derruba a aba.