Índice da Documentação Técnica — API GTI

Lista das documentações disponíveis para consulta.

Documentações

Documentação Técnica — API GTI

Aplicação: agent — Consulta de Indicadores por Agente

1. Objetivo

Esta documentação descreve como consumir a aplicação agent da API GTI.

A aplicação agent permite consultar indicadores operacionais de atendimento agrupados por data, fila e agente.

Os dados retornados podem ser utilizados para relatórios, dashboards, integrações externas, auditorias operacionais e análises de performance de atendimento.

2. Endpoint

Item Informação
Método HTTP GET
Endpoint {{url}}/agi/app.php
Aplicação agent
Formato de retorno JSON
Autenticação Query string e headers HTTP

3. URL da Requisição

{{url}}/agi/app.php?user={{user}}&pwd={{pass}}&end_date={{dt_init}}&app=agent&intervalo=1&key_agents=&key_queues=suporte&teste=0

4. Proteção de Dados Sensíveis

A documentação deve utilizar variáveis no lugar de dados reais.

Nunca expor em documentação pública ou compartilhada: IP real, usuário real, senha real, cookies de sessão, tokens ou credenciais de produção.
Dado sensível Exemplo protegido
URL real do servidor {{url}}
Usuário da API {{user}}
Senha da API {{pass}}
Usuário de header {{header_user}}
Senha de header {{header_pass}}
Cookie de sessão Não documentar
IP real do servidor Usar somente {{url}}
Tokens ou credenciais Usar placeholders

5. Variáveis Utilizadas

Variável Descrição
{{url}} URL base do servidor da API
{{user}} Usuário de autenticação da API enviado na URL
{{pass}} Senha de autenticação da API enviada na URL
{{dt_init}} Data final da consulta
{{header_user}} Usuário enviado no header HTTP
{{header_pass}} Senha enviada no header HTTP

6. Autenticação

A API utiliza autenticação por parâmetros na URL e também por headers HTTP.

6.1 Autenticação pela URL

Parâmetro Obrigatório Descrição
user Sim Usuário autorizado para acesso à API
pwd Sim Senha do usuário autorizado

6.2 Autenticação via Headers

Header Obrigatório Descrição
user Sim Usuário autorizado no header HTTP
pwd Sim Senha autorizada no header HTTP

6.3 Headers Recomendados

Header Valor
Accept application/json
user {{header_user}}
pwd {{header_pass}}

7. Parâmetros da Query String

Parâmetro Tipo Obrigatório Exemplo Descrição
user string Sim {{user}} Usuário da API
pwd string Sim {{pass}} Senha da API
end_date date Sim 2025-04-01 Data final da consulta
app string Sim agent Nome da aplicação consultada
intervalo integer Sim 1 Quantidade de dias retroativos a partir de end_date
key_agents string Não vazio Filtro por agente
key_queues string Não suporte Filtro por fila
teste integer Não 0 Indicador de execução em modo teste

8. Parâmetro app

Para consultar os indicadores por agente, o parâmetro app deve receber o valor:

app=agent

9. Parâmetro end_date

O parâmetro end_date representa a data final da consulta.

Formato esperado:

YYYY-MM-DD

Exemplo:

end_date=2025-04-01

A API considera a data final até o último segundo do dia.

2025-04-01 23:59:59

10. Parâmetro intervalo

O parâmetro intervalo define a quantidade de dias anteriores que serão incluídos na consulta, usando end_date como referência.

Campo Regra
Data inicial end_date - intervalo
Data final end_date
Hora inicial 00:00:00
Hora final 23:59:59

11. Exemplos de Intervalo

11.1 Exemplo com intervalo igual a 0

Parâmetro Valor
end_date 2025-04-01
intervalo 0

Período calculado:

Campo Valor
start 2025-04-01 00:00:00
end 2025-04-01 23:59:59
intervalo 0

Neste caso, a consulta considera somente o dia 2025-04-01.

11.2 Exemplo com intervalo igual a 1

Parâmetro Valor
end_date 2025-04-01
intervalo 1

Período calculado:

Campo Valor
start 2025-03-31 00:00:00
end 2025-04-01 23:59:59
intervalo 1

