Vendas, pedidos e produtos
Quatro relatórios de entrada: resumo de vendas, vendas, pedidos por status e produtos mais vendidos, com janela padrão de 30 dias.
Estas quatro rotas são o jeito mais curto de obter números de vendas: não exigem parâmetros, e sem datas usam os últimos 30 dias. GET /admin/reports e GET /admin/reports/sales devolvem o relatório de vendas (o primeiro dentro de um envelope report/period/data). GET /admin/reports/orders conta pedidos por status e GET /admin/reports/products lista os mais vendidos. Valores em dinheiro vêm em centavos. Para filtros por seller ou categoria e comparação entre períodos, use os relatórios avançados.
Resumo de relatórios
/api/v1/admin/reportsAdminRelatório de vendas dentro de um envelope
Parâmetros de consulta
fromstringYYYY-MM-DD. Sem from e to, vale os últimos 30 dias.tostringYYYY-MM-DD. Os dois precisam vir juntos, senão a janela padrão é usada.compare_fromstringYYYY-MM-DD.compare_tostringYYYY-MM-DD. Precisa vir junto com compare_from.vendor_iduuidcategory_iduuidgroup_bystringpadrão: daydayweekmonthExemplo de requisição
Resposta
Campos da resposta
reportstringsales.periodobjectfrom e to efetivamente usados.dataobjectErros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário administrador. | {"error":"admin access required"} |
| 403 | O usuário é administrador, mas não tem o privilégio exigido. | {"error":"insufficient privileges","privilege_required_any":["view_reports"]} |
| 500 | Falha ao consultar o banco. | {"error":"failed to generate report","detail":"..."} |
Vendas
/api/v1/admin/reports/salesAdminRelatório de vendas
Parâmetros de consulta
fromstringYYYY-MM-DD. Padrão: 30 dias atrás.tostringYYYY-MM-DD. Padrão: hoje (UTC).compare_fromstringcompare_tostringvendor_iduuidcategory_iduuidgroup_bystringpadrão: daydayweekmonthExemplo de requisição
Resposta
Campos da resposta
total_revenueintegertotal_ordersintegeravg_order_valueintegercompleted_ordersintegercancelled_ordersintegertime_seriesarraygroup_by): date, revenue (centavos), orders, aov (ticket médio, centavos). Só aparecem os dias com pedido.compare_revenue / compare_ordersinteger0 quando nenhum período de comparação foi pedido.compare_seriesarraytime_series.revenue_change / order_changeinteger-9976 = menos 99,76%; 1250 = mais 12,50%.top_productsarrayproduct_id, product_name, quantity, revenue.generated_atstringErros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário administrador. | {"error":"admin access required"} |
| 403 | O usuário é administrador, mas não tem o privilégio exigido. | {"error":"insufficient privileges","privilege_required_any":["view_reports"]} |
| 500 | Falha ao consultar o banco. | {"error":"failed to generate sales report","detail":"..."} |
Pedidos por status
/api/v1/admin/reports/ordersAdminQuantidade de pedidos por status
Parâmetros de consulta
fromstringYYYY-MM-DD. Só vale junto com to.tostringYYYY-MM-DD. Se vier só um dos dois, a validação de datas é aplicada e a ausência do outro dá erro 400.Exemplo de requisição
Resposta
Campos da resposta
orders_by_statusarrayorders_by_status[].statusstringorders_by_status[].codestringpending, delivered...). Vazio para letra sem cadastro.orders_by_status[].namestringorders_by_status[].typestringinitial, processing, general, shipped, complete, cancelled, refunded ou final.orders_by_status[].countintegerErros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário administrador. | {"error":"admin access required"} |
| 403 | O usuário é administrador, mas não tem o privilégio exigido. | {"error":"insufficient privileges","privilege_required_any":["view_reports"]} |
| 400 | Datas inválidas (mesmas regras de Relatórios por dimensão). | {"error":"from and to query parameters are required (format: 2006-01-02)"} |
| 500 | Falha ao consultar o banco. | {"error":"failed to get orders by status","detail":"..."} |
Produtos mais vendidos
/api/v1/admin/reports/productsAdminProdutos mais vendidos do período
Parâmetros de consulta
fromstringYYYY-MM-DD. Padrão: 30 dias atrás. Não é validado: um texto inválido produz resultado vazio ou erro 500.tostringYYYY-MM-DD. Padrão: hoje (UTC).limitintegerpadrão: 10Exemplo de requisição
Resposta
Campos da resposta
periodobjectfrom e to usados.productsarrayproduct_id (UUID), product_name, quantity (unidades) e revenue (centavos).Erros
| Status | Quando | Exemplo de corpo |
|---|---|---|
| 401 | Token ausente, inválido ou expirado. | {"error":"missing authorization header"} |
| 403 | O token não é de um usuário administrador. | {"error":"admin access required"} |
| 403 | O usuário é administrador, mas não tem o privilégio exigido. | {"error":"insufficient privileges","privilege_required_any":["view_reports"]} |
| 500 | Falha ao consultar o banco. | {"error":"failed to get top products","detail":"..."} |