Relatório de agenda, tarefas, formulários e automações
GET /analytics/reports/operations — agendamentos por situação e profissional, tarefas por responsável, respostas por formulário e execuções por automação.
/analytics/reports/operationsBetaEscopo necessário: analytics:read
Responde como anda a operação: agendamentos por situação e por profissional, tarefas abertas, vencidas, criadas e concluídas por responsável, respostas por formulário e execuções por automação. O relatório é agregado: não traz contatos, respostas nem anotações.
Endpoint
GET https://crm.oficinamartech.com/api/v1/analytics/reports/operationsParâmetros de query
| Parâmetro | Tipo | Descrição |
|---|---|---|
days | int (1-90) | Janela em dias. Default: 30. Termina no fim de hoje, no fuso da organização. |
Um parâmetro fora desta lista é recusado com 400.
window.start é o primeiro dia da janela e window.end é o dia seguinte ao último. A resposta usa Cache-Control: private, no-store.
Exemplo
curl -s "https://crm.oficinamartech.com/api/v1/analytics/reports/operations?days=30" \
-H "Authorization: Bearer crm_live_SEU_PREFIXO_SEU_SEGREDO"Resposta 200
{
"captured_at": "2026-11-13T15:20:41.318Z",
"window": {
"days": 30,
"timezone": "America/Sao_Paulo",
"start": "2026-10-15",
"end": "2026-11-14"
},
"appointments": {
"total": 96,
"pending": 8,
"confirmed": 21,
"completed": 52,
"cancelled": 10,
"no_show": 5,
"upcoming": 14
},
"appointments_by_staff": [
{
"staff_id": "77aa77aa-58cc-4372-a567-0e02b2c3d479",
"staff_name": "Carlos Lima",
"total": 40,
"pending": 3,
"confirmed": 9,
"completed": 24,
"cancelled": 3,
"no_show": 1
}
],
"tasks": {
"open": 58,
"overdue": 12,
"created": 140,
"completed": 118
},
"tasks_by_operator": [
{
"operator_id": "11111111-58cc-4372-a567-0e02b2c3d479",
"operator_name": "Ana Souza",
"open": 21,
"overdue": 4,
"created": 52,
"completed": 47
}
],
"forms": [
{
"form_id": "f0f0f0f0-58cc-4372-a567-0e02b2c3d479",
"form_name": "Pedido de orçamento",
"status": "published",
"responses": 73,
"complete": 61
}
],
"automations": [
{
"automation_id": "a1a1a1a1-58cc-4372-a567-0e02b2c3d479",
"automation_name": "Boas-vindas a novos contatos",
"is_active": true,
"executions": 320,
"completed": 301,
"failed": 4,
"cancelled": 6,
"in_progress": 8,
"skipped": 1,
"avg_duration_ms": 4200
}
]
}Campos
| Campo | Definição |
|---|---|
captured_at, window | Instante do cálculo (UTC) e janela: days, timezone, start e end (dia seguinte ao último). |
appointments | Agendamentos com início na janela: total e quantidade por situação (pending, confirmed, completed, cancelled, no_show). |
appointments.upcoming | Agendamentos pendentes ou confirmados que ainda vão acontecer. Conta fora da janela. |
appointments_by_staff | Os mesmos contadores por profissional (staff_id, staff_name), sem upcoming. |
tasks.open, tasks.overdue | Estado atual: tarefas abertas e, dessas, as vencidas. Não dependem da janela. |
tasks.created, tasks.completed | Tarefas criadas e concluídas na janela. |
tasks_by_operator | Os mesmos números por responsável. operator_id null agrupa as tarefas sem responsável. |
forms[].responses | Respostas criadas na janela, sem as de teste. |
forms[].complete | Dessas respostas, as que foram concluídas. |
forms[].status | Situação do formulário, a mesma de GET /forms. |
automations[].executions | Execuções iniciadas na janela, sem as de teste. |
completed, failed, cancelled, in_progress, skipped | Execuções por desfecho. completed inclui as concluídas com etapas ignoradas; in_progress são as em andamento ou em espera; skipped são as puladas por travamento. |
avg_duration_ms | Duração média, em milissegundos, das execuções concluídas. null sem nenhuma. |
forms e automations trazem no máximo 100 itens cada, os mais ativos da janela. Formulários e automações sem atividade completam a lista com contadores zerados, até o limite.
Erros
| Status | Código | Quando |
|---|---|---|
400 | invalid_query | days fora de 1–90 ou parâmetro desconhecido. |
401 | missing_api_key / invalid_api_key | API key ausente, inválida, expirada ou revogada. |
403 | missing_scope | A chave não tem o escopo analytics:read. |
413 | report_too_large | O relatório passou do limite de tamanho. Reduza days. |
429 | rate_limited | Acima de 120 req/min por chave ou por organização. |
500 | — | Erro interno. |
Um nome de relatório desconhecido no caminho responde 404 not_found.
Relatório de disparos e canais
GET /analytics/reports/dispatch — campanhas iniciadas na janela, entrega das mensagens enviadas e custo em dólar por dia e por categoria.
Enviar mensagem
POST /messages/send — envia uma mensagem WhatsApp (texto ou mídia) pela fila do CRM, para conversa, contato ou telefone, com operador opcional.