Neste caso, a consulta considera o período de 2025-03-31 00:00:00 até 2025-04-01 23:59:59.

12. Limite do Intervalo

O intervalo aceito pela API é de 0 a 91 dias.

Valor de intervalo Comportamento
0 Consulta apenas o dia informado em end_date
1 Consulta o dia informado e 1 dia anterior
7 Consulta o dia informado e 7 dias anteriores
30 Consulta o dia informado e 30 dias anteriores
91 Maior intervalo permitido

13. Filtro por Agente

O parâmetro key_agents permite filtrar os resultados por agente.

Quando vazio:

key_agents=

A API não restringe a consulta a um agente específico.

Quando informado, deve conter a identificação do agente desejado.

key_agents=NOME_DO_AGENTE

14. Filtro por Fila

O parâmetro key_queues permite filtrar os resultados por fila.

key_queues=suporte

No retorno, a fila pode aparecer normalizada em caixa alta.

SUPORTE

15. Exemplo de Requisição cURL

curl --location '{{url}}/agi/app.php?user={{user}}&pwd={{pass}}&end_date={{dt_init}}&app=agent&intervalo=1&key_agents=&key_queues=suporte&teste=0' \
--header 'Accept: application/json' \
--header 'user: {{header_user}}' \
--header 'pwd: {{header_pass}}'

16. Exemplo de Retorno Geral

{
  "status": 0,
  "msg": [
    "Login bem sucedido!",
    "A data informada é valida!",
    "O intervalo informado é valido entre 0 e 91 dias",
    "A aplicação exite!",
    "A soma de catacteres em keywords é menor ou igual a 100"
  ],
  "dt": {
    "start": "2025-03-31 00:00:00",
    "end": "2025-04-01 23:59:59",
    "intervalo": 1
  },
  "key_agents": null,
  "key_queues": [
    "suporte"
  ],
  "dados": {},
  "csv": {},
  "filas": []
}

17. Estrutura Principal do Retorno

Campo Tipo Descrição
status integer Código de status da requisição
msg array Lista de mensagens de validação e processamento
dt object Objeto com o período calculado da consulta
key_agents array/null Lista de agentes filtrados ou null quando não informado
key_queues array/null Lista de filas filtradas
dados object Dados agrupados por data, fila e agente
csv object Dados em estrutura achatada para exportação
filas array Lista de filas disponíveis no sistema

18. Campo status

O campo status indica o resultado geral da execução.

{
  "status": 0
}
Valor Significado
0 Requisição processada com sucesso

19. Campo msg

O campo msg retorna uma lista de mensagens referentes às validações realizadas pela API.

Mensagem Significado
Login bem sucedido! As credenciais foram aceitas
A data informada é valida! O parâmetro end_date foi validado
O intervalo informado é valido entre 0 e 91 dias O parâmetro intervalo está dentro do limite permitido
A aplicação exite! O valor informado em app foi reconhecido
A soma de catacteres em keywords é menor ou igual a 100 Os filtros informados respeitam o limite de caracteres

20. Campo dt

O campo dt informa o período efetivamente usado na consulta.

{
  "dt": {
    "start": "2025-03-31 00:00:00",
    "end": "2025-04-01 23:59:59",
    "intervalo": 1
  }
}
Campo Tipo Descrição
start datetime Data e hora inicial da consulta
end datetime Data e hora final da consulta
intervalo integer Intervalo retroativo usado no cálculo

21. Campo key_agents

Quando nenhum agente é informado, o retorno pode vir como:

{
  "key_agents": null
}

Isso indica que a consulta não foi limitada a um agente específico.

22. Campo key_queues

Quando uma fila é informada, o retorno contém a lista de filas filtradas.

{
  "key_queues": [
    "suporte"
  ]
}

23. Campo dados

O campo dados contém os indicadores agrupados por data, fila e agente.

