Exportar em CSV
Baixa relatórios como arquivo CSV pronto para planilha, com cabeçalhos em português ou inglês.
Duas rotas de exportação: a dos relatórios por dimensão (/admin/reports/export) e a dos relatórios avançados (/admin/advanced-reports/export). Cada uma aceita tipos de relatório diferentes. Os cabeçalhos das colunas seguem o Accept-Language: com en na frente, saem em inglês; em qualquer outro caso, em português. O nome do arquivo vem em Content-Disposition.
Exportar relatórios por dimensão
/api/v1/admin/reports/exportAdminCSV dos relatórios por dimensão
Parâmetros de consulta
fromstringobrigatórioYYYY-MM-DD, inclusive. Obrigatório.tostringobrigatórioYYYY-MM-DD, inclusive (o dia inteiro entra). Obrigatório. Não pode ser antes de from e o intervalo não pode passar de 366 dias.typestringobrigatóriovendorcategorydailycustomersshippingCabeçalhos
Accept-Languagestringen ou en-US gera cabeçalhos em inglês; ausente ou outro idioma, português.Exemplo de requisição
Resposta
Campos da resposta
Content-Typeheadertext/csv; charset=utf-8.Content-Dispositionheaderattachment; filename="relatorio-daily-2026-09-01-2026-09-03.csv" (o prefixo muda para report- no idioma inglês).A resposta não é JSON: é um arquivo CSV em UTF-8 com BOM, separador ; (padrão do Excel em português) e valores monetários com vírgula decimal (449,00), em reais, não em 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"]} |
| 400 | from ou to ausente. | {"error":"from and to query parameters are required (format: 2006-01-02)"} |
| 400 | Data fora do formato YYYY-MM-DD. | {"error":"invalid from date format; expected YYYY-MM-DD","detail":"parsing time ..."} |
| 400 | from depois de to. | {"error":"from date must be before or equal to to date"} |
| 400 | Intervalo maior que um ano. | {"error":"date range must not exceed 1 year"} |
| 400 | type ausente. | {"error":"type query parameter is required (vendor, category, daily, customers, shipping)"} |
| 200 | type desconhecido: o cabeçalho de sucesso já foi enviado, então o status é 200 e o corpo é um JSON de erro precedido de BOM. | {"error":"invalid report type; valid values: vendor, category, daily, customers, shipping"} |
Exportar relatórios avançados
/api/v1/admin/advanced-reports/exportAdminCSV dos relatórios avançados
Parâmetros de consulta
typestringobrigatóriosalescustomersinventorycommissionspaymentscategoriesfromstringYYYY-MM-DD. Padrão: 30 dias atrás. Em inventory define só a janela usada para contar unidades vendidas.tostringYYYY-MM-DD. Padrão: hoje. Em inventory define só a janela de unidades vendidas.compare_fromstringsales).compare_tostringsales).vendor_iduuidcategory_iduuidcategories aplica o filtro; os outros tipos o ignoram.group_bystringpadrão: daydayweekmonthCabeçalhos
Accept-Languagestringen gera cabeçalhos em inglês; padrão português.Exemplo de requisição
Resposta
Campos da resposta
Content-LengthheaderA resposta não é JSON: é um arquivo CSV em UTF-8 com BOM, separador ; (padrão do Excel em português) e valores monetários com vírgula decimal (449,00), em reais, não em 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"]} |
| 400 | type ausente. | {"error":"type query parameter is required"} |
| 400 | type fora da lista. Aqui o erro é um 400 de verdade, antes de qualquer byte do arquivo. | {"error":"invalid report type"} |
| 500 | Falha ao montar o relatório. | {"error":"failed to generate report","detail":"..."} |