Í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: pesquisa_simples — Consulta de Pesquisa Simples de Satisfação

1. Objetivo

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

A aplicação pesquisa_simples permite consultar registros de pesquisas simples de satisfação vinculadas aos atendimentos realizados no sistema.

O retorno apresenta informações como identificador único da chamada, data e hora da pesquisa, agente responsável, nota registrada, telefone de origem, fila, identificadores internos e situação da pesquisa.

Os dados podem ser utilizados para relatórios de qualidade, acompanhamento de satisfação, dashboards gerenciais, análise por agente, análise por fila e integrações externas.

2. Endpoint

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

3. URL da Requisição

{{url}}/agi/app.php?user={{user}}&pwd={{pass}}&app=pesquisa_simples&end_date={{dt_init}}&intervalo=0&key_queues=&key_agents=&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, credenciais de produção ou telefones reais.
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
Telefones reais Usar valores mascarados

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
app string Sim pesquisa_simples Nome da aplicação consultada
end_date date Sim 2026-06-10 Data final da consulta
intervalo integer Sim 0 Quantidade de dias retroativos a partir de end_date
key_queues string Não vazio Filtro por fila
key_agents string Não vazio Filtro por agente
teste integer Não 0 Indicador de execução em modo teste

8. Parâmetro app

Para consultar os registros de pesquisa simples, o parâmetro app deve receber o valor:

app=pesquisa_simples

9. Parâmetro end_date

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

Formato esperado:

YYYY-MM-DD

Exemplo:

end_date=2026-06-10

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

2026-06-10 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 2026-06-10
intervalo 0

Período calculado:

Campo Valor
start 2026-06-10 00:00:00
end 2026-06-10 23:59:59
intervalo 0

Neste caso, a consulta considera somente o dia 2026-06-10.

11.2 Exemplo com intervalo igual a 1

Parâmetro Valor
end_date 2026-06-10
intervalo 1

Período calculado:

Campo Valor
start 2026-06-09 00:00:00
end 2026-06-10 23:59:59
intervalo 1

Neste caso, a consulta considera o período de 2026-06-09 00:00:00 até 2026-06-10 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 Fila

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

Quando vazio:

key_queues=

A API não restringe a consulta a uma fila específica.

Quando informado, deve conter a identificação da fila desejada.

key_queues=sac

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

SAC

14. 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

15. Exemplo de Requisição cURL

curl --location '{{url}}/agi/app.php?user={{user}}&pwd={{pass}}&app=pesquisa_simples&end_date={{dt_init}}&intervalo=0&key_queues=&key_agents=&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": "2026-06-10 00:00:00",
    "end": "2026-06-10 23:59:59",
    "intervalo": 0
  },
  "key_agents": null,
  "key_queues": null,
  "endpont": {
    "": null
  },
  "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 ou null quando não informado
endpont object Estrutura complementar retornada pela aplicação
csv object Dados detalhados da pesquisa simples em estrutura indexada
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": "2026-06-10 00:00:00",
    "end": "2026-06-10 23:59:59",
    "intervalo": 0
  }
}
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 nenhuma fila é informada, o retorno pode vir como:

{
  "key_queues": null
}

Isso indica que a consulta não foi limitada a uma fila específica.

23. Campo endpont

O campo endpont é retornado pela aplicação como uma estrutura complementar.

{
  "endpont": {
    "": null
  }
}

Este campo pode ser tratado como informação auxiliar da aplicação.

24. Campo csv

O campo csv contém os registros da pesquisa simples.

Cada item dentro de csv é identificado pelo uniqueid da chamada/pesquisa.

Formato observado da chave:

{uniqueid}

Exemplo protegido:

{
  "UNIQUEID_EXEMPLO": {
    "uniqueid": "UNIQUEID_EXEMPLO",
    "datetime": "2026-06-10 08:00:00",
    "nagent": "NOME_DO_AGENTE",
    "nota": "3",
    "callerid": "TELEFONE_MASCARADO",
    "queue": "SAC",
    "qname": "129",
    "qagent": "0000",
    "qevent": "12",
    "situacao": "Não Opinou."
  }
}

25. Campos Retornados em csv

Campo Tipo Descrição
uniqueid string Identificador único da chamada/pesquisa
datetime datetime Data e hora do registro da pesquisa
nagent string Nome ou identificação do agente
nota string/integer/null Nota registrada na pesquisa
callerid string Telefone de origem da chamada
queue string Nome da fila
qname string ID interno da fila
qagent string ID interno do agente
qevent string ID interno do evento
situacao string Situação da pesquisa

26. Campo uniqueid

O campo uniqueid identifica de forma única a chamada ou o registro associado à pesquisa.

1781060857.1568334

Este campo pode ser usado para relacionar a pesquisa a outros registros de atendimento, gravações, extratos ou eventos internos, quando houver correspondência disponível em outros módulos.

27. Campo datetime

O campo datetime informa a data e hora do registro da pesquisa.

Formato observado:

YYYY-MM-DD HH:MM:SS

Exemplo:

2026-06-10 08:39:42

28. Campo nagent

O campo nagent informa o nome ou identificação do agente associado ao atendimento avaliado.

NOME_DO_AGENTE

