# API Analytics de Volume de Opt-In por Canal

Recupera estatísticas de volume de interações de clientes em todos os canais de comunicação com suporte a filtragem por intervalo de datas e contagem de clientes únicos.

# Headers Obrigatórios

Header Tipo Obrigatório Descrição
authorization Authorization Bearer Token ✔️ A chave da sua API
accept application/json ✔️

# Cache

Este endpoint está em cache por 5 minutos. As respostas são cacheadas para melhorar o desempenho.

# Métodos Disponíveis

Este endpoint suporta apenas o método GET.

# GET - Buscar Analytics de Volume por Canal

  GET https://hermes.g121.io/v1/analytics/general/channel-opt-volume

Recupera estatísticas de volume de interações de clientes em todos os canais de comunicação via requisição GET. Os parâmetros de query devem ser passados como parâmetros de URL.

# Parâmetros de Query

Parâmetro Tipo Obrigatório Padrão Descrição
daysAgo Integer 30 Número de dias para olhar para trás a partir de hoje (1-365, padrão 30)
startDate String Data de início para intervalo de datas personalizado (formato ISO 8601, deve estar pareado com endDate)
endDate String Data de término para intervalo de datas personalizado (formato ISO 8601, máximo 90 dias de startDate)
unique Boolean false Contar clientes únicos por clientId em vez de interações totais (padrão false)

# Modos de Consulta

  1. Modo Padrão: Sem parâmetros (últimos 30 dias)
  2. Modo Days Ago: Forneça daysAgo (1-365 dias)
  3. Modo Intervalo de Datas: Forneça startDate e endDate (máximo 90 dias, formato YYYY-MM-DD)

Nota: Os limites de data são definidos em dias completos (00:00:00 a 23:59:59)

curl -X GET 'https://hermes.g121.io/v1/analytics/general/channel-opt-volume?daysAgo=30' \
  -H 'Content-Type: application/json' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer {{apiToken}}'
Exemplo de retorno (últimos 30 dias):

{
  "status": "ok",
  "period": {
    "start": "2025-11-23T00:00:00.000Z",
    "end": "2025-12-23T23:59:59.999Z",
    "daysAgo": 30
  },
  "total": 350,
  "uniqueClients": false,
  "breakdown": [
    {
      "channel": "whatsapp",
      "count": 150
    },
    {
      "channel": "widget",
      "count": 120
    },
    {
      "channel": "messenger",
      "count": 80
    }
  ]
}

# Exemplo com Intervalo de Datas Personalizado

curl -X GET 'https://hermes.g121.io/v1/analytics/general/channel-opt-volume?startDate=2025-12-01&endDate=2025-12-23' \
  -H 'Content-Type: application/json' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer {{apiToken}}'
Exemplo de retorno (intervalo personalizado de 23 dias):

{
  "status": "ok",
  "period": {
    "start": "2025-12-01T00:00:00.000Z",
    "end": "2025-12-23T23:59:59.999Z",
    "daysAgo": 23
  },
  "total": 280,
  "uniqueClients": false,
  "breakdown": [
    {
      "channel": "whatsapp",
      "count": 140
    },
    {
      "channel": "widget",
      "count": 100
    },
    {
      "channel": "messenger",
      "count": 40
    }
  ]
}

# Exemplo Contando Clientes Únicos

curl -X GET 'https://hermes.g121.io/v1/analytics/general/channel-opt-volume?daysAgo=7&unique=true' \
  -H 'Content-Type: application/json' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer {{apiToken}}'
Exemplo de retorno (últimos 7 dias com clientes únicos):

{
  "status": "ok",
  "period": {
    "start": "2025-12-16T00:00:00.000Z",
    "end": "2025-12-23T23:59:59.999Z",
    "daysAgo": 7
  },
  "total": 125,
  "uniqueClients": true,
  "breakdown": [
    {
      "channel": "whatsapp",
      "count": 85
    },
    {
      "channel": "widget",
      "count": 30
    },
    {
      "channel": "messenger",
      "count": 10
    }
  ]
}

# Canais Disponíveis

Os seguintes canais são suportados no breakdown:

  • whatsapp - WhatsApp
  • whatsapp_business - WhatsApp Business
  • widget - Chat Widget
  • messenger - Facebook Messenger
  • instagram - Instagram Direct
  • email - Email

# Códigos de Status

Status Descrição
200 Sucesso ao obter as análises
400 Requisição inválida - parâmetros inválidos
401 Não autorizado - token inválido ou ausente
500 Erro interno do servidor

# Erros Comuns (400)

Erro Descrição
daysAgo deve estar entre 1 e 365 daysAgo fora do intervalo permitido
O intervalo de datas deve estar entre startDate e endDate, máximo 90 dias de diferença Intervalo de datas inválido ou > 90 dias
O intervalo de datas deve estar entre startDate e endDate, máximo 90 dias de diferença Apenas uma data foi fornecida (ambas são obrigatórias)