data -> fila -> agente -> indicadores
{
  "dados": {
    "2025-04-01": {
      "SUPORTE": {
        "NOME_DO_AGENTE": {
          "date": "2025-04-01",
          "queue_id": "130",
          "queue": "SUPORTE",
          "agent_id": "4188",
          "agent": "NOME_DO_AGENTE",
          "RINGNOANSWER": "0",
          "COMPLETEAGENT": "2",
          "COMPLETECALLER": "1",
          "TRANSFER": "0",
          "CONNECT": 3,
          "TME": "00:00:04",
          "TMA": "00:08:46",
          "SLA": "3",
          "SLA-P": "100,00%",
          "all_call": "00:26:20",
          "all_esp": "00:00:14",
          "max_esp": "00:00:05"
        }
      }
    }
  }
}

24. Indicadores Retornados por Agente

Campo Tipo Descrição
date date Data do registro
queue_id string ID interno da fila
queue string Nome da fila
agent_id string ID interno do agente
agent string Nome ou identificação do agente
RINGNOANSWER integer/string Chamadas que tocaram e não foram atendidas
COMPLETEAGENT integer/string Chamadas completadas e finalizadas pelo agente
COMPLETECALLER integer/string Chamadas completadas e finalizadas pelo cliente
TRANSFER integer/string Chamadas transferidas
CONNECT integer Total de chamadas conectadas
TME time Tempo médio de espera
TMA time Tempo médio de atendimento
SLA integer/string Total de chamadas dentro do SLA
SLA-P string Percentual de chamadas dentro do SLA
all_call time Tempo total em chamadas
all_esp time Tempo total de espera
max_esp time Maior tempo de espera registrado

25. Campo csv

O campo csv contém os mesmos indicadores em uma estrutura achatada, usando uma chave composta.

{data}-{fila}-{agente}
{
  "2025-04-01-SUPORTE-NOME_DO_AGENTE": {
    "date": "2025-04-01",
    "queue_id": "130",
    "queue": "SUPORTE",
    "agent_id": "4188",
    "agent": "NOME_DO_AGENTE",
    "RINGNOANSWER": "0",
    "COMPLETEAGENT": "2",
    "COMPLETECALLER": "1",
    "TRANSFER": "0",
    "CONNECT": 3,
    "TME": "00:00:04",
    "TMA": "00:08:46",
    "SLA": "3",
    "SLA-P": "100,00%",
    "all_call": "00:26:20",
    "all_esp": "00:00:14",
    "max_esp": "00:00:05"
  }
}

Essa estrutura é recomendada para:

26. Campo filas

O campo filas retorna a lista de filas disponíveis na base da aplicação.

{
  "filas": [
    {
      "queue_id": "130",
      "queue": "SUPORTE"
    }
  ]
}
Campo Tipo Descrição
queue_id string ID interno da fila
queue string Nome da fila

27. Exemplo de Consumo em PHP

<?php

$urlBase = '{{url}}/agi/app.php';

$params = [
    'user'       => '{{user}}',
    'pwd'        => '{{pass}}',
    'end_date'   => '{{dt_init}}',
    'app'        => 'agent',
    'intervalo'  => 1,
    'key_agents' => '',
    'key_queues' => 'suporte',
    'teste'      => 0,
];

$url = $urlBase . '?' . http_build_query($params);

$ch = curl_init();

curl_setopt_array($ch, [
    CURLOPT_URL            => $url,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER     => [
        'Accept: application/json',
        'user: {{header_user}}',
        'pwd: {{header_pass}}',
    ],
]);

$response = curl_exec($ch);

if ($response === false) {
    throw new Exception('Erro na requisição: ' . curl_error($ch));
}

$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

curl_close($ch);

$data = json_decode($response, true);

if ($httpCode !== 200) {
    throw new Exception('Erro HTTP: ' . $httpCode);
}

if (!isset($data['status']) || $data['status'] !== 0) {
    throw new Exception('Erro retornado pela API.');
}

print_r($data);

28. Exemplo de Consumo em JavaScript

const url = new URL('{{url}}/agi/app.php');

url.searchParams.set('user', '{{user}}');
url.searchParams.set('pwd', '{{pass}}');
url.searchParams.set('end_date', '{{dt_init}}');
url.searchParams.set('app', 'agent');
url.searchParams.set('intervalo', '1');
url.searchParams.set('key_agents', '');
url.searchParams.set('key_queues', 'suporte');
url.searchParams.set('teste', '0');