29. Campo nota

O campo nota informa a nota registrada na pesquisa simples.

Valor Observação
0 Nota registrada como zero
1 Nota registrada como um
2 Nota registrada como dois
3 Nota registrada como três
9 Nota registrada como nove
None Valor não numérico retornado pela aplicação
O sistema consumidor deve tratar o campo nota como texto ou converter para número somente após validação.

30. Campo callerid

O campo callerid informa o telefone de origem da chamada.

Exemplo protegido:

TELEFONE_MASCARADO

Por conter dado sensível, recomenda-se mascarar esse campo em ambientes públicos, relatórios externos ou dashboards compartilhados.

31. Campo queue

O campo queue informa o nome da fila associada à pesquisa.

Exemplos observados:

Fila
SAC
SUPORTE
SUPORTE_GIGANET
CENTRAL_VENDAS
RECHAMADA
RETENCAO
SAIDA_PRINCIPAL

32. Campo qname

O campo qname representa o ID interno da fila.

qname queue
129 SAC
130 SUPORTE
149 SUPORTE_GIGANET
127 CENTRAL_VENDAS
131 RECHAMADA

33. Campo qagent

O campo qagent representa o ID interno do agente.

4690

Esse campo pode ser utilizado para cruzar dados com cadastros internos de agentes, relatórios de produtividade ou outros módulos da API.

34. Campo qevent

O campo qevent representa o ID interno do evento associado ao registro.

Exemplo observado:

12

35. Campo situacao

O campo situacao informa a situação da pesquisa.

Exemplo observado:

Não Opinou.

Esse campo deve ser tratado como texto.

36. Campo filas

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

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

37. Exemplo de Consumo em PHP

<?php

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

$params = [
    'user'       => '{{user}}',
    'pwd'        => '{{pass}}',
    'app'        => 'pesquisa_simples',
    'end_date'   => '{{dt_init}}',
    'intervalo'  => 0,
    'key_queues' => '',
    'key_agents' => '',
    '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);

38. 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('app', 'pesquisa_simples');
url.searchParams.set('end_date', '{{dt_init}}');
url.searchParams.set('intervalo', '0');
url.searchParams.set('key_queues', '');
url.searchParams.set('key_agents', '');
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);

39. Exemplo de Leitura do Campo csv em JavaScript

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

registros.forEach((item) => {
  console.log({
    uniqueid: item.uniqueid,
    dataHora: item.datetime,
    agente: item.nagent,
    nota: item.nota,
    telefone: item.callerid,
    fila: item.queue,
    idFila: item.qname,
    idAgente: item.qagent,
    idEvento: item.qevent,
    situacao: item.situacao,
  });
});

40. Exemplo de Leitura com Proteção de Dados

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

const dadosProtegidos = registros.map((item) => ({
  uniqueid: item.uniqueid,
  dataHora: item.datetime,
  agente: item.nagent,
  nota: item.nota,
  telefone: item.callerid ? '***' : null,
  fila: item.queue,
  idFila: item.qname,
  idAgente: item.qagent,
  idEvento: item.qevent,
  situacao: item.situacao,
}));

console.log(dadosProtegidos);

41. Exemplo de Conversão Segura da Nota

function normalizarNota(nota) {
  if (nota === null || nota === undefined) {
    return null;
  }

  if (nota === 'None' || nota === '') {
    return null;
  }

  const numero = Number(nota);

  return Number.isNaN(numero) ? null : numero;
}

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

const pesquisas = registros.map((item) => ({
  uniqueid: item.uniqueid,
  agente: item.nagent,
  fila: item.queue,
  notaOriginal: item.nota,
  notaNormalizada: normalizarNota(item.nota),
}));

42. Tratamento de Retorno Vazio

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

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

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

43. 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
csv existe Confirma que a estrutura de pesquisa foi retornada
filas existe Confirma que a lista de filas foi retornada

44. 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

45. Boas Práticas de Segurança

46. Boas Práticas de Performance

47. 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=pesquisa_simples está sendo enviado
Intervalo Confirmar se o valor está entre 0 e 91
Fila Confirmar se key_queues está correto quando utilizado
Agente Confirmar se key_agents está correto quando utilizado
Retorno Confirmar se status retorna 0
Pesquisa Confirmar se csv é tratado corretamente
Nota Confirmar se nota é tratada como texto ou normalizada com segurança
Dados pessoais Confirmar se callerid é protegido quando necessário
Segurança Confirmar se credenciais não aparecem em logs ou no frontend

48. Resumo Técnico

Item Valor
Nome da aplicação pesquisa_simples
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
Estrutura principal csv
Lista de filas filas
Filtro por agente key_agents
Filtro por fila key_queues
Uso principal Consulta de pesquisas simples de satisfação

49. Observação Final

A aplicação pesquisa_simples deve ser utilizada para consultar registros de avaliação simples dos atendimentos.

O retorno fornece uma estrutura indicada para análise de satisfação por agente, fila e período, contendo identificador único, data e hora, agente, nota, telefone, fila, evento e situação da pesquisa.

Por retornar telefone de origem no campo callerid, a integração deve aplicar cuidados de segurança e mascaramento quando os dados forem exibidos fora de ambientes internos controlados.

```