Relatórios agendados
Cria, lista, liga/desliga e apaga os envios automáticos de relatório por e-mail do seller.
Um relatório agendado envia, por e-mail, um CSV do período recém-encerrado, em frequência fixa: diário (o dia anterior), semanal (os 7 dias até ontem) ou mensal (o mês anterior inteiro). Cada agendamento pertence ao seller que o criou e o CSV só contém dados dele. O envio roda de hora em hora na plataforma, então o e-mail chega no horário cheio seguinte à elegibilidade, não numa hora escolhida. Exige o privilégio de ajustes do seller.
Listar agendamentos
Devolve todos os agendamentos do seller, sem paginação.
/api/v1/vendor/scheduled-reportsSellerListar agendamentos
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Exemplo de requisição
curl -X GET "$BASE_URL/api/v1/vendor/scheduled-reports" \
-H "Authorization: Bearer $TOKEN"Resposta
{
"scheduled_reports": [
{
"id": 21,
"name": "Vendas semanais",
"report_type": "sales",
"filters": "{\"format\": \"\", \"date_to\": \"\", \"group_by\": \"day\", \"date_from\": \"\", \"vendor_id\": \"94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36\", \"compare_to\": \"\", \"category_id\": \"\", \"compare_from\": \"\"}",
"schedule": "weekly",
"recipients": [
"financeiro@example.com"
],
"is_active": true,
"created_by": "0fd409fb-9869-4c50-a18c-a810a19abeed",
"created_at": "2026-10-11T21:05:37",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36"
}
]
}Campos da resposta
scheduled_reportsobject[]Os agendamentos.
idintegernamestringreport_typestringsalesinventorycommissionspaymentscategoriesfiltersstringdate_from e date_to guardados são ignorados.schedulestringdailyweeklymonthlyrecipientsstring[]is_activebooleancreated_byuuidcreated_atstringAAAA-MM-DDThh:mm:ss sem fuso.last_sent_atstringvendor_iduuidErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 401 | Token ausente, inválido, expirado ou revogado. | invalid or expired token |
| 403 | O token não é de um usuário seller, a loja está em análise de cadastro ou falta o privilégio de ajustes (vendor_settings ou equivalente). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","vendor_manage_delivery_areas","vendor_manage_whatsapp","vendor_manage_documents","vendor_manage_kyc","vendor_view_plan","vendor_manage_application","vendor_manage_vacation"]} |
| 500 | Falha ao listar. | {"error":"failed to list scheduled reports"} |
Criar agendamento
Cria um agendamento ativo. A primeira execução acontece no próximo ciclo horário, porque ainda não houve envio.
/api/v1/vendor/scheduled-reportsSellerCriar agendamento
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Content-Typestringobrigatórioapplication/json.Corpo da requisição
namestringobrigatórioreport_typestringobrigatóriosalesinventorycommissionspaymentscategoriescustomers é recusado para sellers porque agregaria clientes de toda a loja.schedulestringobrigatóriodailyweeklymonthlyrecipientsstring[]filtersobjectgroup_by (day, week, month). As datas são ignoradas: o período vem da frequência. vendor_id é sempre trocado pelo seu seller.Exemplo de requisição
curl -X POST "$BASE_URL/api/v1/vendor/scheduled-reports" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "Vendas semanais", "report_type": "sales", "schedule": "weekly", "recipients": ["financeiro@example.com"], "filters": {"group_by": "day"}}'Resposta
{
"id": 21,
"name": "Vendas semanais",
"report_type": "sales",
"filters": "{\"format\": \"\", \"date_to\": \"\", \"group_by\": \"day\", \"date_from\": \"\", \"vendor_id\": \"94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36\", \"compare_to\": \"\", \"category_id\": \"\", \"compare_from\": \"\"}",
"schedule": "weekly",
"recipients": [
"financeiro@example.com"
],
"is_active": true,
"created_by": "0fd409fb-9869-4c50-a18c-a810a19abeed",
"created_at": "2026-10-11T21:05:37",
"vendor_id": "94bd7e9a-fdad-4d01-8fc2-ba9d677d8b36"
}Campos da resposta
(campos / fields)objectErros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | Corpo que não é JSON. | {"error":"invalid JSON body"} |
| 400 | name vazio. | {"error":"name is required"} |
| 400 | report_type ou schedule inválido. | {"error":"failed to create scheduled report","detail":"invalid report_type for vendor schedule: customers"} |
| 401 | Token ausente, inválido, expirado ou revogado. | invalid or expired token |
| 403 | O token não é de um usuário seller, a loja está em análise de cadastro ou falta o privilégio de ajustes (vendor_settings ou equivalente). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","vendor_manage_delivery_areas","vendor_manage_whatsapp","vendor_manage_documents","vendor_manage_kyc","vendor_view_plan","vendor_manage_application","vendor_manage_vacation"]} |
Ligar ou desligar
Liga ou desliga um agendamento sem apagá-lo. Desligado, ele deixa de enviar e continua listado.
/api/v1/vendor/scheduled-reports/{id}/toggleSellerLigar ou desligar
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Content-Typestringobrigatórioapplication/json.Parâmetros de caminho
idintegerobrigatórioCorpo da requisição
is_activebooleanobrigatóriotrue liga, false desliga. Se omitido, vale false (desliga).Exemplo de requisição
curl -X PUT "$BASE_URL/api/v1/vendor/scheduled-reports/21/toggle" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"is_active": false}'Resposta
{
"ok": true
}Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | id que não é número, ou corpo que não é JSON. | {"error":"invalid id"} |
| 404 | Agendamento inexistente ou de outro seller. | {"error":"failed to update scheduled report","detail":"scheduled report 99999 not found"} |
| 401 | Token ausente, inválido, expirado ou revogado. | invalid or expired token |
| 403 | O token não é de um usuário seller, a loja está em análise de cadastro ou falta o privilégio de ajustes (vendor_settings ou equivalente). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","vendor_manage_delivery_areas","vendor_manage_whatsapp","vendor_manage_documents","vendor_manage_kyc","vendor_view_plan","vendor_manage_application","vendor_manage_vacation"]} |
Apagar agendamento
Apaga o agendamento. A ação não tem volta.
/api/v1/vendor/scheduled-reports/{id}SellerApagar agendamento
Cabeçalhos
AuthorizationstringobrigatórioBearer $TOKEN. Token de acesso do usuário seller (veja Tokens).Parâmetros de caminho
idintegerobrigatórioExemplo de requisição
curl -X DELETE "$BASE_URL/api/v1/vendor/scheduled-reports/21" \
-H "Authorization: Bearer $TOKEN"Resposta
Erros
| Status | Quando | Corpo de exemplo |
|---|---|---|
| 400 | id que não é número. | {"error":"invalid id"} |
| 404 | Agendamento inexistente ou de outro seller. | {"error":"failed to delete scheduled report","detail":"scheduled report 99999 not found"} |
| 401 | Token ausente, inválido, expirado ou revogado. | invalid or expired token |
| 403 | O token não é de um usuário seller, a loja está em análise de cadastro ou falta o privilégio de ajustes (vendor_settings ou equivalente). | {"error":"insufficient vendor privileges","privilege_required_any":["vendor_settings","vendor_view_settings","vendor_manage_delivery_areas","vendor_manage_whatsapp","vendor_manage_documents","vendor_manage_kyc","vendor_view_plan","vendor_manage_application","vendor_manage_vacation"]} |