CRM Oficina Martech
ReferênciaRelatórios

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.

GET/analytics/reports/operationsBeta

Escopo 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/operations

Parâmetros de query

ParâmetroTipoDescrição
daysint (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

CampoDefinição
captured_at, windowInstante do cálculo (UTC) e janela: days, timezone, start e end (dia seguinte ao último).
appointmentsAgendamentos com início na janela: total e quantidade por situação (pending, confirmed, completed, cancelled, no_show).
appointments.upcomingAgendamentos pendentes ou confirmados que ainda vão acontecer. Conta fora da janela.
appointments_by_staffOs mesmos contadores por profissional (staff_id, staff_name), sem upcoming.
tasks.open, tasks.overdueEstado atual: tarefas abertas e, dessas, as vencidas. Não dependem da janela.
tasks.created, tasks.completedTarefas criadas e concluídas na janela.
tasks_by_operatorOs mesmos números por responsável. operator_id null agrupa as tarefas sem responsável.
forms[].responsesRespostas criadas na janela, sem as de teste.
forms[].completeDessas respostas, as que foram concluídas.
forms[].statusSituação do formulário, a mesma de GET /forms.
automations[].executionsExecuções iniciadas na janela, sem as de teste.
completed, failed, cancelled, in_progress, skippedExecuçõ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_msDuraçã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

StatusCódigoQuando
400invalid_querydays fora de 1–90 ou parâmetro desconhecido.
401missing_api_key / invalid_api_keyAPI key ausente, inválida, expirada ou revogada.
403missing_scopeA chave não tem o escopo analytics:read.
413report_too_largeO relatório passou do limite de tamanho. Reduza days.
429rate_limitedAcima 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.

On this page