const response = await fetch(url, {
  method: 'GET',
  headers: {
    Accept: 'application/json',
    user: '{{header_user}}',
    pwd: '{{header_pass}}',
  },
});

if (!response.ok) {
  throw new Error(`Erro HTTP: ${response.status}`);
}

const data = await response.json();

if (data.status !== 0) {
  throw new Error('Erro retornado pela API.');
}

console.log(data);

29. Exemplo de Leitura do Campo dados em JavaScript

const dados = data.dados;

for (const dataRef in dados) {
  for (const fila in dados[dataRef]) {
    for (const agente in dados[dataRef][fila]) {
      const item = dados[dataRef][fila][agente];

      console.log({
        data: item.date,
        fila: item.queue,
        agente: item.agent,
        atendidas: item.CONNECT,
        tme: item.TME,
        tma: item.TMA,
        sla: item['SLA-P'],
      });
    }
  }
}

30. Exemplo de Leitura do Campo csv em JavaScript

const linhas = Object.values(data.csv);

linhas.forEach((item) => {
  console.log({
    data: item.date,
    fila: item.queue,
    agente: item.agent,
    chamadasConectadas: item.CONNECT,
    tempoMedioEspera: item.TME,
    tempoMedioAtendimento: item.TMA,
    percentualSla: item['SLA-P'],
  });
});

31. Tratamento de Retorno Vazio

A API pode retornar sucesso, mas sem dados no período consultado.

{
  "status": 0,
  "dados": {},
  "csv": {}
}

Nesse caso, a aplicação consumidora deve tratar como consulta válida sem registros.

32. Validações Recomendadas no Sistema Consumidor

Validação Descrição
status == 0 Confirma que a API processou a requisição com sucesso
dt.start existe Confirma que a data inicial foi retornada
dt.end existe Confirma que a data final foi retornada
dados existe Confirma que a estrutura agrupada foi retornada
csv existe Confirma que a estrutura tabular foi retornada
filas existe Confirma que a lista de filas foi retornada

33. Possíveis Erros

Situação Possível causa
Login inválido Usuário ou senha incorretos
Data inválida end_date fora do formato esperado
Intervalo inválido intervalo menor que 0 ou maior que 91
Aplicação inexistente Valor de app não reconhecido
Retorno sem dados Não existem registros no período ou filtro informado
Erro HTTP Falha de comunicação com o servidor
Erro de permissão Credenciais sem autorização para a consulta

34. Boas Práticas de Segurança

35. Boas Práticas de Performance

36. Checklist de Homologação

Item Validação
URL Confirmar se {{url}} aponta para o ambiente correto
Credenciais Confirmar se {{user}} e {{pass}} estão corretos
Headers Confirmar se {{header_user}} e {{header_pass}} estão corretos
Data Confirmar se {{dt_init}} está no formato YYYY-MM-DD
Aplicação Confirmar se app=agent está sendo enviado
Intervalo Confirmar se o valor está entre 0 e 91
Fila Confirmar se key_queues contém a fila desejada
Agente Confirmar se key_agents está correto quando utilizado
Retorno Confirmar se status retorna 0
Dados Confirmar se dados e csv são tratados corretamente
Segurança Confirmar se credenciais não aparecem em logs ou no frontend

37. Resumo Técnico

Item Valor
Nome da aplicação agent
Endpoint {{url}}/agi/app.php
Método GET
Retorno JSON
Autenticação Query string e headers HTTP
Data base end_date
Intervalo permitido 0 a 91 dias
Agrupamento principal Data, fila e agente
Estrutura agrupada dados
Estrutura para relatório csv
Lista de filas filas
Filtro por agente key_agents
Filtro por fila key_queues

38. Observação Final

A aplicação agent deve ser utilizada para consultas consolidadas de atendimento por agente.

O retorno fornece duas formas principais de leitura:

Estrutura Uso recomendado
dados Exibição agrupada por data, fila e agente
csv Exportação, relatórios tabulares, dashboards e integração com BI