SEAC API v2
Documentação da API SEAC versão 2
Esta documentação fornece detalhes sobre como consultar a API, incluindo regras de paginação, filtros e estrutura de resposta (JSON).
Endpoint Base
O endpoint varia conforme o ambiente (Desenvolvimento ou Produção).
Exemplo Local: http://localhost:8091
Autenticação
A maioria dos endpoints requer autenticação. Certifique-se de enviar os tokens/headers necessários conforme implementado no Middleware de Autenticação.
Consultando Entidades (Getters)
A rota principal para consulta de dados é a entity_getter. Ela permite acessar Views do banco de dados de forma segura.
Rotas Disponíveis
-
Listar/Filtrar Registros:
GET /entity_getter/{entidade} -
Buscar Registro por ID:
GET /entity_getter/{entidade}/{id}
Parâmetros de Consulta (Query Parameters)
Você pode passar parâmetros na URL para filtrar, ordenar e paginar os resultados.
1. Filtros (Equality)
Qualquer parâmetro que corresponda a uma coluna válida da tabela/view será tratado como um filtro de igualdade.
Exemplo:
Buscar clientes ativos (status=A) na cidade de Sao Paulo:
GET /entity_getter/clientes?status=A&cidade=Sao Paulo
2. Paginação
A API retorna os resultados paginados por padrão (50 registros por página).
limit: Quantidade de registros por página (Padrão: 50).page: Número da página atual (Padrão: 1).
Exemplo:
Página 2, com 20 registros por página:
GET /entity_getter/clientes?page=2&limit=20
3. Ordenação
É possível ordenar os resultados por qualquer coluna.
sort: Nome da coluna para ordenação.dir: Direção da ordenação (ASCpara ascendente ouDESCpara descendente). Padrão:ASC.
Exemplo:
Ordenar por data de criação decrescente:
GET /entity_getter/clientes?sort=created_at&dir=DESC
Estrutura da Resposta
A resposta é sempre um objeto JSON contendo o status, metadados de paginação e os dados solicitados.
Exemplo de Resposta (Lista)
{
"status": "success",
"meta": {
"page": 1,
"limit": 50,
"total": 120,
"pages": 3
},
"data": [
{ "id": 1, "nome": "Cliente A", "status": "A" },
{ "id": 2, "nome": "Cliente B", "status": "A" }
]
}
Exemplo de Resposta (Busca por ID ou Resultado Único)
Se a consulta for feita especificamente por ID (ex: /entity_getter/clientes/10), o campo data pode retornar o objeto diretamente ao invés de um array, dependendo da implementação específica do cliente.
{
"status": "success",
"meta": { ... },
"data": { "id": 10, "nome": "Cliente X" }
}
Outros Endpoints
Saldo de SMS
Retorna o saldo de SMS disponível.
GET /smsCredits
Stored Procedures (Dinâmico)
Executa qualquer Stored Procedure disponível no banco de dados. A API descobre automaticamente os parâmetros necessários consultando o banco de dados.
GET /report/{procedure_name}POST /report/{procedure_name}
Parâmetros:
Passe os parâmetros com o MESMO nome definido na Procedure do banco de dados (Ex: p_dataI).
Tabelas Temporárias:
Se a procedure salva os dados em uma tabela temporária (ao invés de retornar direto), informe o nome da tabela no parâmetro reservado _temp_table.
Exemplo:
GET /report/sp_gerar_kpi_venda?p_tipo_relatorio=ANALITICO&p_dataI=2025-01-01&_temp_table=relatorio_final_temp
Isso executará:
CALL sp_gerar_kpi_venda(params...)SELECT * FROM relatorio_final_temp
Importação e Sincronização
POST /entity_import: Importação genérica de entidades.POST /entity_post: Criação de registros.GET /verify_image: Sincronização de imagens.GET /verify_temp_folder: Limpeza de arquivos temporários.
Tratamento de Erros
Em caso de erro, a API retornará um JSON com status de erro e mensagem descritiva.
{
"status": "error",
"message": "Entidade não encontrada."
}
Detalhamento: sp_gerar_kpi_venda
Procedure responsável pela geração de KPIs de vendas, permitindo visão Sintética (agrupada) ou Analítica (detalhada).
Parâmetros Obrigatórios
| Parâmetro | Tipo | Descrição |
|---|---|---|
p_tipo_relatorio |
VARCHAR(10) | Tipo de saída: 'SINTETICO' ou 'ANALITICO'. |
p_dataI |
DATE | Data inicial do período (AAAA-MM-DD). |
p_dataF |
DATE | Data final do período (AAAA-MM-DD). |
_temp_table |
STRING | Obrigatório pela API. Deve ser sempre relatorio_final_temp. |
Parâmetros de Agrupamento
O relatório permite até 10 níveis de agrupamento simultâneos (1 Principal + 9 Secundários). Os valores possíveis para as chaves de agrupamento são:
vendedorclienteprofissionalgruposubgrupocidadelojafornecedorcontrole
| Parâmetro | Descrição |
|---|---|
p_group_by_key |
Agrupamento Principal. Define a linha mestre do relatório. |
p_group_by_secundario1 ... 9 |
Agrupamentos subsequentes (quebras/subníveis). |
Parâmetros de Filtro (Opcionais)
Envie 0 ou null para ignorar o filtro (considerar todos).
| Parâmetro | Tipo | Descrição |
|---|---|---|
p_loja |
INT | Filtrar por ID da Loja. |
p_vendedor |
INT | Filtrar por ID do Vendedor. |
p_profissional |
INT | Filtrar por ID do Profissional. |
p_grupo |
INT | Filtrar por ID do Grupo de Produtos. |
p_subgrupo |
INT | Filtrar por ID do Subgrupo. |
p_cliente |
INT | Filtrar por ID do Cliente. |
p_controle |
INT | Filtrar por ID de Controle. |
p_comissao |
INT | 1 para calcular comissão/premiação, 0 caso contrário. |
p_filtro_custom_venda |
TEXT | SQL raw para filtro extra na tabela de vendas (use com cuidado). |
p_filtro_custom_devolucao |
TEXT | SQL raw para filtro extra na tabela de devoluções. |
Saídas
1. Sintético (p_tipo_relatorio='SINTETICO')
Retorna dados agregados pelas chaves de agrupamento escolhidas. Colunas:
- Nomes das colunas de agrupamento (Ex:
Vendedor,Cidade). - Métricas Financeiras:
Venda Líquida(R$),Venda Bruta(R$),Devolução(R$),Comissão(R$),Frete(R$). - Indicadores:
Devolução(%),Ticket Médio,Itens por Nota,CMV (%),Markup (%). - Contagens:
Operações,Total Clientes,Novos Clientes.
2. Analítico (p_tipo_relatorio='ANALITICO')
Retorna a lista plana de operações, sem somatórios (exceto os calculados por item). Colunas:
Tipo(Venda, Devolução),Operação(ID),Data.- Colunas de identificação (IDs de Loja, Vendedor, Cliente, etc).
- Valores monetários individuais (
Valor Líquido,Bruto,Custo).
Exemplos de Uso (Casos de Uso)
Abaixo estão exemplos práticos de como construir requisições para diferentes necessidades de análise.
1. Performance Geral: Loja e Vendedor
Objetivo: Ver o total vendido por cada loja e, dentro de cada loja, o desempenho de cada vendedor. Configuração:
- Tipo:
SINTETICO - Agrupamento Principal:
loja - Agrupamento Secundário 1:
vendedor
GET /report/sp_gerar_kpi_venda?_temp_table=relatorio_final_temp&p_tipo_relatorio=SINTETICO&p_group_by_key=loja&p_group_by_secundario1=vendedor&p_dataI=2024-01-01&p_dataF=2024-01-31
2. Mix de Produtos por Vendedor (3 Níveis)
Objetivo: Analisar o que um vendedor específico (ID 99) está vendendo, quebrando por Grupo e Subgrupo de produtos. Configuração:
- Tipo:
SINTETICO - Filtro Vendedor:
p_vendedor=99 - Agrupamento Principal:
vendedor(ougrupo, já que o vendedor é fixo pelo filtro) - Agrupamento Secundário 1:
grupo - Agrupamento Secundário 2:
subgrupo
GET /report/sp_gerar_kpi_venda?_temp_table=relatorio_final_temp&p_tipo_relatorio=SINTETICO&p_vendedor=99&p_group_by_key=vendedor&p_group_by_secundario1=grupo&p_group_by_secundario2=subgrupo&p_dataI=2024-01-01&p_dataF=2024-01-31
3. Relatório de Comissão de Profissionais
Objetivo: Gerar relatório focado em comissão e premiação para profissionais, considerando apenas vendas liquidadas/faturadas. Configuração:
- Tipo:
SINTETICO - Flag Comissão:
p_comissao=1 - Agrupamento Principal:
profissional
GET /report/sp_gerar_kpi_venda?_temp_table=relatorio_final_temp&p_tipo_relatorio=SINTETICO&p_comissao=1&p_group_by_key=profissional&p_dataI=2024-01-01&p_dataF=2024-01-31
4. Extrato Analítico de Devoluções
Objetivo: Listar detalhadamente todas as operações que tiveram devolução de um cliente específico (ID 500). Configuração:
- Tipo:
ANALITICO - Filtro Cliente:
p_cliente=500 - (Opcional) Filtro Custom:
p_filtro_custom_venda="AND 1=0"(Para trazer apenas devoluções, se desejado forçar exclusão de vendas, embora o relatório traga ambos por padrão se houver movimento). Nota: O relatório padrão já separa por tipo de operação.
GET /report/sp_gerar_kpi_venda?_temp_table=relatorio_final_temp&p_tipo_relatorio=ANALITICO&p_cliente=500&p_dataI=2024-01-01&p_dataF=2024-12-31