From 723ad8c268e072516ae5ec61043c9a944f7cc63e Mon Sep 17 00:00:00 2001 From: "Rodrigo B. de Sousa Martins" Date: Fri, 8 Aug 2025 18:40:39 -0300 Subject: [PATCH] Add TopSapp preliminary support Signed-off-by: Rodrigo B. de Sousa Martins --- .env.example | 8 + TOPSAPP-INTEGRATION.md | 202 + material/ManualApiTopSapp.txt | 10253 ++++++++++++++++++++++++++++++++ package.json | 4 +- src/bot/handler.js | 598 ++ src/nlp/processor.js | 85 +- src/topsapp/api.js | 333 ++ src/topsapp/config.js | 90 + src/topsapp/index.js | 9 + src/topsapp/manager.js | 372 ++ 10 files changed, 11952 insertions(+), 2 deletions(-) create mode 100644 TOPSAPP-INTEGRATION.md create mode 100644 material/ManualApiTopSapp.txt create mode 100644 src/topsapp/api.js create mode 100644 src/topsapp/config.js create mode 100644 src/topsapp/index.js create mode 100644 src/topsapp/manager.js diff --git a/.env.example b/.env.example index ba10d79..b7245e1 100644 --- a/.env.example +++ b/.env.example @@ -9,3 +9,11 @@ DEFAULT_SSH_PASSWORD=password # Configurações do bot BOT_DEBUG=true ALLOWED_USERS=123456789,987654321 + +# Configurações TopSapp - Instância Guarai/Colmeia +TOPSAPP_GUARAI_USER=seu_usuario_guarai +TOPSAPP_GUARAI_PASS=sua_senha_guarai + +# Configurações TopSapp - Instância Pedro Afonso +TOPSAPP_PEDRO_AFONSO_USER=seu_usuario_pedro_afonso +TOPSAPP_PEDRO_AFONSO_PASS=sua_senha_pedro_afonso diff --git a/TOPSAPP-INTEGRATION.md b/TOPSAPP-INTEGRATION.md new file mode 100644 index 0000000..f658741 --- /dev/null +++ b/TOPSAPP-INTEGRATION.md @@ -0,0 +1,202 @@ +# Integração TopSapp - Bot de Ajuda + +## 📋 Visão Geral + +Esta integração permite ao bot interagir com o sistema TopSapp para gerenciar clientes, faturas e serviços através de comandos naturais no Telegram. + +## 🏢 Instâncias Configuradas + +### Guarai/Colmeia +- **Host**: 131.0.192.6 +- **Porta**: 443 (HTTPS) +- **Localização**: Guarai e Colmeia + +### Pedro Afonso +- **Host**: 45.189.140.18 +- **Porta**: 443 (HTTPS) +- **Localização**: Pedro Afonso + +## ⚙️ Configuração + +### 1. Variáveis de Ambiente + +Adicione as seguintes variáveis no arquivo `.env`: + +```bash +# TopSapp - Instância Guarai/Colmeia +TOPSAPP_GUARAI_USER=seu_usuario_guarai +TOPSAPP_GUARAI_PASS=sua_senha_guarai + +# TopSapp - Instância Pedro Afonso +TOPSAPP_PEDRO_AFONSO_USER=seu_usuario_pedro_afonso +TOPSAPP_PEDRO_AFONSO_PASS=sua_senha_pedro_afonso +``` + +### 2. Dependências + +As seguintes dependências são necessárias: +- `axios` - Para requisições HTTP +- `form-data` - Para upload de formulários +- `https` - Para certificados SSL personalizados + +## 🔧 Comandos Disponíveis + +### 📊 Status do Sistema +``` +status topsapp +verificar topsapp +``` + +### 🔍 Buscar Clientes +``` +buscar cliente João da Silva +buscar cliente 123.456.789-10 +buscar cliente Guarai João (específica instância) +buscar cliente Pedro Afonso Maria +``` + +### 📄 Ver Faturas +``` +ver faturas 123.456.789-10 +ver faturas cliente123 +ver faturas Guarai 123.456.789-10 +``` + +### 💸 Gerar Boletos +``` +gerar boleto 12345 +gerar boleto fatura123 +``` + +### 🔒 Bloquear Clientes +``` +bloquear cliente 456 +bloquear 789 +``` + +### 🔓 Liberar Clientes +``` +liberar cliente 456 +liberar 789 +``` + +## 🚀 Funcionalidades + +### ✅ Autenticação Automática +- Login automático com credenciais configuradas +- Gerenciamento de sessões com expiração +- Renovação automática de tokens + +### 🌐 Multi-instância +- Detecção automática da instância por localização +- Roteamento de requisições para servidor correto +- Suporte a múltiplas configurações + +### 📋 Gestão de Clientes +- Busca por nome, CPF ou ID +- Visualização de dados completos +- Histórico de serviços e faturas + +### 💰 Sistema de Faturamento +- Listagem de faturas pendentes e pagas +- Geração de boletos em PDF +- Linha digitável para pagamento + +### 🔐 Controle de Serviços +- Bloqueio de serviços em massa +- Liberação de serviços bloqueados +- Confirmação antes de ações críticas + +### 📊 Relatórios e Status +- Status de configuração do sistema +- Estatísticas de uso por instância +- Monitoramento de conectividade + +## 🔧 Arquitetura + +### Classes Principais + +#### `TopSappAPI` +- Gerencia autenticação e sessões +- Executa requisições para a API +- Converte Base64 para PDF + +#### `TopSappConfig` +- Carrega configurações do ambiente +- Valida credenciais disponíveis +- Fornece dados de instâncias + +#### `TopSappManager` +- Interface principal para o bot +- Coordena operações complexas +- Trata erros e formatação + +## 📝 Logs e Debug + +O sistema gera logs detalhados: +- `🎯` - Inicialização de componentes +- `🔐` - Operações de autenticação +- `📡` - Requisições para API +- `✅` - Operações bem-sucedidas +- `❌` - Erros e falhas + +## ⚠️ Considerações de Segurança + +- Certificados SSL auto-assinados são aceitos +- Sessões expiram automaticamente em 30 minutos +- Credenciais são armazenadas em variáveis de ambiente +- Timeout de 10 segundos para requisições + +## 🐛 Troubleshooting + +### Erro de Autenticação +1. Verificar credenciais no `.env` +2. Testar login manual no TopSapp +3. Verificar conectividade com o servidor + +### Timeout de Conexão +1. Verificar conectividade de rede +2. Confirmar se os serviços estão online +3. Ajustar timeout se necessário + +### Erro de Certificado SSL +- O sistema já está configurado para aceitar certificados auto-assinados +- Verificar se o hostname está correto + +## 📈 Métricas de Performance + +- Sessões mantidas por até 30 minutos +- Timeout de requisições: 10 segundos +- Suporte a operações simultâneas +- Cache de configurações carregadas + +## 🔄 Manutenção + +### Limpeza de Sessões +- Sessões expiradas são limpas automaticamente +- Intervalo de limpeza: 10 minutos + +### Renovação de Tokens +- Detecção automática de expiração +- Re-autenticação transparente +- Sem interrupção do serviço + +--- + +## 💡 Exemplos de Uso + +### Fluxo Completo de Atendimento +1. `buscar cliente João da Silva` +2. `ver faturas 123.456.789-10` +3. `gerar boleto 12345` +4. `bloquear cliente 456` (se necessário) + +### Verificação de Status +1. `status topsapp` +2. Verificar configurações +3. Testar conectividade + +### Operações por Localização +- `buscar cliente Guarai João` → Busca apenas em Guarai/Colmeia +- `buscar cliente Pedro Afonso Maria` → Busca apenas em Pedro Afonso +- `buscar cliente João` → Busca em todas as instâncias diff --git a/material/ManualApiTopSapp.txt b/material/ManualApiTopSapp.txt new file mode 100644 index 0000000..f63389f --- /dev/null +++ b/material/ManualApiTopSapp.txt @@ -0,0 +1,10253 @@ +A ti + + TopSapp +API + + Controle de Revisões + +Revisão + +Data + +25 + +09/06/2021 + +Descrição +- Adicionado informações sobre o pagamento no action +‘ObterDocReceber/:idFatura’. +- Adicionado novos filtros no action +“ObterDocReceber/Sincronizar”. +- Alterado o retorno da situação das faturas parceladas para 1. + +24 + +20/04/2021 + +- Adicionado informações de DHCP no action +‘ObterClientesServicos’, assim como o parâmetro ‘agentCircuit’ +para filtro. +- Ajuste do filtro por estado do action ‘ObterClientesServicos’, +agora é possível consultar todos os serviços com base no estado +informado, sem que seja necessário informar o idCliente. +- Adicionado o action ‘DesconectarServico’. +- Adicionado parâmetro para filtro e listagem de status da conexão +do usuário no action ‘ObterClientesServicos’. +- Adicionado o action ‘ObterServicosRecorrencia’. +- Adicionado o action ‘ObterContas’. +- Adicionado o action ‘ProcessarRecorrencia’. +- Adicionado o action ‘GerarRecorrencia’. +- Adicionado o action ‘ObterOlts’. +- Adicionado o action ‘ObterPoolV6’. +- Adicionado o action ‘ObterPoolV4’. +- Adicionado o action ‘ObterVendedores’. +- Adicionado o action ‘ObterVencimentos’. +- Adicionado o action ‘CadastrarClienteServico’. +- Adicionado o action ‘CadastrarCliente’. +- Adicionado o action ‘ObterGrupos’ para obter a lista dos grupos +de clientes. +- Adicionado o action ‘ObterRegiao’ para obter a lista das regiões +cadastradas. +- Adicionado o action ‘ObterCFOP’ para obter a lista de CFOP’s + + cadastrados. +23 + +02/12/2020 + +- Adicionado action para obter informações do comodato +buscando por serial. (ObterComodatoSerial). +- Adicionado parâmetro “idAtendimento” no action +“AdicionarSuporte”. + +22 + +06/11/2020 + +- Adicionado action “AlterarContrato” para alterar o estado do +contrato cadastrado no sistema. +- Adicionado action “ObterContratos” para listar todos os +contratos cadastrados no sistema. +- Adicionado parâmetro “idServico” para filtrar as faturas em +“ObterDocReceberDadosFatura”. +- Adicionado parâmetro “desativado” para filtrar funcionários em +“ObterFuncionarios”. +- Adicionado action para obter os bairros cadastrados no sistema. +“ObterBairros”. +- Adicionado action para obter os serviços cadastrados. +“ObterServicos”. +- Adicionado novos campos no retorno do “ObterViabilidade”. +- Adicionado o plano do serviço vinculado a ocorrência em +“ObterSuporte”. +- Adicionado parâmetro “outrasInformacoes” para o suporte em +“AdicionarSuporte”. +- Adicionado a consulta de documentos a receber com múltiplos +clientes informados através do parâmetro “idCliente” em +“ObterDocReceber”. +- Adicionado campo de última modificação no documento a +receber, em “ObterDocReceber”. +- + +Adicionado + +parâmetro + +‘idServico” + +para + +filtro + +no + +“ObterDocReceber”. +- Adicionado a tecnologia e data final do último contrato do +serviço em “ObterClientesServicosAcessos”. +- + +Removida + +adicionado + +obrigatoriedade + +endereço + +e + +do + +contato + +parâmetro +de + +“idCliente” + +instalação + +do + +e + +action + + “ObterClientesServicos”. +- Adicionada permissão “calcDadosAcesso” para consulta de +dados de acesso no action “ObterClientesServicos”. +- Adicionado action “QuitarDocReceber” para quitar documentos +a receber. +21 + +05/09/2019 + +- Adicionada função para obter lista de comodato para sincronizar +“ObterComodato/Sincronizar”. (Utilizada para obter os comodatos +adicionados/alterados que ainda não foram sincronizados) +- Adicionada função para obter os dados de um comodato +especifico “ObterComodato/:id”. +- Adicionada função para informar que determinado comodato foi +sincronizado + +“ObterComodato/Sincronizar/:id”. + +(Utilizar + +em + +conjunto com a função “ObterComodato/Sincronizar”) +20 + +31/05/2019 + +- Adicionado novos parâmetros na função LiberacaoConfianca. +- Adicionada nova função para obter os logs do servidor radius +“ObterLogsRadius”. + +19 + +01/04/2019 + +- + +Adicionado + +novos + +dados + +e + +novos + +filtros + +à + +função + +ObterClientesServicosAcessos. +18 + +08/03/2019 + +- Adicionada função para obter os dados de um cliente especifico +“ObterClientes/:idcliente”. (Trará informações mais detalhadas +que a função ObterClientes e poderá receber novos dados +posteriormente) +- Adicionada função para obter lista de clientes para sincronizar +“ObterClientes/Sincronizar”. (Utilizada para obter os clientes +adicionados/alterados que ainda não foram sincronizados) +- Adicionada função para informar que determinado cliente foi +sincronizado “ObterClientes/Sincronizar/:idcliente”. (Utilizar em +conjunto com a função “ObterClientes/Sincronizar”) +- Adicionada função para obter os dados de uma fatura especifica +“ObterDocReceber/:idfatura”. (Trará informações mais detalhadas +que a função ObterDocReceber e poderá receber novos dados +posteriormente) +- Adicionada função para obter lista de faturas para sincronizar + + “ObterDocReceber/Sincronizar”. (Utilizada para obter as faturas +adicionadas/alteradas que ainda não foram sincronizadas) +- Adicionada função para informar que determinada fatura foi +sincronizada “ObterDocReceber/Sincronizar/:idfatura”. (Utilizar +em conjunto com a função “ObterDocReceber/Sincronizar”) +- Adicionado novos dados no retorno da função ObterClientes. +17 + +19/11/2018 + +- Adicionada função para obter lista dos concentradores +cadastrados no sistema “ObterConcentradores”. +- Adicionada função para obter lista dos projetos cadastrados no +TopMaps “ObterProjetos”. +- Adicionada função para obter lista das CTO cadastradas no +TopMaps “ObterCTO”. +- Adicionada função para obter lista das portas cadastradas no +TopMaps “ObterCTOPortas”. +- Adicionado novos campos na função AlterarServico. +- Adicionado na função ObterClientesServicos os campos para +projeto, CTO e porta. +- + +Adicionado + +novos + +filtros + +nas + +funções + +ObterClientes, + +ObterClientesServicos e ObterSuporte. +16 + +24/09/2018 + +- Adicionado na função ObterClientes os campos para data de +cadastro, bloqueio e desativação. +- Adicionado na função ObterClientesServicos os campos para +data de cadastro, ativação, bloqueio e desativação. + +15 + +06/03/2018 + +- Adicionado novos filtros na função ObterDocReceber. +- Adicionado novos campos no retorno das funções ObterClientes +e ObterClientesServicos. +- Adicionado novos campos na função AlterarServico. +- Adicionadas novas funções: ObterAP, ObterPortas, ObterPerfis, +InformacoesServico e ProvisionarServico. + +14 + +20/10/2017 + +- Adicionada opção para alterar a senha de acesso a central do +assinante do cliente na função “AlterarClienteDados”. + +13 + +13/07/2017 + +- Adicionada função para realizar a liberação em confiança do +cliente “LiberacaoConfianca”. + + - Ajustado tipo do campo id_servico no retorno da função +“ObterSuporte”. +12 + +10/04/2017 + +- Adicionado novos filtros e novos dados no retorno da função +“ObterSuporte”. +- Adicionado novos filtros e novos dados no retorno da função +“ObterClientesServicos”. +- Adicionado novos filtros e novos dados no retorno da função +“ObterClientes”. +- Adicionada função para obter os dados para pagamento de uma +fatura “ObterDocReceberDadosFatura”. +- Adicionada função para obter o histórico de acesso de um serviço +“ObterClientesServicosAcessos”. + +11 + +08/12/2016 + +- Adicionado novos filtros na função “ObterClientesServicos”. + +10 + +11/11/2016 + +- Adicionado novos dados no retorno da função “ObterClientes”. +- Adicionado novos filtros na função “ObterClientes”. +- Adicionadas novas funções para controle das viabilidades. +- Adicionada função para alterar alguns dados cadastrais do cliente +“AlterarClienteDados”. + +09 + +11/10/2016 + +- Adicionado novos dados no retorno da função “ObterClientes”. +- Adicionado novos filtros na função “ObterClientes”. +- Adicionada função para obter a lista dos funcionários cadastrados +“ObterFuncionarios”. + +08 + +27/09/2016 + +- + +Adicionado + +dados + +do + +consumo + +na + +função + +“ObterClientesServicos”. +07 + +21/09/2016 + +- Alterado o nome de alguns parâmetros: +- fileName > arquivoNome; +- fileType > arquivoTipo. +- Alterado o nome de alguns campos no retorno das funções do +WS, para padronização, sendo eles: +- status > resultado; +- code > codigo; +- session > sessao; +- user_id > id_usuario; + + - user_name > nome_usuario; +- result > dados; +- mac_list_add > mac_list_liberar; +- fileName > arquivoNome; +- fileType > arquivoTipo. +- Alterado o padrão de retorno de text/html para application/json. +- Alterado o código retornado nas falhas de 200 para 400, 403 e +500, de acordo com cada erro, sendo: +- 400: quando não for enviado algum parâmetro necessário; +quanto for enviado o valor de algum parâmetro de forma incorreta; +- 403: erro na sessão; erro no login; erro de permissão; +dispositivo pendente de liberação; +- 500: erro interno na execução do WS. +- + +Adicionada + +função + +para + +finalizar + +as + +ocorrências + +“FinalizarSuporte”. +- Adicionada função para listar os operadores “ObterOperadores”. +- Alterado o retorno do status 404 para application/json. +06 + +14/06/2016 + +- Implementação de algumas funções financeiras e de alguns +parâmetros novos para as funções existentes. + +05 + +17/03/2016 + +- Adicionada função para obter os dados da Empresa +“ObterConfiguracoes”. +- + +Adicionado + +o + +campo + +“cor” + +no + +retorno + +da + +função + +ObterClientesStatus. +04 + +07/03/2016 + +- Adicionada função para listar arquivos de uma ocorrência +“ObterSuporteArquivos”. +- Adicionada função para obter base64 de um arquivo +“ObterSuporteBase64”. +- Adicionado os campos id_cliente e id_servico no retorno da +função ObterSuporte. + +03 + +18/12/2015 + +- + +Adicionados + +novos + +campos + +no + +retorno + +da + +função + +“ObterClientesServicos”. +- Adicionado regras de edição na função “ObterClientesServicos” +para cada tipo de serviço. + + 02 + +01/12/2015 + +- Adicionada função para finalizar a sessão “Logout”. +- Adicionado no retorno das funções “ObterClientes” e +“ObterClientesServicos” o campo id_status. +- + +Adicionada + +função + +para + +anexar + +arquivos + +ao + +suporte + +listar + +documentos + +a + +receber + +“AdicionarSuporteArquivo”. +01 + +30/11/2015 + +- + +Adicionada + +função + +para + +“ObterDocReceber”. +- Adicionada função para listar documentos “ObterDocumentos”. +- Adicionada função para listar portadores “ObterPortadores”. +- Adicionado parâmetros para filtrar o período na função +“ObterSuporte”. +- Adicionada função para listar bases “ObterBases”. +00 + +16/11/2015 + +- Emissão Inicial. + + ÍNDICE +1 INTRODUÇÃO ................................................................................................................... 14 +2 API ........................................................................................................................................ 15 +2.1 INTRODUÇÃO ................................................................................................................ 15 +2.2 ENDPOINT ....................................................................................................................... 15 +2.3 EXEMPLOS DE UTILIZAÇÃO USANDO CURL ...................................................... 15 +3 FUNÇÕES ............................................................................................................................ 16 +3.1 SESSÃO ............................................................................................................................. 16 +3.1.1 Iniciar sessão .................................................................................................................. 16 +3.1.2 Finalizar sessão .............................................................................................................. 17 +3.2 CIDADES .......................................................................................................................... 18 +3.2.1 Listar cidades ................................................................................................................. 18 +3.2.2 Obter dados da Empresa .............................................................................................. 19 +3.2.3 Obter bairros cadastrados ............................................................................................ 20 +3.2.4 Obter regiões cadastradas............................................................................................. 21 +3.3 BASES ............................................................................................................................... 22 +3.3.1 Listar bases..................................................................................................................... 22 +3.3.2 Listar concentradores ................................................................................................... 23 +3.4 CLIENTES ........................................................................................................................ 24 +3.4.1 Listar status dos clientes ............................................................................................... 24 +3.4.2 Listar clientes ................................................................................................................. 25 +3.4.3 Listar serviços de um cliente ........................................................................................ 27 +3.4.4 Listar histórico de conexão de um serviço................................................................... 29 +3.4.5 Alterar dados do cliente ................................................................................................ 31 +3.4.6 Alterar status do cliente ................................................................................................ 32 +3.4.7 Alterar status do serviço ............................................................................................... 33 +3.4.8 Alterar serviço................................................................................................................ 34 +3.4.9 Listar AP ........................................................................................................................ 36 +3.4.10 Listar Portas................................................................................................................. 37 +3.4.11 Listar Perfis .................................................................................................................. 38 +3.4.12 Obter informações técnicas......................................................................................... 39 +3.4.13 Provisionar serviço ...................................................................................................... 40 + + 3.4.14 Listar Projetos ............................................................................................................. 41 +3.4.15 Listar CTO ................................................................................................................... 42 +3.4.16 Listar Portas da CTO .................................................................................................. 43 +3.4.17 Listar clientes para sincronização .............................................................................. 44 +3.4.18 Definir cliente sincronizado ........................................................................................ 46 +3.4.19 Obter dados de um cliente .......................................................................................... 47 +3.4.20 Listar comodato para sincronização .......................................................................... 48 +3.4.21 Definir comodato sincronizado .................................................................................. 50 +3.4.22 Obter dados de um comodato ..................................................................................... 51 +3.4.23 Cadastrar cliente ......................................................................................................... 52 +3.4.24 Obter grupos de clientes ............................................................................................. 56 +3.4.25 Obter dados de um comodato via serial .................................................................... 57 +3.4.26 Cadastrar Serviços do Cliente. ................................................................................... 58 +3.4.27 Desconectar Serviço..................................................................................................... 62 +3.5 SUPORTE ......................................................................................................................... 63 +3.5.1 Listar categorias do suporte ......................................................................................... 63 +3.5.2 Listar os técnicos ............................................................................................................ 64 +3.5.3 Listar suportes ............................................................................................................... 65 +3.5.4 Obter histórico de uma ocorrência .............................................................................. 67 +3.5.5 Adicionar histórico em uma ocorrência ...................................................................... 68 +3.5.6 Iniciar suporte ................................................................................................................ 69 +3.5.7 Encaminhar uma ocorrência para outro técnico ........................................................ 70 +3.5.8 Anexar arquivo em uma ocorrência ............................................................................ 71 +3.5.9 Obter arquivos de uma ocorrência .............................................................................. 72 +3.5.10 Obter base64 de um arquivo....................................................................................... 73 +3.5.11 Alterar estado de atendimento de um suporte .......................................................... 74 +3.5.12 Listar tipos de atendimento do suporte ..................................................................... 75 +3.5.13 Finalizar suporte .......................................................................................................... 76 +3.5.14 Obter últimos logs do servidor radius ....................................................................... 77 +3.6 VIABILIDADE ................................................................................................................. 78 +3.6.1 Listar categorias das viabilidades ................................................................................ 78 +3.6.2 Listar viabilidades ......................................................................................................... 79 +3.6.3 Obter histórico de uma viabilidade.............................................................................. 81 +3.6.4 Adicionar histórico em uma viabilidade...................................................................... 82 + + 3.6.5 Iniciar viabilidade .......................................................................................................... 83 +3.6.6 Encaminhar uma viabilidade para outro técnico ....................................................... 85 +3.6.7 Anexar arquivo em uma viabilidade............................................................................ 86 +3.6.8 Obter arquivos de uma viabilidade.............................................................................. 87 +3.6.9 Obter base64 de um arquivo ........................................................................................ 88 +3.7 FINANCEIRO .................................................................................................................. 89 +3.7.1 Obter documentos a receber ......................................................................................... 89 +3.7.2 Adicionar documento a receber ................................................................................... 91 +3.7.3 Editar documento a receber ......................................................................................... 92 +3.7.4 Enviar documento a receber por e-mail (boleto) ........................................................ 93 +3.7.5 Obter base64 de um documento a receber (boleto) .................................................... 94 +3.7.6 Obter dados de pagamento de um documento a receber (boleto) ............................. 95 +3.7.7 Obter lista de documentos ............................................................................................ 96 +3.7.8 Obter lista de portadores .............................................................................................. 97 +3.7.9 Obter lista de Plano de Contas ..................................................................................... 98 +3.7.10 Liberação em confiança .............................................................................................. 99 +3.7.11 Listar faturas para sincronização ............................................................................ 100 +3.7.12 Definir fatura sincronizada....................................................................................... 102 +3.7.13 Obter dados de uma fatura ....................................................................................... 103 +3.7.14 Quitar documento a receber ..................................................................................... 104 +3.7.15 Obter lista de Vencimentos ....................................................................................... 105 +3.7.16 Obter lista de Vendedores......................................................................................... 106 +3.7.17 Gerar Recorrência ..................................................................................................... 107 +3.7.18 Processar Recorrência ............................................................................................... 109 +3.7.19 Obter Contas .............................................................................................................. 110 +3.8 DEPARTAMENTO PESSOAL .................................................................................... 111 +3.8.1 Obter lista dos funcionários cadastrados no sistema ............................................... 111 +3.9 OPERADORES .............................................................................................................. 112 +3.9.1 Obter lista dos operadores do sistema ....................................................................... 112 +3.10 SERVIÇOS .................................................................................................................... 113 +3.10.1 Obter serviços cadastrados ....................................................................................... 113 +3.10.2 Obter Pool IPv4 ......................................................................................................... 115 +3.10.3 Obter Pool IPv6 ......................................................................................................... 116 +3.10.4 Obter Serviços Recorrência ...................................................................................... 117 + + 3.11 CONTRATOS ............................................................................................................... 118 +3.11.1 Obter contratos cadastrados..................................................................................... 118 +3.11.2 Alterar contratos cadastrados .................................................................................. 119 +3.12 FISCAL ......................................................................................................................... 120 +3.12.1 Obter CFOP’s ............................................................................................................ 120 +3.13 FTTH ............................................................................................................................. 121 +3.13.1 Obter OLT’s............................................................................................................... 121 +4 ERRO NA SOLICITAÇÃO ............................................................................................. 122 + + 1 INTRODUÇÃO + +Este documento define as formas de acesso remoto aos serviços do TopSapp. + +O TopSapp é um produto do Grupo MultiWare Tecnologia, com sede no município de SinopMT, que está pronto para te levar a vanguarda da tecnologia em Gestão de Telecomunicação, +desde o ano de 2001, te levando com rapidez e segurança exatamente para onde você quer +chegar. + +O produto TOPSAPP, além de auxiliar na administração das empresas de telecomunicações, +vem contribuindo com ferramentas que ajudam no melhor desempenho das redes de +interatividade com os seus usuários finais. + + 2 API + +2.1 INTRODUÇÃO + +Esta API é REST e fornece os resultados em JSON, sendo adequada a todos os tipos de +usuários, de baixo a alto volume, permitindo a consulta e utilização de diversas opções +disponíveis no sistema. + +2.2 ENDPOINT + +O Endpoint base dependerá de cada servidor e será construído do seguinte modo: +https://iplinuxluatpanel:9910/ + +2.3 EXEMPLOS DE UTILIZAÇÃO USANDO CURL + +Para login: +curl + +-X + +POST + +-k + +-F + +'usuario=xxx' + +-F + +'senha=xxx' + +-F + +'identificador=xxx' + +-F + +'idUsuario=xxx' + +-F + +'identificador=xxx' + +-F + +'idUsuario=xxx' + +-F + +'identificador=xxx' + +https://iplinuxluatpanel:9910/Login + +Para obter a lista de clientes: +curl + +-X + +POST + +-k + +-F + +'sessao=xxx' + +https://iplinuxluatpanel:9910/ObterClientes + +Para finalizar a sessão: +curl + +-X + +POST + +-k + +-F + +'sessao=xxx' + +https://iplinuxluatpanel:9910/Logout + + 3 FUNÇÕES + +3.1 SESSÃO + +3.1.1 Iniciar sessão +Realiza o login do usuário, retornando um código de sessão, que será desativada após 60 +minutos de inatividade. + +Informações: +Action +Método +Formato de resposta + +Login +Post +JSON + +Parâmetros de envio: +Tag +usuario +senha +identificador + +Tipo +String +String +String + +Padrão +- + +Obrigatório +Sim +Sim +Sim + +Descrição +Operador de acesso do sistema TopSapp. +Senha de acesso. +Identificador de origem do acesso que deverá +estar liberado para conseguir utilizar a API. A +liberação deve ser feita no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"codigo":"0", +"msg":"Login realizado com sucesso", +"sessao":"f6b113b19eb70373010d0e5092467f3d", +"id_usuario":15, +"nome_usuario":"TOPSAPP API" +} + + 3.1.2 Finalizar sessão +Finaliza a sessão do usuário. + +Informações: +Action +Método +Formato de resposta + +Logout +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true +} + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + + 3.2 CIDADES + +3.2.1 Listar cidades +Função utilizada para obter a lista das cidades cadastradas no sistema. + +Informações: +Action +Método +Formato de resposta + +ObterCidades +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informação. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":1, +"cidade":"SINOP" +} +] +} + + 3.2.2 Obter dados da Empresa +Função utilizada para obter os dados, da Empresa, configurados na cidade solicitada. + +Informações: +Action +Método +Formato de resposta + +ObterConfiguracoes +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informação. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":1, +"razao_social":" MULTIWARE TECNOLOGIA ", +"fantasia":"MULTIWARE TECNOLOGIA", +"endereco":"RUA DAS CEREJEIRAS", +"numero":"1987", +"bairro":"JD. PARAISO", +"telefone":"(66)3531-9741", +"email":"noc@topsapp.com.br", +"cnpj":"00.000.000/0000-00", +"cidade":"Sinop", +"cep":"78556-106" +} +] +} + + 3.2.3 Obter bairros cadastrados +Função utilizada para obter os bairros cadastrados no sistema. + +Informações: +Action +Método +Formato de resposta + +ObterBairros +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"status": true, +"dados": [ +{ +"id": 19, +"cidade": 4, +"bairro": "PRIMAVERAS" +}, +{ +"id": 18, +"cidade": 4, +"bairro": "VIOLETAS" +}, +{ +"id": 17, +"cidade": 4, +"bairro": "FIGUEIRAS" +} +] +} + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter os +bairros. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + + 3.2.4 Obter regiões cadastradas +Função utilizada para obter as regiões cadastradas no sistema. + +Informações: +Action +Método +Formato de resposta + +ObterRegiao +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"status": true, +"dados": [ +{ +"id": 1, +"descricao": "Setor comercial Norte" +}, +{ +"id": 2, +"descricao": "Setor comercial Sul" +} +] +} + + 3.3 BASES +3.3.1 Listar bases +Função utilizada para obter a lista das bases cadastradas no sistema. + +Informações: +Action +Método +Formato de resposta + +ObterBases +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informação. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":1, +"base":"BASE EXEMPLO", +"endereco":"RUA 10", +"numero":"10", +"bairro":"CENTRO", +"complemento":"", +"uf":"MT", +"cidade":"SINOP" +} +] +} + + 3.3.2 Listar concentradores +Função utilizada para obter a lista dos concentradores cadastrados no sistema. + +Informações: +Action +Método +Formato de resposta + +ObterConcentradores +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informação. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado": true, +"dados": [ +{ +"id": 1, +"descricao": "CONCENTRADOR 1", +"host": "192.168.0.1", +"host_remoto": "", +"porta": "8728", +"porta_telnet": "2350", +"usuario": "user", +"senha": "pas", +"tipo_equipamento": "mikrotik", +"identificador": "Concentrador-Sinop" +} +] +} + + 3.4 CLIENTES +3.4.1 Listar status dos clientes +Função utilizada para obter a lista dos status disponíveis para os clientes e serviços. + +Informações: +Action +Método +Formato de resposta + +ObterClientesStatus +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Não + +idStatus + +Inteiro + +- + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informação. +Código do status que deseja obter +informação. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":2, +"status":"BLOQUEADO", +"tipo":"bloqueado", +"cor":"#D03E3E" +}, +{ +"id":4, +"status":"DESATIVADO", +"tipo":"desativado", +"cor":"#753AC5" +} +] +} + + 3.4.2 Listar clientes +Função utilizada para obter a lista dos clientes cadastrados no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterClientes +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCliente + +Inteiro + +- + +Não + +estadoCliente + +Inteiro + +012 + +Não + +Código do usuário obtido ao realizar +o login. +Código do cliente que deseja obter +informação. +Estado do cliente que deseja obter +informação. +0 = liberados +1 = bloqueados +2 = bloqueados parcialmente +3 = desativados + +idCidade + +Inteiro + +Todas + +Não + +tipoPessoa + +String + +- + +Não + +cpfCnpj + +String + +- + +Não + +representanteCargo String + +- + +Não + +idBase + +Inteiro + +Todas + +Não + +limiteInicio + +Inteiro + +- + +Não + +limiteRegistros + +Inteiro + +- + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Ex.: Clientes liberados+bloqueados +enviar 01. +Clientes +bloqueados+desativados +enviar 13. +Código da cidade que deseja obter +informação. +Valor deverá ser: +fisica > obter somente os cadastros +Pessoa Física. +juridica > obter somente os cadastros +Pessoa Jurídica. +CPF ou CNPJ do cadastro que deseja +obter informação. +Cargo do representante do cadastro +que deseja obter informação. +Código da base que deseja obter +informação. +Registro a partir do qual deseja obter +informação. +Quantidade de registros que deseja +receber na listagem. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que + + deverá estar liberado para conseguir +utilizar a API. A liberação deve ser +feita no sistema TopSapp. +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":01, +"nome":"CLIENTE 01", +"fantasia":"CLIENTE 01", +"pessoa":"fisica", +"cpfcnpj":"111.111.111-11", +"rg": "1787330-4 SSP/MT", +"inscricao_estadual": "ISENTO", +"inscricao_municipal": "", +"classe_fiscal": "3", +"sexo":"F", +"data_nascimento": "1990-01-01", +"endereco":"RUA X", +"numero":"1", +"complemento": "", +"bairro":"BAIRRO X", +"cep":"00000-000", +"id_cidade":"1", +"cidade":"SINOP", +"cidade_identificacao": "Sinop", +"cidade_codigo_ibge": 5107909, +"uf":"MT", +"id_status":1, +"status":"liberado", +"email":"", +"telefone":"", +"celular":"", +"representante": "", +"representantecargo": "", +"representantecpf": "", +"representanterg": "", +"servicos_bases": "", +"senhacentral": "", +"desconto": "0.00", +"acrescimo": "0.00", +"data_cadastro": "2000-01-01", +"data_bloqueio": "2000-01-01", +"data_desativacao": "2000-01-01" +} +] +} + + 3.4.3 Listar serviços de um cliente +Função utilizada para obter a lista dos serviços de um cliente cadastrado no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterClientesServicos +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCliente + +Inteiro + +- + +Não + +idServico + +Inteiro + +- + +Não + +idBase + +Inteiro + +Todas + +Não + +estadoServico + +Inteiro + +012 + +Não + +Código do usuário obtido ao +realizar o login. +Código do cliente que deseja obter +informação. +Código do serviço que deseja +obter informação. +Código da base que deseja obter +informação. +Estado do serviço que deseja obter +informação. +0 = liberados +1 = bloqueados +2 = bloqueados parcialmente +3 = desativados + +periodoAcessoInicio + +Date + +- + +Não + +periodoAcessoTermino Date + +- + +Não + +calcDadosAcesso + +Boolean false + +Não + +agentCircuit + +String + +- + +Não + +conexao + +String + +- + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Ex.: +Serviços +liberados+bloqueados enviar 01. +Serviços bloqueados+desativados +enviar 13. +Data de acesso no formato +(01/01/2000). +Data de acesso no formato +(01/01/2000). +Habilita listagem de dados de +acesso do usuário. +Valor para filtrar serviços pelo +Agent Circuit ID cadastrado. +Filtrar por conexão, “online” ou +“offline”. +Código da sessão obtida ao +realizar o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A + + liberação deve ser feita no sistema +TopSapp. +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id_servico":1, +"id_cliente":1, +"id_base":1, +"base":"BASE DE ACESSO", +"id_ap": 1, +"id_porta": 1, +"id_perfil": 1, +"serial": "", +"tecnologia": "FTTH", +"vencimento_ultimo_contrato": "2022-01-31", +"dhcp_username": "123", +"dhcp_client_id": "123", +"dhcp_agent_circuit_id": "FTTH123", +"dhcp_liberar": false, +"servico":1, +"descricao":"10 MEGAS", +"servico_download":"10240K", +"servico_upload":"2048K", +"servico_franquia":"85899345920", +"servico_valor": "0.0", +"servico_acrescimo": "0.00", +"servico_desconto": "0.00", +"servico_total": "0.0", +"usuario":"testeapi@topsapp.com.br", +"senha":"topsappapi", +"tipo":"acesso", +"id_status":1, +"status":"liberado", +"ip": "000.000.000.000", +"mac":"00:00:00:00:00:00", +"mac_list":"00:00:00:00:00:00", +"mac_list_liberar":true, +"vencimento":"10", +"periodo_acesso_inicio":"2016-09-01", +"periodo_acesso_fim":"2016-09-30", +"periodo_acesso_upload":"0", +"periodo_acesso_download":"0", +"latitude":"", +"longitude":"", +"data_cadastro": "2000-01-01", +"data_ativacao": "2000-01-01", +"data_bloqueio": "2000-01-01", +"data_desativacao": "2000-01-01" +} +] +} + + 3.4.4 Listar histórico de conexão de um serviço +Função utilizada para obter o histórico de conexão de um serviço. + +Informações: +Action +Método +Formato de resposta + +ObterClientesServicosAcessos +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idServico + +Inteiro + +- + +Não + +dataInicial + +Date + +Não + +dataFinal + +Date + +estacao + +String + +Mês +atual +Mês +atual +- + +status + +String + +- + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Não +Não + +Código do usuário obtido ao +realizar o login. +Código do serviço que deseja +obter informação. +Data de conexão no formato +(01/01/2000). +Data de conexão no formato +(01/01/2000). +Nome da estação que deseja obter +informação. +Se enviado o valor “on” irá listar +todas as conexões ativas. Neste +caso o período será ignorado. +Código da sessão obtida ao +realizar o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A +liberação deve ser feita no sistema +TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado": true, +"dados": [ +{ +"id": 1, +"sessionid": "123", +"inicio": "2017-04-08 12:11:06-03", +"termino": "2017-04-08 13:20:34-03", +"id_servico": 1, +"usuario": "usuario", +"tempo": 10, +"upload": 1000, +"download": 1000, +"ip": "000.000.000.000", +"ipv6_prefix": "", +"ipv6_delegated": "", + + "ipv6_pool": "", +"mac": "00:00:00:00:00:00", +"estacao": "base-01" +} +] +} + + 3.4.5 Alterar dados do cliente +Função utilizada para alterar algumas informações de um cliente. + +Informações: +Action +Método +Formato de resposta + +AlterarClienteDados +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCliente + +Inteiro + +- + +Sim + +email +representante +representanteCargo +representanteCPF +representanteRG +senhaCentral + +String +String +String +String +String +String + +- + +Não +Não +Não +Não +Não +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true +} + +Código do usuário obtido ao realizar +o login. +Código do cliente que terá o status +alterado. +E-mail do cliente. +Nome do representante. +Cargo do representante. +CPF do representante. +RG do representante. +Senha para acessar a central do +assinante/APP do cliente. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser +feita no sistema TopSapp. + + 3.4.6 Alterar status do cliente +Função utilizada para alterar o status de um cliente. + +Informações: +Action +Método +Formato de resposta + +AlterarClienteStatus +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCliente + +Inteiro + +- + +Sim + +idStatus +sessao + +Inteiro +String + +- + +Sim +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true +} + +Código do usuário obtido ao realizar o +login. +Código do cliente que terá o status +alterado. +Código do novo status. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + + 3.4.7 Alterar status do serviço +Função utilizada para alterar o status de um serviço de um cliente. + +Informações: +Action +Método +Formato de resposta + +AlterarServicoStatus +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCliente + +Inteiro + +- + +Sim + +idServico + +Inteiro + +- + +Sim + +idStatus +sessao + +Inteiro +String + +- + +Sim +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true +} + +Código do usuário obtido ao realizar o +login. +Código do cliente que terá o status +alterado. +Código do serviço que terá o status +alterado. +Código do novo status. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + + 3.4.8 Alterar serviço +Função utilizada para alterar os dados de um serviço de um cliente. + +Informações: +Action +Método +Formato de resposta + +AlterarServico +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCliente + +Inteiro + +- + +Sim + +idServico +mac + +Inteiro +String + +- + +Sim +Não + +macList + +String + +- + +Não + +macListLiberar + +Boolean + +- + +Não + +senha +idBase +idStatus + +String +Inteiro +Inteiro + +- + +Não +Não +Não + +idAP +idPorta + +Inteiro +Inteiro + +- + +Não +Não + +idPerfil +idProjeto + +Inteiro +Inteiro + +- + +Não +Não + +idLigacao + +Inteiro + +- + +Não + +idLigacaoPorta +serial + +Inteiro +String + +- + +Não +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código do cliente que terá o serviço +alterado. +Código do serviço que será alterado. +MAC do equipamento que irá fazer a +conexão. +MAC do equipamento que irá conectar +no sinal. +True = Liberar o MAC para conectar no +sinal. +False = Não Liberar o MAC para +conectar no sinal. +Senha para realizar a conexão. +Código da base que o serviço pertence. +Código do novo status, caso queira +alterar. +Código do AP que o serviço pertence. +Código da porta de acesso que o serviço +pertence. +Código do perfil que o serviço pertence. +Código do projeto que o serviço +pertence. +Código da ligação que o serviço +pertence. +Código da porta que o serviço pertence. +Serial do equipamento de acesso do +serviço. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + + Exemplo de resultado: +Sucesso + +{ +"resultado":true +} + +Notas: +01 + +- Serviços do tipo “acesso” podem ter todos os campos listados +acima editados. +- Serviços do tipo “email” podem ter somente o campo senha +editado. +- Os serviços de outros tipos não serão editados. + + 3.4.9 Listar AP +Função utilizada para obter a lista dos AP disponíveis para os serviços. + +Informações: +Action +Método +Formato de resposta + +ObterAP +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idBase + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado": true, +"dados": [ +{ +"id": 1, +"identificacao": "", +"ssidolt": "" +} +] +} + +Código do usuário obtido ao realizar o +login. +Código da base que deseja obter +informação. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + + 3.4.10 Listar Portas +Função utilizada para obter a lista das portas disponíveis em um AP. + +Informações: +Action +Método +Formato de resposta + +ObterPortas +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idAP + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado": true, +"dados": [ +{ +"id": 1, +"identificacao": "", +"porta_slot": 1, +"porta_id": 1, +"alias": "1-1" +} +] +} + +Código do usuário obtido ao realizar o +login. +Código do AP que deseja obter +informação. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + + 3.4.11 Listar Perfis +Função utilizada para obter a lista dos perfis disponíveis em um AP. + +Informações: +Action +Método +Formato de resposta + +ObterPerfis +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idAP + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado": true, +"dados": [ +{ +"id": 1, +"identificacao": "" +} +] +} + +Código do usuário obtido ao realizar o +login. +Código do AP que deseja obter +informação. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + + 3.4.12 Obter informações técnicas +Função utilizada para obter algumas informações técnicas do serviço. + +Informações: +Action +Método +Formato de resposta + +InformacoesServico +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCliente + +Inteiro + +- + +Sim + +idServico + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código do cliente que deseja obter +informação. +Código do serviço que deseja obter +informação. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: (os dados e campos retornados podem variar de acordo com o tipo de +equipamento) +Sucesso + +{ +"dados": { +"usuario": "", +"mac": "", +"serial": "", +"idBase": "", +"base": "", +"idSSID": "", +"SSID": "", +"equipamento": "" +}, +"info": { +"rxpower": "", +"txpower": "", +"temperature": "", +"voltage": "" +} +} + + 3.4.13 Provisionar serviço +Função utilizada para provisionar manualmente o equipamento de um serviço. + +Informações: +Action +Método +Formato de resposta + +ProvisionarServico +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCliente + +Inteiro + +- + +Sim + +idServico + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"status":true +} + +Código do usuário obtido ao realizar o +login. +Código do cliente que deseja realizar o +procedimento. +Código do serviço que deseja realizar o +procedimento. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + + 3.4.14 Listar Projetos +Função utilizada para obter a lista dos projetos cadastrados no TopMaps. + +Informações: +Action +Método +Formato de resposta + +ObterProjetos +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado": true, +"dados": [ +{ +"id": 1, +"identificacao": "Projeto 1", +"cidade": "Sinop" +} +] +} + + 3.4.15 Listar CTO +Função utilizada para obter a lista das CTO cadastradas no TopMaps. + +Informações: +Action +Método +Formato de resposta + +ObterCTO +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idProjeto + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código do projeto que deseja obter +informação. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado": true, +"dados": [ +{ +"id_ligacao": 1, +"identificacao": "CTO 1" +} +] +} + + 3.4.16 Listar Portas da CTO +Função utilizada para obter a lista das portas de uma CTO cadastrada no TopMaps. + +Informações: +Action +Método +Formato de resposta + +ObterCTOPortas +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idLigacao + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da ligação que deseja obter +informação. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado": true, +"dados": [ +{ +"id": 1, +"identificacao": "Porta 1", +"id_projeto": 1, +"id_servico": 1, +"status": 1 +}, +{ +"id": 2, +"identificacao": "Porta 2", +"id_projeto": 1, +"id_servico": "", +"status": 0 +} +] +} + + 3.4.17 Listar clientes para sincronização +Função utilizada para obter a lista dos clientes cadastrados no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterClientes/Sincronizar +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +estadoCliente + +Inteiro + +Todos + +Não + +Código do usuário obtido ao +realizar o login. +Estado dos clientes que deseja +obter informação. +0 = liberados +1 = bloqueados +2 = bloqueados parcialmente +3 = desativados + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Ex.: +Clientes +liberados+bloqueados enviar 01. +Clientes bloqueados+desativados +enviar 13. +Código da sessão obtida ao +realizar o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A +liberação deve ser feita no sistema +TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id": 1, +"nome": "CLIENTE 1", +"id_cidade": 1, +"estado": "liberado" +}, +{ +"id": 2, +"nome": "CLIENTE 2", +"id_cidade": 1, +"estado": "desativado" +} + + ] +} + + 3.4.18 Definir cliente sincronizado +Função utilizada para definir que um cliente foi sincronizado. + +Informações: +Action +Método +Formato de resposta + +ObterClientes/Sincronizar/:idcliente (ex.: ObterClientes/Sincronizar/1) +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao +realizar o login. +Código da sessão obtida ao +realizar o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A +liberação deve ser feita no sistema +TopSapp. + + 3.4.19 Obter dados de um cliente +Função utilizada para obter os dados de um cliente cadastrado no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterClientes/:idcliente (ex.: ObterClientes/1) +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao +realizar o login. +Código da sessão obtida ao +realizar o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A +liberação deve ser feita no sistema +TopSapp. + + 3.4.20 Listar comodato para sincronização +Função utilizada para obter a lista dos comodatos cadastrados no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterComodato/Sincronizar +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +situacao + +Inteiro + +Todos + +Não + +Código do usuário obtido ao +realizar o login. +Situação do comodato que deseja +obter informação. +0 = Ativo +1 = Devolvido +2 = Extraviado +3 = Trocado +4 = Com Defeito + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id": 6, +"id_cliente": 12, +"id_produto": 9, +"situacao": "Devolvido" +}, +{ +"id": 7, +"id_cliente": 12, +"id_produto": 9, +"situacao": "Ativo" + +Ex.: Comodatos ativos+devolvidos +enviar 01. +Comodatos ativos+trocados enviar +13. +Código da sessão obtida ao +realizar o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A +liberação deve ser feita no sistema +TopSapp. + + } +] +} + + 3.4.21 Definir comodato sincronizado +Função utilizada para definir que um comodato foi sincronizado. + +Informações: +Action +Método +Formato de resposta + +ObterComodato/Sincronizar/:id (ex.: ObterComodato/Sincronizar/1) +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao +realizar o login. +Código da sessão obtida ao +realizar o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A +liberação deve ser feita no sistema +TopSapp. + + 3.4.22 Obter dados de um comodato +Função utilizada para obter os dados de um comodato cadastrado no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterComodato/:id (ex.: ObterComodato/1) +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao +realizar o login. +Código da sessão obtida ao +realizar o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A +liberação deve ser feita no sistema +TopSapp. + + 3.4.23 Cadastrar cliente +Função utilizada para obter a lista das categorias do suporte. + +Informações: +Action +Método +Formato de resposta + +CadastrarCliente +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +tipo_pessoa + +Inteiro + +1 + +Não + +nome + +String + +- + +Sim + +fantasia + +String + +- + +Não + +cpf_cnpj + +String + +- + +Sim + +Código do usuário obtido ao +realizar o login. +Código da cidade que deseja +obter informação. +Código da sessão obtida ao +realizar o login. +Identificador de origem do +acesso que deverá estar +liberado +para +conseguir +utilizar a API. A liberação +deve ser feita no sistema +TopSapp. +1 – Física +2 – Jurídica +Nome do cliente ou razão +social da empresa. +Nome fantasia do cliente ou +empresa. +CPF ou CNPJ do cliente. + +rg +rg_emissao + +String +String + +- + +Não +Não + +RG do cliente. +Data de emissão do RG. + +rg_orgao_emissor + +String + +- + +Não + +Órgão emissor do RG. + +rg_uf + +String + +- + +Não + +UF do RG. + +data_nascimento + +String + +- + +Sim + +sexo + +String + +- + +Não + +insc_estadual + +String + +- + +Não + +Data de nascimento do +cliente ou abertura em caso +de +pessoa +jurídica. +(dd/mm/aaaa). +M – Masculino +F – Feminino +Inscrição Estadual. + +celular + +String + +- + +Não + + celular1 +celular2 +telefone + +String +String +String + +- + +Não +Não +Não + +caixa_postal + +String + +- + +Não + +fax +email +endereco +numero +bairro +cidade +cep +complemento +edificio +nacionalidade +natural_cidade + +String +String +String +String +String +Inteiro +String +String +String +String +String + +- + +Não +Não +Sim +Sim +Sim +Sim +Sim +Não +Não +Não +Não + +natural_estado + +String + +- + +Não + +pai +mae +representante_nome + +String +String +String + +- + +Não +Não +Não + +representante_cpf + +String + +- + +Não + +representante_rg + +String + +- + +Não + +representante_cargo + +String + +- + +Não + +contato +estado_civil + +String +Inteiro + +- + +Não +Não + +cobranca +enviar_boleto + +Boolean +Boolean + +true +true + +Não +Não + +1 – Solteiro +2 – Casado +3 – Separado +4 – Divorciado +5 – Viúvo +6 – Outro +Gerar Cobrança +Enviar boleto por E-mail + +cobranca_email + +Boolean + +true + +Não + +Cobrança por E-mail + +cobrança_sms + +Boolean + +true + +Não + +Cobrança por SMS + +modalidade + +Inteiro + +2 + +Não + +1 – Administrativa +2 – Boleto +3 – Carteira +4 – Débito +5 – Fat.Eletronica + +Use o formato 00000-000 + + 6 – Pag.Recorrente +7 – Recorrência +id_documento +senha_central + +Inteiro +String + +- + +Não +Sim + +data_liberar + +String + +- + +Não + +data_desativar + +String + +- + +Não + +Senha +da +Central +do +Assinante +Liberar +cadastro +até +(dd/mm/aaaa) +Desativar em (dd/mm/aaaa) + +data_isentar + +String + +- + +Não + +Isentar até (dd/mm/aaaa) + +id_cliente_grupo + +Inteiro + +- + +Não + +id_regiao + +Integer + +- + +Não + +atualizar_mac + +Boolean + +false + +Não + +tipo_bloqueio + +Inteiro + +1 + +Não + +desativar_topnotificacoes +prioridade_ligacao + +Boolean +Boolean + +false +false + +Não +Não + +id_cliente_indicacao + +Inteiro + +false + +Não + +observacoes +observacoes_alerta +ocultar_senha +bloquear_cadastro +motivo_bloqueio_cadastro + +String +String +Boolean +Boolean +String + +false +false +- + +Não +Não +Não +Não +Não + +conjuge +profissao +tipo_residencia + +String +String +String + +- + +Não +Não +Não + +residencia +fiscal_endereco + +String +String + +- + +Não +Não + +fiscal_numero + +String + +- + +Não + +fiscal_bairro + +String + +- + +Não + +fiscal_complemento + +String + +- + +Não + +fiscal_cep + +String + +- + +Não + +fiscal_cidade + +Inteiro + +Suspensão de cliente com tela +de bloqueio. +1 – Com Notificação +2 – Sem Notificação + +Bloquear acesso ao cadastro. +Motivo do bloqueio do +cadastro. + + id_cfop + +Inteiro + +- + +Não + +tipo_ie + +Inteiro + +- + +Não + +iss_retido +fiscal_classe + +Boolean +Inteiro + +false +- + +Não +Não + +observacao_fiscal + +String + +- + +Não + +Exemplo de resultado: +Sucesso + +{ +"status": true, +"msg": "Cliente cadastrado com sucesso." +} + +1 – Contribuinte ICMS +2 – Contribuinte Isento +3 – Não Contribuinte +1 – Comercial +2 – Industrial +3 – Residencial +4 – Produtor Rural +5 – Adm Pública Estadual +6 – Prest. Serviço Telecom +7 – Missões Diplom. +8 – Igrejas +9 – Outros + + 3.4.24 Obter grupos de clientes +Função utilizada para obter a lista de grupo de clientes. + +Informações: +Action +Método +Formato de resposta + +ObterGrupos +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"status": true, +"dados": [ +{ +"id": 1, +"descricao": "Exemplo" +} +] +} + +Código do usuário obtido ao +realizar o login. +Código da sessão obtida ao +realizar o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A +liberação deve ser feita no sistema +TopSapp. + + 3.4.25 Obter dados de um comodato via serial +Função utilizada para obter os dados de um comodato cadastrado no sistema TopSapp através +do serial informado. + +Informações: +Action +Método +Formato de resposta + +ObterComodatoSerial +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +serial + +String + +- + +Sim + +Código do usuário obtido ao +realizar o login. +Código da sessão obtida ao +realizar o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A +liberação deve ser feita no sistema +TopSapp. +Serial do comodato que deseja +buscar informações. + + 3.4.26 Cadastrar Serviços do Cliente. +Função utilizada para efetuar o cadastro do serviço do cliente no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +CadastrarClienteServico +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão + +Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +cliente_id + +Inteiro + +- + +Sim + +servico_id + +Inteiro + +- + +Sim + +plano_contas + +Inteiro + +- + +Sim + +gerar_fatura + +Boolean + +desconto +desconto_vencimento + +Float +Float + +- + +Não +Não + +acrescimo +vencimento + +Float +Inteiro + +- + +Não +Sim + +data_ativacao + +String + +- + +Não + +Código de cadastro do +vencimento a ser utilizado. +Usar o formato dd/mm/aaaa. + +data_isentar + +String + +- + +Não + +Usar o formato dd/mm/aaaa. + +data_desativar + +String + +- + +Não + +Usar o formato dd/mm/aaaa. + +vendedor +email_cobranca + +Inteiro +String + +- + +Não +Não + +observacoes +tipo_atend + +String +Inteiro + +Não +2 +- Não +Urbano + +Código do usuário obtido ao +realizar o login. +Código da sessão obtida ao +realizar o login. +Identificador de origem do +acesso que deverá estar +liberado +para +conseguir +utilizar a API. A liberação +deve ser feita no sistema +TopSapp. + +Não + +1 – Rural, 2 - Urbano + + login + +String + +- + +Não + +senha + +String + +- + +Não + +mac +base + +String +Inteiro + +- + +Não +Não + +ipv4 +pool_ipv4 + +String +String + +- + +Não +Não + +tipo_pool_ipv4 + +Inteiro + +ipv6_wan + +String + +- + +Não + +ipv6_pool + +String + +- + +Não + +tipo_pool_ipv6 + +Inteiro + +ipv6_pd_lan + +String + +- + +Não + +dhcp_username + +String + +- + +Não + +dhcp_client_id + +String + +- + +Não + +dhcp_agent_circuit_id + +String + +- + +Não + +dhcp_liberar + +String + +- + +Não + +mac_list + +String + +- + +Não + +mac_list_liberar + +Boolean + +mac_list_chave + +String + +autenticar_concentrador + +Boolean + +Não + +criar_email_usuario + +Boolean + +Não + +limitar_franquia + +Boolean + +Não + +instalacao_responsavel + +String + +Não + +Não + +Não +- + +- + +Não + +Não + +Se torna obrigatório caso o +serviço informado seja do tipo +Acesso ou TV. +O valor deve ser informado +sem o domínio do cliente. +Se torna obrigatório caso o +serviço informado seja do tipo +Acesso ou TV. + +Se torna obrigatório caso o +serviço informado seja do tipo +Acesso ou TV. + +0 – Concentrador, 1 - Radius + +0 – Concentrador, 1 - Radius + + instalacao_contato + +String + +- + +Não + +instalacao_contato1 + +String + +- + +Não + +instalacao_cep + +String + +- + +Não + +instalacao_endereco + +String + +- + +Não + +instalacao_numero + +String + +- + +Não + +instalacao_bairro + +String + +- + +Não + +instalacao_complemento + +String + +- + +Não + +instalacao_cidade + +String + +- + +Não + +instalacao_uf + +String + +- + +Não + +instalacao_latitude + +String + +- + +Não + +instalacao_longitude + +String + +- + +Não + +tecnica_ssid + +Inteiro + +- + +Não + +tecnica_tecnico + +Inteiro + +- + +Não + +tecnica_sinal_porcentagem Inteiro + +- + +Não + +tecnica_sinal_dbm + +Inteiro + +- + +Não + +tecnica_throughput + +Inteiro + +- + +Não + +tecnica_tecnologia + +Inteiro + +NULL + +Não + +tecnica_ncaixa + +String + +- + +Não + +tecnica_nporta + +String + +- + +Não + +tecnica_ipreceptor + +String + +- + +Não + +tecnica_usuario + +String + +- + +Não + +tecnica_senha + +String + +- + +Não + +tecnica_observacoes + +String + +- + +Não + +ftth_ipgerencia + +String + +- + +Não + +ftth_onuid + +Inteiro + +- + +Não + +1 – FTTH, 2 -Rádio, 3 - UTP + + ftth_servport + +Inteiro + +- + +Não + +ftth_gemport + +Inteiro + +- + +Não + +ftth_splitter + +Inteiro + +- + +Não + +ftth_porta + +Inteiro + +- + +Não + +ftth_serial + +String + +- + +Não + +ftth_cabonumero + +String + +- + +Não + +ftth_portaolt + +Inteiro + +- + +Não + +ftth_perfil + +Inteiro + +- + +Não + +email_usuario + +String + +- + +Não + +email_senha + +String + +- + +Não + +email_quota + +Inteiro + +- + +Não + +tv_cas + +Inteiro + +- + +Não + +Obrigatório se o tipo do +serviço for Email. Não inserir +o domínio. +Obrigatório se o tipo do +serviço for Email. + +Obrigatório se o tipo do +serviço for TV. + +Exemplo de resultado: +Sucesso + +{ +"status": "true", +"msg": "Serviço cadastrado com sucesso!", +"dados": { +"cliente_id": 1, +"servico_id": 1 +} +} + + 3.4.27 Desconectar Serviço +Função utilizada para solicitar desconexão do serviço de um cliente cadastrado no sistema +TopSapp. + +Informações: +Action +Método +Formato de resposta + +DesconectarServico +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +id_servico + +Inteiro + +- + +Não + +sessao +identificador + +String +String + +- + +Sim +Sim + +Código do usuário obtido ao realizar o +login. +Código do serviço de acesso que deseja +realizar a solicitação de desconexão. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir utilizar +a API. A liberação deve ser feita no sistema +TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"status": true, +"msg": "Desconexão solicitada com sucesso." +} + + 3.5 SUPORTE +3.5.1 Listar categorias do suporte +Função utilizada para obter a lista das categorias do suporte. + +Informações: +Action +Método +Formato de resposta + +ObterSuporteCategorias +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Não + +sessao +identificador + +String +String + +- + +Sim +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informação. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir utilizar +a API. A liberação deve ser feita no sistema +TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":1, +"descricao":"ATIVAÇÃO" +}, +{ +"id":2, +"descricao":"CANCELAMENTO" +}, +{ +"id":3, +"descricao":"COBRANÇA" +} +] +} + + 3.5.2 Listar os técnicos +Função utilizada para obter a lista dos técnicos cadastrados no sistema. + +Informações: +Action +Método +Formato de resposta + +ObterTecnicos +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informação. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":4, +"nome":"JOÃO CARLOS" +}, +{ +"id":1, +"nome":"LUAN PAULO" +} +] +} + + 3.5.3 Listar suportes +Função utilizada para obter a lista dos suportes cadastrados no sistema. + +Informações: +Action +Método +Formato de resposta + +ObterSuporte +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idSuporte + +Inteiro + +- + +Não + +idCliente + +Inteiro + +- + +Não + +idTecnico + +Inteiro + +- + +Não + +idCategoria + +Inteiro + +- + +Não + +idAtendimento + +Inteiro + +- + +Não + +status + +Inteiro + +0 + +Não + +statusAtendimento + +Inteiro + +- + +Não + +idCidade + +Inteiro + +Todas + +Não + +dataInicial + +Date + +- + +Não + +dataFinal + +Date + +- + +Não + +dataFechamentoInicial Date + +- + +Não + +dataFechamentoFinal + +Date + +- + +Não + +operador + +String + +- + +Não + +ordenarTipo + +Inteiro + +0 + +Não + +ordenarRegra + +Inteiro + +0 + +Não + +Código do usuário obtido ao +realizar o login. +Código do suporte que deseja obter +informação. +Código do cliente que deseja obter +a lista de suportes. +Código do técnico que deseja obter +a lista de suportes. +Código da categoria que deseja +obter a lista de suportes. +Código da categoria que deseja +obter a lista de suportes. +0 – Suportes abertos +1 – Suportes finalizados +0 +– +Suportes +aguardando +atendimento +1 – Suportes em atendimento +2 – Suportes com atendimento +realizado +Código da cidade que deseja obter +a lista de suportes. +Data de abertura no formato +(01/01/2000). +Data de abertura no formato +(01/01/2000). +Data de finalização no formato +(01/01/2000). +Data de finalização no formato +(01/01/2000). +Operador +que +iniciou +o +atendimento. +0 – ascendente; +1 – descendente. +0 – Data de agendamento -> +prioridade -> código do suporte; +1 – Data de abertura -> código do + + limiteInicio + +Inteiro + +- + +Não + +limiteRegistros + +Inteiro + +- + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +suporte; +2 – Data de finalização -> código +do suporte; +3 – Código do suporte. +Registro a partir do qual deseja +obter informação. +Quantidade de registros que deseja +receber na listagem. +Código da sessão obtida ao realizar +o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A +liberação deve ser feita no sistema +TopSapp. + +Exemplo de resultado: +Sucesso + +{ + +} + +"resultado":true, +"dados":[{ +"id":231, +"id_cliente":8, +"id_servico":1, +"defeito":"fat aberta para teste", +"data":"2015-08-25", +"hora":"10:08:14", +"data_agendada":"2015-08-25", +"hora_agendada":"08:30", +"prioridade":"NORMAL", +"estado_suporte":1, +"estado_atendimento":2, +"nome":"TopSapp API", +"cpfcnpj":"111.111.111-11", +"endereco":"RUA DAS CEREJEIRAS", +"numero":"1987", +"bairro":"JD PARAISO", +"id_cidade":1, +"cidade":"SINOP", +"uf":"MT", +"telefone":"", +"celular":"", +"contato":"", +"usuario":"topsappapi@topsapp.com.br", +"id_tecnico":1, +"tecnico":"TopSapp API", +"id_categoria":1, +"categoria":"Ativação", +"id_tipo_atendimento":1, +"tipo_atendimento":"APONTAMENTO", +"ip":"", +"mac":"", +"base":"BASE DE TESTES", +"statusconexao":"liberado", +"operador": "topsapp" +} +] + + 3.5.4 Obter histórico de uma ocorrência +Função utilizada para obter o histórico de um suporte. + +Informações: +Action +Método +Formato de resposta + +ObterSuporteHistorico +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idSuporte + +Inteiro + +- + +Sim + +sessao +identificador + +String +String + +- + +Sim +Sim + +Código do usuário obtido ao realizar o +login. +Código do suporte que deseja obter +informação. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir utilizar +a API. A liberação deve ser feita no sistema +TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":317, +"descricao":"Ocorrência iniciada.", +"data":"2015-08-25", +"hora":"10:08:14", +"tipo":0, +"operador":"topsappapi" +}, +{ +"id":398, +"descricao":"Realizado alguns testes no +equipamento do cliente.", +"data":"2015-11-02", +"hora":"10:21:00", +"tipo":0, +"operador":"topsappapi " +} +] +} + +Notas: +02 + +tipo = 0 é resposta de um atendente +tipo = 1 é resposta do cliente. + + 3.5.5 Adicionar histórico em uma ocorrência +Função utilizada para adicionar histórico a um suporte existente. + +Informações: +Action +Método +Formato de resposta + +AdicionarSuporteHistorico +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idSuporte + +Inteiro + +- + +Sim + +descricao +data +hora +sessao +identificador + +Text +Date +Date +String +String + +- + +Sim +Não +Não +Sim +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true +} + +Código do usuário obtido ao realizar o +login. +Código do suporte que deseja adicionar +informação. +Histórico que será adicionado. +Data do histórico (01/01/2000). +Hora do histórico (00:00:00). +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir utilizar +a API. A liberação deve ser feita no sistema +TopSapp. + + 3.5.6 Iniciar suporte +Função utilizada para iniciar um suporte. + +Informações: +Action +Método +Formato de resposta + +AdicionarSuporte +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCliente + +Inteiro + +- + +Sim + +idServico + +Inteiro + +- + +Sim + +idCategoria + +Inteiro + +- + +Sim + +idAtendimento + +Inteiro + +- + +Não + +contato +contatoTelefone +descricao +outrasInformacoes +sessao + +String +String +Text +Text +String + +- + +Não +Não +Sim +Não +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"protocolo":317 +} + +Código do usuário obtido ao realizar o +login. +Código do cliente que deseja iniciar o +suporte. +Código do serviço que deseja iniciar o +suporte. +Código da categoria que deseja iniciar +o suporte. +Código para identificar o tipo de +atendimento a ser vinculado no +suporte. +Nome do contato do suporte. +Telefone do contato do suporte. +Descrição do problema. +Campo outras informações. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser +feita no sistema TopSapp. + + 3.5.7 Encaminhar uma ocorrência para outro técnico +Função utilizada para encaminhar uma ocorrência para outro técnico. + +Informações: +Action +Método +Formato de resposta + +EncaminharSuporte +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idSuporte +idTecnico + +Inteiro +Inteiro + +- + +Sim +Sim + +descricao +sessao + +Text +String + +- + +Sim +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true +} + +Código do usuário obtido ao realizar o +login. +Código do suporte que será encaminhado. +Código do técnico para o qual será +encaminhado o suporte +Descrição do encaminhamento. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + + 3.5.8 Anexar arquivo em uma ocorrência +Função utilizada para anexar um arquivo a uma ocorrência existente. + +Informações: +Action +Método +Formato de resposta + +AdicionarSuporteArquivo +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idSuporte + +Inteiro + +- + +Sim + +identificacao Text +arquivoNome Text +arquivoTipo Text + +- + +Sim +Sim +Sim + +base64 +sessao +identificador + +- + +Sim +Sim +Sim + +Text +String +String + +Exemplo de resultado: +Sucesso + +{ +"resultado":true +} + +Código do usuário obtido ao realizar o +login. +Código do suporte que deseja obter +informação. +Identificação do arquivo que será anexado. +Nome do arquivo que será anexado. +Tipo do arquivo que será anexado (EX: +"image/jpeg"). +Base64 do arquivo que será anexado. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita no +sistema TopSapp. + + 3.5.9 Obter arquivos de uma ocorrência +Função utilizada para obter os arquivos de um suporte. + +Informações: +Action +Método +Formato de resposta + +ObterSuporteArquivos +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idSuporte + +Inteiro + +- + +Sim + +sessao +identificador + +String +String + +- + +Sim +Sim + +Código do usuário obtido ao realizar o +login. +Código do suporte que deseja obter +informação. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir utilizar +a API. A liberação deve ser feita no sistema +TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"suporte_anexo_codigo":1, +"data":"2016-03-02 16:38:09.904785", +"operador":"topsappapi", +"arquivo_nome":"Imagem1.png", +"arquivo_tipo":"image/png", +"identificacao":"Imagem 1" +}, +{ +"suporte_anexo_codigo":2, +"data":"2016-03-03 09:23:44.203075", +"operador":" topsappapi ", +"arquivo_nome":"Imagem2.png", +"arquivo_tipo":"image/png", +"identificacao":"Imagem 2" +} +] +} + + 3.5.10 Obter base64 de um arquivo +Função utilizada para obter a base64 de um arquivo. + +Informações: +Action +Método +Formato de resposta + +ObterSuporteBase64 +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idArquivo + +Inteiro + +- + +Sim + +sessao +identificador + +String +String + +- + +Sim +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"base64":"" +} +] +} + +Código do usuário obtido ao realizar o +login. +Código do arquivo que deseja obter +informação. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir utilizar +a API. A liberação deve ser feita no sistema +TopSapp. + + 3.5.11 Alterar estado de atendimento de um suporte +Função utilizada para alterar o estado de atendimento de um suporte. + +Informações: +Action +Método +Formato de resposta + +AlterarSuporteStatus +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idSuporte + +Inteiro + +- + +Sim + +estadoAtendimento Inteiro + +- + +Sim + +descricao +data +hora +latitude + +Text +Date +Date +Text + +- + +Sim +Não +Não +Sim + +longitude + +Text + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true +} + +Código do usuário obtido ao realizar +o login. +Código do suporte que deseja obter +informação. +0 – Suporte aguardando atendimento +1 – Suporte em atendimento +2 – Suporte com atendimento +realizado +Descrição da operação realizada. +Data da operação (01/01/2000). +Hora da operação (00:00:00). +Coordenada do local que a operação +foi realizada. +Coordenada do local que a operação +foi realizada. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser +feita no sistema TopSapp. + + 3.5.12 Listar tipos de atendimento do suporte +Função utilizada para obter a lista dos tipos de atendimento do suporte. + +Informações: +Action +Método +Formato de resposta + +ObterSuporteTiposAtendimento +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Não + +sessao +identificador + +String +String + +- + +Sim +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informação. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir utilizar +a API. A liberação deve ser feita no sistema +TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":1, +"descricao":"TIPO DE ATENDIMENTO 1" +}, +{ +"id":2, +"descricao":" TIPO DE ATENDIMENTO 2" +} +] +} + + 3.5.13 Finalizar suporte +Função utilizada para finalizar um suporte. + +Informações: +Action +Método +Formato de resposta + +FinalizarSuporte +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idSuporte +descricao + +Inteiro +Texto + +- + +Sim +Sim + +sessao +identificador + +String +String + +- + +Sim +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +} + +Código do usuário obtido ao realizar o +login. +Código do suporte. +Histórico que será adicionado na +finalização do suporte. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir utilizar +a API. A liberação deve ser feita no sistema +TopSapp. + + 3.5.14 Obter últimos logs do servidor radius +Função utilizada para obter os últimos logs do servidor radius. + +Informações: +Action +Método +Formato de resposta + +ObterLogsRadius +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao +identificador + +String +String + +- + +Sim +Sim + +Exemplo de resultado: +Sucesso + +{ +"1": "Log 1", +"2": "Log 2" +} + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir utilizar +a API. A liberação deve ser feita no sistema +TopSapp. + + 3.6 VIABILIDADE +3.6.1 Listar categorias das viabilidades +Obtém a lista das categorias das viabilidades. + +Informações: +Action +Método +Formato de resposta + +ObterViabilidadeCategorias +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Não + +sessao +identificador + +String +String + +- + +Sim +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informação. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir utilizar +a API. A liberação deve ser feita no sistema +TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":1, +"descricao":"CATEGORIA 1" +}, +{ +"id":2, +"descricao":" CATEGORIA 2" +}, +{ +"id":3, +"descricao":" CATEGORIA 3" +} +] +} + + 3.6.2 Listar viabilidades +Obtêm a lista de viabilidades. + +Informações: +Action +Método +Formato de resposta + +ObterViabilidade +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idViabilidade + +Inteiro + +- + +Não + +idTecnico + +Inteiro + +- + +Não + +idCategoria + +Inteiro + +- + +Não + +status + +Inteiro + +0 + +Não + +statusAtendimento Inteiro + +- + +Não + +idCidade + +Inteiro + +Todas + +Não + +dataInicial + +Date + +- + +Não + +dataFinal + +Date + +- + +Não + +limiteInicio + +Inteiro + +- + +Não + +limiteRegistros + +Inteiro + +- + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ + +Código do usuário obtido ao realizar o +login. +Código da viabilidade que deseja obter +informação. +Código do técnico que deseja obter a +lista de Viabilidades. +Código da categoria que deseja obter a +lista de Viabilidades. +0 – Viabilidades abertas +1 – Viabilidades finalizadas +0 +– +Viabilidades +aguardando +atendimento +1 – Viabilidades em atendimento +2 – Viabilidades com atendimento +realizado +Código da cidade que deseja obter a +lista de Viabilidades. +Data de abertura no formato +(01/01/2000). +Data de abertura no formato +(01/01/2000). +Registro a partir do qual deseja obter +informação. +Quantidade de registros que deseja +receber na listagem. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser +feita no sistema TopSapp. + + { +"id":231, +"id_servico":1, +"data":"2015-08-25", +"hora":"10:08:14", +"data_agendada":"2015-08-25", +"hora_agendada":"08:30", +"prioridade":"NORMAL", +"estado_viabilidade": 0, +"estado_atendimento": 0, +"nome":"TopSapp API", +"cpfcnpj": "111.111.111-11", +"endereco":"RUA DAS CEREJEIRAS", +"numero":"1987", +"bairro":"JD PARAISO", +"id_cidade":1, +"cidade":"SINOP", +"uf":"MT", +"telefone":"", +"celular":"", +"contato":"", +"id_tecnico":1, +"tecnico":"TopSapp API", +"id_categoria": "", +"categoria": "" +} +] +} + + 3.6.3 Obter histórico de uma viabilidade +Obtêm o histórico de uma viabilidade. + +Informações: +Action +Método +Formato de resposta + +ObterViabilidadeHistorico +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idViabilidade Inteiro + +- + +Sim + +sessao +identificador + +- + +Sim +Sim + +String +String + +Código do usuário obtido ao realizar o +login. +Código da viabilidade que deseja obter +informação. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita no +sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id": 13, +"descricao": "Viabilidade reaberta.", +"data": "2016-07-12", +"hora": "10:36:14", +"tipo": 0, +"operador": "1" +}, +{ +"id": 14, +"descricao": "Viabilidade aprovada.", +"data": "2016-07-12", +"hora": "10:36:19", +"tipo": 0, +"operador": "1" +} +] +} + +Notas: +03 + +tipo = 0 é resposta de um atendente +tipo = 1 é resposta do cliente. + + 3.6.4 Adicionar histórico em uma viabilidade +Adiciona um histórico a uma viabilidade existente. + +Informações: +Action +Método +Formato de resposta + +AdicionarViabilidadeHistorico +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idViabilidade Inteiro + +- + +Sim + +descricao +sessao +identificador + +- + +Sim +Sim +Sim + +Text +String +String + +Exemplo de resultado: +Sucesso + +{ +"resultado":true +} + +Código do usuário obtido ao realizar o +login. +Código da viabilidade que deseja adicionar +informação. +Histórico que será adicionado. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita no +sistema TopSapp. + + 3.6.5 Iniciar viabilidade +Inicia uma nova viabilidade. + +Informações: +Action +Método +Formato de resposta + +AdicionarViabilidade +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +nome +endereco +numero +bairro +complemento +edificio +cep +telefone +celular +idCidade + +String +String +String +String +String +String +String +String +String +Inteiro + +- + +Sim +Não +Não +Não +Não +Não +Não +Não +Não +Sim + +idCategoria + +Inteiro + +- + +Não + +idServico + +Inteiro + +- + +Não + +idVencimento + +Inteiro + +- + +Não + +prioridade + +String + +- + +Não + +pessoa + +String + +fisica + +Não + +sexo + +String + +M + +Não + +dataNascimento + +Date + +- + +Não + +email +cpfCnpj +rg + +String +String +String + +- + +Não +Não +Não + +Código do usuário obtido ao realizar o +login. +Nome da pessoa cadastrada. +Endereço da pessoa cadastrada. +Endereço da pessoa cadastrada. +Endereço da pessoa cadastrada. +Endereço da pessoa cadastrada. +Endereço da pessoa cadastrada. +Endereço da pessoa cadastrada. +Telefone da pessoa cadastrada. +Celular da pessoa cadastrada. +Código da cidade da pessoa +cadastrada. +Código da categoria da viabilidade +cadastrada. +Código do serviço da viabilidade +cadastrada. +Código do vencimento da viabilidade +cadastrada. +Prioridade da viabilidade cadastrada. +Sendo: +- BAIXA +- NORMAL +- ALTA +Tipo de pessoa da viabilidade +cadastrada. Sendo: +- fisica +- juridica +Sexo da pessoa cadastrada. Sendo: +-M +-F +Data de nascimento da pessoa +cadastrada. +E-mail da pessoa cadastrada. +CPF/CNPJ da pessoa cadastrada. +RG da pessoa cadastrada. + + contato +nomePai +nomeMae +observacoes +sessao + +String +String +String +String +String + +- + +Não +Não +Não +Não +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"protocolo":1 +} + +Contato do cadastro. +Nome do pai da pessoa cadastrada. +Nome da mãe da pessoa cadastrada. +Observações do cadastro. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser +feita no sistema TopSapp. + + 3.6.6 Encaminhar uma viabilidade para outro técnico +Encaminha a viabilidade para outro técnico. + +Informações: +Action +Método +Formato de resposta + +EncaminharViabilidade +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idViabilidade + +Inteiro + +- + +Sim + +idTecnico + +Inteiro + +- + +Sim + +descricao +sessao + +Text +String + +- + +Sim +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true +} + +Código do usuário obtido ao realizar o +login. +Código da viabilidade que será +encaminhado. +Código do técnico para o qual será +encaminhado a viabilidade. +Descrição do encaminhamento. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + + 3.6.7 Anexar arquivo em uma viabilidade +Anexa um arquivo a uma viabilidade existente. + +Informações: +Action +Método +Formato de resposta + +AdicionarViabilidadeArquivo +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idViabilidade Inteiro + +- + +Sim + +identificacao Text +arquivoNome Text +arquivoTipo Text + +- + +Sim +Sim +Sim + +base64 +sessao +identificador + +- + +Sim +Sim +Sim + +Text +String +String + +Exemplo de resultado: +Sucesso + +{ +"resultado":true +} + +Código do usuário obtido ao realizar o +login. +Código da viabilidade que deseja obter +informação. +Identificação do arquivo que será anexado. +Nome do arquivo que será anexado. +Tipo do arquivo que será anexado (EX: +"image/jpeg"). +Base64 do arquivo que será anexado. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita no +sistema TopSapp. + + 3.6.8 Obter arquivos de uma viabilidade +Obtêm os arquivos de uma viabilidade. + +Informações: +Action +Método +Formato de resposta + +ObterViabilidadeArquivos +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idViabilidade Inteiro + +- + +Sim + +sessao +identificador + +- + +Sim +Sim + +String +String + +Código do usuário obtido ao realizar o +login. +Código da viabilidade que deseja obter +informação. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita no +sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +" viabilidade_anexo_codigo ":1, +"data":"2016-03-02 16:38:09.904785", +"operador":"topsappapi", +"arquivo_nome":"Imagem1.png", +"arquivo_tipo":"image/png", +"identificacao":"Imagem 1" +}, +{ +" viabilidade_anexo_codigo ":2, +"data":"2016-03-03 09:23:44.203075", +"operador":" topsappapi ", +"arquivo_nome ":"Imagem2.png", +"arquivo_tipo ":"image/png", +"identificacao":"Imagem 2" +} +] +} + + 3.6.9 Obter base64 de um arquivo +Obtêm a base64 de um arquivo. + +Informações: +Action +Método +Formato de resposta + +ObterViabilidadeBase64 +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idArquivo + +Inteiro + +- + +Sim + +sessao +identificador + +String +String + +- + +Sim +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"base64":"" +} +] +} + +Código do usuário obtido ao realizar o +login. +Código do arquivo que deseja obter +informação. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir utilizar +a API. A liberação deve ser feita no sistema +TopSapp. + + 3.7 FINANCEIRO +3.7.1 Obter documentos a receber +Função utilizada para obter a lista de documentos a receber cadastrados no sistema. + +Informações: +Action +Método +Formato de resposta + +ObterDocReceber +Post +JSON + +Parâmetros de envio +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Não + +idFatura + +Inteiro + +- + +Não + +idCliente + +Inteiro + +- + +Não + +idServico + +Inteiro + +- + +Não + +status + +Inteiro + +0 + +Não + +situacaoFatura + +Inteiro + +0 + +Não + +dataInicial + +Date + +- + +Não + +dataFinal + +Date + +- + +Não + +vencimentoInicial Date + +- + +Não + +vencimentoFinal + +Date + +- + +Não + +pagamentoInicial + +Date + +- + +Não + +pagamentoFinal + +Date + +- + +Não + +limiteInicio + +Inteiro + +- + +Não + +limiteRegistros + +Inteiro + +- + +Não + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informação. +Código da fatura que deseja obter +informação. +Código do cliente que deseja obter +informação. Se desejar consultar mais +de um cliente, adicione a vírgula para +separar. Exemplo: 1,2,3,4 +Código do serviço do cliente que +deseja obter informação. +0 – Faturas abertas +1 – Faturas pagas +0 – Faturas ativas +1 – Faturas desativadas +2 – Totas as faturas +Data de geração no formato +(01/01/2000). +Data de geração no formato +(01/01/2000). +Data de vencimento no formato +(01/01/2000). +Data de vencimento no formato +(01/01/2000). +Data de pagamento no formato +(01/01/2000). +Data de pagamento no formato +(01/01/2000). +Registro a partir do qual deseja obter +informação. +Quantidade de registros que deseja +receber na listagem. + + sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser +feita no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":1, +"datacadastro":"2017-01-10", +"valor":"111.00", +"vencimento":"2017-01-10", +"pago":"NÃO", +"datapagto":"", +"valorpago":"", +"pagoem":"", +"historico":"TESTE – 01/2017", +"numero_fatura":"", +"periodo_inicio":"2017-01-01", +"periodo_fim":"2017-01-31", +"cod_portador":1, +"portador":"BANCO DO BRASIL", +"cod_documento":1, +"documento":"DUPLICATA", +"cod_plano_contas":1, +"plano_contas":"MENSALIDADES", +"codigo_cliente":1, +"codigo_servico":1, +"nome":"TOPSAPP API", +"endereco":"Rua das cerejeiras", +"numero":"1987", +"bairro":"Jardim Paraíso", +"cep":"78556-696", +"cidade":"SINOP", +"uf":"MT", +"celular":"(66)9685-2854", +"telefone":"(66)3531-5835", +"fatura_instrucoes":"", +"fatura_observacoes":"", +"desmembrar_scm_sva":"sim", +"situacao": 1 +} +] +} + + 3.7.2 Adicionar documento a receber +Função utilizada para adicionar um documento a receber. + +Informações: +Action +Método +Formato de resposta + +AdicionarDocReceber +Post +JSON + +Parâmetros de envio +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCliente +idServico +dataCadastro + +Inteiro +Inteiro +Date + +- + +Sim +Não +Sim + +dataVencimento + +Date + +- + +Sim + +periodoInicio + +Date + +- + +Não + +periodoFim + +Date + +- + +Não + +historico +idPortador +idDocumento +idPlanoContas +numero +valor +observacoes +instrucoes +sessao + +Text +Inteiro +Inteiro +Inteiro +Text +Real +Text +Text +String + +- + +Sim +Sim +Sim +Sim +Não +Sim +Não +Não +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +} + +Código do usuário obtido ao realizar o +login. +Código do cliente. +Código do serviço. +Data de geração da fatura no formato +(01/01/2000). +Data de vencimento da fatura no +formato (01/01/2000). +Início do período de acesso no formato +(01/01/2000). +Término do período de acesso no +formato (01/01/2000). +Histórico da fatura. +Código do Portador. +Código do Documento. +Código do Plano de Contas. +Número do documento fiscal +Valor do documento no formato (0.00) +Observações da fatura. +Instruções da fatura. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser +feita no sistema TopSapp. + + 3.7.3 Editar documento a receber +Função utilizada para editar um documento a receber. + +Informações: +Action +Método +Formato de resposta + +EditarDocReceber +Post +JSON + +Parâmetros de envio +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idFatura +idCliente +idServico +dataCadastro + +Inteiro +Inteiro +Inteiro +Date + +- + +Sim +Não +Não +Não + +dataVencimento + +Date + +- + +Não + +periodoInicio + +Date + +- + +Não + +periodoFim + +Date + +- + +Não + +historico +idPortador +idDocumento +idPlanoContas +numero +valor +observacoes +instrucoes +sessao + +Text +Inteiro +Inteiro +Inteiro +Text +Real +Text +Text +String + +- + +Não +Não +Não +Não +Não +Não +Não +Não +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +} + +Código do usuário obtido ao realizar o +login. +Código da fatura que deseja editar. +Código do cliente. +Código do serviço. +Data de geração da fatura no formato +(01/01/2000). +Data de vencimento da fatura no +formato (01/01/2000). +Início do período de acesso no formato +(01/01/2000). +Término do período de acesso no +formato (01/01/2000). +Histórico da fatura. +Código do Portador. +Código do Documento. +Código do Plano de Contas. +Número do documento fiscal +Valor do documento no formato (0.00) +Observações da fatura. +Instruções da fatura. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser +feita no sistema TopSapp. + + 3.7.4 Enviar documento a receber por e-mail (boleto) +Função utilizada para enviar um documento a receber por e-mail. + +Informações: +Action +Método +Formato de resposta + +EnviarDocReceberEmail +Post +JSON + +Parâmetros de envio +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCliente +idFatura +emailPara + +Inteiro +Inteiro +Text + +- + +Sim +Sim +Sim + +emailCC + +Text + +- + +Não + +emailAssunto +emailMensagem +sessao + +Text +Text +String + +- + +Sim +Sim +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +} + +Código do usuário obtido ao realizar o +login. +Código do cliente. +Código da fatura que será enviada. +Endereço de e-mail que será enviada a +fatura. +Endereço de e-mail que receberá cópia +da fatura enviada. +Assunto do e-mail. +Mensagem do e-mail. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser +feita no sistema TopSapp. + + 3.7.5 Obter base64 de um documento a receber (boleto) +Função utilizada para obter a base64 de um documento a receber (boleto em PDF). + +Informações: +Action +Método +Formato de resposta + +ObterDocReceberBase64 +Post +JSON + +Parâmetros de envio +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCliente +idFatura +sessao + +Inteiro +Inteiro +String + +- + +Sim +Sim +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"base64":"" +} + +Código do usuário obtido ao realizar o +login. +Código do cliente. +Código da fatura. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + + 3.7.6 Obter dados de pagamento de um documento a receber (boleto) +Função utilizada para obter os dados de pagamento de um documento a receber (boleto). + +Informações: +Action +Método +Formato de resposta + +ObterDocReceberDadosFatura +Post +JSON + +Parâmetros de envio +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCliente +idFatura +idServico + +Inteiro +Inteiro +Inteiro + +- + +Sim +Sim +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código do cliente. +Código da fatura. +Código do serviço que deseja listar as +faturas. Ao enviar esse parâmetro, +idCliente e idFatura passam a não ser +obrigatórios. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado": true, +"fatura": { +"id":"1", +"vencimento":"01/01/2000", +"valor":"00.00", +"vencimento_atualizado":"01/01/2000", +"valor_atualizado":00.00, +"nosso_numero":"00000000000001", +"linha_digitavel":"00000.00000 00000.000000 +00000.000000 0 00000000000000" +} +} + + 3.7.7 Obter lista de documentos +Função utilizada para obter a lista de documentos cadastrados no TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterDocumentos +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informações. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":1, +"documento":"BANCO DO BRASIL", +"cod_portador":1, +"portador":"BANCO DO BRASIL" +} +] +} + + 3.7.8 Obter lista de portadores +Função utilizada para obter a lista de portadores cadastrados no TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterPortadores +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informações. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":1, +"portador":"BANCO BRADESCO", +"banco":"237", +"agencia":"0000", +"dagencia":"0", +"conta":"00000", +"dconta":"0", +"convenio":"", +"carteira":"06", +"posto":"", +"cedente":"TOPSAPP API", +"localpagamento":"QUALQUER BANCO ATÉ O +VENCIMENTO." +} +] +} + + 3.7.9 Obter lista de Plano de Contas +Função utilizada para obter a lista dos planos de contas cadastrados no TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterPlanoContas +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Sim + +idPlanoContas + +Inteiro + +- + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informações. +Código do plano de contas que deseja +obter informação. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":1, +"descricao":"RECEBER", +"tipo":"C", +"contabil":"1", +"ativo":true +} +] +} + + 3.7.10 Liberação em confiança +Função utilizada para realizar a liberação em confiança do cliente. + +Informações: +Action +Método +Formato de resposta + +LiberacaoConfianca +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +Código do usuário obtido ao realizar o +login. +idCliente +Inteiro +Sim* +Código do cliente para realizar a +liberação. +idServico +Inteiro +Não +Código do serviço para realizar a +liberação. Caso não seja informado, +todos os serviços do cliente serão +liberados, se possível. +cpfCliente +String +Não* +CPF/CNPJ do cliente para realizar a +liberação. +senhaCentral +String +Não* +Senha da central do cliente para realizar a +liberação. +sessao +String +Sim +Código da sessão obtida ao realizar o +login. +identificador +String +Sim +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. +* Caso seja informado o parâmetro cpfCliente e o parâmetro senhaCentral, o parâmetro +idCliente passa a ser opcional. + +Exemplo de resultado: +Sucesso + +{ +"resultado": true, +"dados": { +"id": "1", +"resultado": "2", +"mensagem": "Cliente já estava liberado." +} +} + + 3.7.11 Listar faturas para sincronização +Função utilizada para obter a lista das faturas cadastradas no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterDocReceber/Sincronizar +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +status + +Inteiro + +Todos + +Não + +situacaoFatura + +Inteiro + +Todas + +Não + +dataInicial + +Date + +- + +Não + +dataFinal + +Date + +- + +Não + +vencimentoInicial + +Date + +- + +Não + +vencimentoFinal + +Date + +- + +Não + +pagamentoInicial + +Date + +- + +Não + +pagamentoFinal + +Date + +- + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id": 1, +"pago": "SIM", +"situacao": 0 +}, +{ + +Código do usuário obtido ao +realizar o login. +0 – Faturas abertas +1 – Faturas pagas +0 – Faturas ativas +1 – Faturas desativadas +2 – Totas as faturas +Data de geração no formato +(01/01/2000). +Data de geração no formato +(01/01/2000). +Data de vencimento no formato +(01/01/2000). +Data de vencimento no formato +(01/01/2000). +Data de pagamento no formato +(01/01/2000). +Data de pagamento no formato +(01/01/2000). +Código da sessão obtida ao +realizar o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A +liberação deve ser feita no sistema +TopSapp. + + "id": 2, +"pago": "NÃO", +"situacao": 1 +} +] +} + + 3.7.12 Definir fatura sincronizada +Função utilizada para definir que uma fatura foi sincronizada. + +Informações: +Action +Método +Formato de resposta + +ObterDocReceber/Sincronizar/:idfatura +(ex.: ObterDocReceber/Sincronizar/1) +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao +realizar o login. +Código da sessão obtida ao +realizar o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A +liberação deve ser feita no sistema +TopSapp. + + 3.7.13 Obter dados de uma fatura +Função utilizada para obter os dados de uma fatura cadastrada no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterDocReceber/:idfatura (ex.: ObterDocReceber/1) +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao +realizar o login. +Código da sessão obtida ao +realizar o login. +Identificador de origem do acesso +que deverá estar liberado para +conseguir utilizar a API. A +liberação deve ser feita no sistema +TopSapp. + + 3.7.14 Quitar documento a receber +Função utilizada para quitar um documento a receber cadastrado no sistema TopSapp. +Informações: +Action +Método +Formato de resposta + +QuitarDocReceber +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão + +Obrigatório Descrição + +idFatura +idUsuario + +Inteiro +Inteiro + +- + +Sim +Sim + +tipoPagamento + +Inteiro + +- + +Sim + +formaPagamento + +Inteiro + +- + +Sim + +valorRecebido + +Float + +- + +Sim + +data + +Date + +- + +Não + +observacao +idContaCaixa + +String +Inteiro + +1 + +Não +Não + +valorTarifa + +Float + +- + +Não + +idTarifa + +Inteiro + +- + +Não + +idConta + +Inteiro + +- + +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao +realizar o login. +1 – Total +2 – Parcial +1 – Dinheiro +2 – Boleto +Valor +recebido +a +ser +registrado na quitação. +Data do pagamento. Se o +usuário em uso não possuir +permissão de edição da data, +será sempre a atual. +Observação de quitação. +Conta caixa a ser vinculado a +quitação da fatura. Se não +informado será utilizado o +padrão – CAIXA EMPRESA. +Valor da tarifa bancária se +necessário. Utilizando esta +tag, a idTarifa torna-se +obrigatória. +ID do plano de contas para +registrar o valor da tarifa na +quitação do documento. +ID da conta para operações +bancárias. Obrigatório se +utilizar o formaPagamento 2. +Código da sessão obtida ao +realizar o login. +Identificador de origem do +acesso que deverá estar +liberado +para +conseguir +utilizar a API. A liberação +deve ser feita no sistema +TopSapp. + + 3.7.15 Obter lista de Vencimentos +Função utilizada para obter a lista de vencimentos cadastrados no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterVencimentos +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Não + +sessao +identificador + +String +String + +- + +Sim +Sim + +Exemplo de resultado: +Sucesso + +{ +"status": "true", +"dados": [ +{ +"id": 5, +"dia": "10", +"descricao": "DIA 10" +}, +{ +"id": 12, +"dia": "15", +"descricao": "DIA 15" +}, +] +} + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informação. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir utilizar +a API. A liberação deve ser feita no sistema +TopSapp. + + 3.7.16 Obter lista de Vendedores +Função utilizada para obter a lista de funcionários cadastrados no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterVendedores +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade + +Inteiro + +Todas + +Não + +sessao +identificador + +String +String + +- + +Sim +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade que deseja obter +informação. +Código da sessão obtida ao realizar o login. +Identificador de origem do acesso que +deverá estar liberado para conseguir utilizar +a API. A liberação deve ser feita no sistema +TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"status": "true", +"dados": [ +{ +"id": 1, +"nome": "Funcionário Exemplo 1" +}, +{ +"id": 2, +"nome": "Funcionário Exemplo 2" +} +] +} + + 3.7.17 Gerar Recorrência +Função utilizada para gerar cobrança através de recorrência no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +GerarRecorrencia +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +id_cliente + +Inteiro + +- + +Sim + +id_plano + +Inteiro + +- + +Sim + +operadora + +Inteiro + +- + +Sim + +Código do plano cadastrado para +recorrência. Identifique em ‘Financeiro +» Receber » Recorrência » Gerenciar +Planos’. +1 – GETNET + +tipo_operacao + +Inteiro + +- + +Sim + +1 - Recorrência + +id_documento + +Inteiro + +- + +Sim + +id_plano_contas + +Inteiro + +- + +Sim + +id_centro_custos Inteiro + +- + +Sim + +numero_cartao + +String + +- + +Sim + +nome_cartao + +String + +- + +Sim + +ccv_cartao + +String + +- + +Sim + +bandeira_cartao + +String + +- + +Sim + +validade_cartao + +String + +- + +Sim + +Formato MM/YYYY + +bin_cartao + +String + +- + +Sim + +Informe os 6 primeiros dígitos do +cartão. + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. +Código do cadastro do cliente. + + Exemplo de resultado: +Sucesso + +{ +"status": true, +"msg": "Recorrência autorizada." +} + + 3.7.18 Processar Recorrência +Função utilizada para gerar cobrança através de recorrência no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ProcessarRecorrencia +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +id_fatura + +Inteiro + +- + +Não + +data_inicial + +String + +- + +Não + +data_final + +String + +- + +Não + +operadora + +Inteiro + +- + +Sim + +id_documento + +Inteiro + +- + +Sim + +id_conta + +Inteiro + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. +Código da fatura que deseja realizar o +processamento da recorrência. +Data inicial para filtrar as recorrências a +serem processadas. Use o formato +DD/MM/AAAA +Data final para filtrar as recorrências a +serem processadas. Use o formato +DD/MM/AAAA +1 - GETNET +Informar o código do documento +vinculado ao portador com as +configurações da operadora. +Conta para vincular o processamento +dos pagamentos. + +Exemplo de resultado: +Sucesso + +{ +"status": true, +"msg": "Processamento realizado com sucesso.", +"pagas": [ +1010, +1011 +] +} + + 3.7.19 Obter Contas +Função utilizada para obter a lista de contas para utilização cadastradas no TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterContas +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Id_cidade + +Inteiro + +- + +Não + +ativo + +Boolean + +- + +Não + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id": 30, +"nome": "TOPSAPP API", +"endereco": "RUA DAS CEREJEIRAS, 1987", +"bairro": "JARDIM PARAISO", +"telefone": "(66)3531-9741", +"celular": "", +"dataadmissao": "2016-10-10", +"datanascimento": "2016-10-10", +"cpf": "", +"rg": "", +"cargo": "", +"email": "topsappapi@topsappapi.com.br", +"id_cidade": 1, +"cidade": "SINOP +} +] +} + + 3.8 DEPARTAMENTO PESSOAL +3.8.1 Obter lista dos funcionários cadastrados no sistema +Função utilizada para obter a lista dos funcionários cadastrados no TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterFuncionarios +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +idCidade +idFuncionario +desativado + +Inteiro +Inteiro +Boolean + +Todos + +Não +Não +Não + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da cidade. +Código do funcionário. +Booleano para filtrar funcionários +desativados ou não. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id": 30, +"nome": "TOPSAPP API", +"endereco": "RUA DAS CEREJEIRAS, 1987", +"bairro": "JARDIM PARAISO", +"telefone": "(66)3531-9741", +"celular": "", +"dataadmissao": "2016-10-10", +"datanascimento": "2016-10-10", +"cpf": "", +"rg": "", +"cargo": "", +"email": "topsappapi@topsappapi.com.br", +"id_cidade": 1, +"cidade": "SINOP +} +] +} + + 3.9 OPERADORES +3.9.1 Obter lista dos operadores do sistema +Função utilizada para obter a lista dos operadores cadastrados no TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterOperadores +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"resultado":true, +"dados":[ +{ +"id":1, +"nome":"OPERADOR 1", +"usuario":"topsapp", +"email":"operador@topsapp.com.br", +"id_tecnico":1, +"tecnico": "OPERADOR 1" +} +] +} + + 3.10 SERVIÇOS +3.10.1 Obter serviços cadastrados +Função utilizada para obter a lista dos serviços cadastrados no TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterServicos +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +tipoServico + +Integer + +“” + +Não + +idCidade + +Integer + +Todas + +Não + +ativo + +Boolean + +Todos + +Não + +finalidade + +Integer + +- + +Não + +Exemplo de resultado: +Sucesso + +{ +"status": true, +"dados": [ +{ +"id": 63, +"descricao": "IP FIXO", +"valor": "50.00", +"id_cidade": 0, +"nome_cidade": "TODAS", +"tipo": "", +"ativo": true, + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. +Código que identifica o tipo do serviço a +ser listado. +1 – Acesso +2 – E-mail +3 – Hospedagem +4 – TV +Código da cidade que deseja filtrar a lista +que será exibida. +Booleano para filtrar serviços ativos e +desativados. (Ex.: ativo: true) +Código que identifica a finalidade do +serviço a ser listado. +1 – Residencial +2 – Corporativo + + "desconto_vencimento": "0.00", +"finalidade": "" +}, +{ +"id": 62, +"descricao": "PLANO EXEMPLO", +"valor": "99.00", +"id_cidade": 4, +"nome_cidade": "Sinop", +"tipo": "acesso", +"ativo": true, +"desconto_vencimento": "0.00", +"finalidade": "RESIDENCIAL" +}, +{ +"id": 54, +"descricao": "NOVO PLANO DE TRASNFERENCIA", +"valor": "50.00", +"id_cidade": 4, +"nome_cidade": "Sinop", +"tipo": "acesso", +"ativo": true, +"desconto_vencimento": "0.00", +"finalidade": "" +} +] +} + + 3.10.2 Obter Pool IPv4 +Função utilizada para obter a lista de pools de ipv4 cadastrados no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterPoolV4 +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +idCidade + +Integer + +- + +Não + +Exemplo de resultado: +Sucesso + +{ +"status": "true", +"dados": [ +{ +"id": 1, +"nome": "pool" +} +] +} + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. +Codigo da cidade que deseja obter a +informação. + + 3.10.3 Obter Pool IPv6 +Função utilizada para obter a lista de pools de ipv4 cadastrados no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterPoolV6 +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Exemplo de resultado: +Sucesso + +{ +"status": "true", +"dados": [ +{ +"id": 11, +"nome": "Pool" +} +] +} + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + + 3.10.4 Obter Serviços Recorrência +Função utilizada para obter a lista de serviços para recorrência no sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterServicosRecorrencia +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +id_cidade +operadora +ativo + +Inteiro +Inteiro +Boolean + +- + +Não +Não +Não + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. +1 – GETNET, 2 – CIELO + +Exemplo de resultado: +Sucesso + +{ +"status": true, +"dados": [ +{ +"id": 1, +"gateway": "GETNET", +"descricao": "Plano Exemplo", +"valor": "150.00", +"meses": 12, +"ativo": true, +"cidade": 0 +}, +{ +"id": 2, +"gateway": "GETNET", +"descricao": "Plano Exemplo 1", +"valor": "100.00", +"meses": 6, +"ativo": true, +"cidade": 4 +}… +} + + 3.11 CONTRATOS +3.11.1 Obter contratos cadastrados +Função utilizada para obter a lista dos contratos cadastrados no TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterContratos +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +idCliente + +Integer + +- + +Não + +idServico + +Integer + +- + +Não + +idCombo + +Integer + +- + +Não + +estado + +Integer + +- + +Não + +impresso + +Integer + +- + +Não + +Exemplo de resultado: +Sucesso + +{ +"status": "true", +"dados": [ +{ +"id": 1, +"nome": "pool" +} +] +} + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. +Código do cliente para filtrar a lista de +contratos. +Código do serviço do cliente para filtrar +a lista de contratos. +Código do combo do cliente para filtrar a +lista de contratos. +Estado do contrato para filtrar a lista de +contratos. +1 – Ativo +2 – Desativado +Estado de impressão para filtrar a lista de +contratos. +1 – Sim +2 – Não + + 3.11.2 Alterar contratos cadastrados +Função utilizada para alterar um contrato cadastrado no TopSapp. + +Informações: +Action +Método +Formato de resposta + +AlterarContrato +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +idContrato +estado + +Integer +Integer + +- + +Sim +Sim + +Exemplo de resultado: +Sucesso + +{ +"status": true, +} + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. +Código do contrato que deseja alterar. +Estado do contrato que deseja aplicar. +1 – Ativo +2 – Desativado + + 3.12 FISCAL +3.12.1 Obter CFOP’s +Função utilizada obter a lista de CFOP’s. + +Informações: +Action +Método +Formato de resposta + +ObterCFOP +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. + +Exemplo de resultado: +Sucesso + +{ +"status": true, +"dados": [ +{ +"id": 1, +"descricao": "PRESTAÇÃO DE SERVIÇO DE COMUNICAÇÃO A NÃO +CONTRIBUINTE", +"cfop": "5307", +"classe": "PRESTAÇÃO DE SERVIÇO DE COMUNICAÇÃO A NÃO +CONTRIBUINTE ", +"nome": "PRESTAÇÃO DE SERVIÇO DE COMUNICAÇÃO" +} +] +} + + 3.13 FTTH +3.13.1 Obter OLT’s +Função utilizada obter a lista de OLT’s cadastradas nas bases do sistema TopSapp. + +Informações: +Action +Método +Formato de resposta + +ObterOlts +Post +JSON + +Parâmetros de envio: +Tag + +Tipo + +Padrão Obrigatório Descrição + +idUsuario + +Inteiro + +- + +Sim + +sessao + +String + +- + +Sim + +identificador + +String + +- + +Sim + +base_id + +Inteiro + +Todas + +Não + +Código do usuário obtido ao realizar o +login. +Código da sessão obtida ao realizar o +login. +Identificador de origem do acesso que +deverá estar liberado para conseguir +utilizar a API. A liberação deve ser feita +no sistema TopSapp. +Código da base que deseja +informação de OLT’s.+ + +Exemplo de resultado: +Sucesso + +{ +"status": "true", +"dados": [ +{ +"id": 5, +"nome": "FIBERHOME-01", +"ssid": "10.19.92.252", +"portas": [ +{ +"id": 1, +"porta_id": 10, +"porta_slot": null, +"alias": "10-1" +} +], +"perfis": [ +{ +"id": 1, +"identificacao": "AN5506-04-F1" +}, +] +} +] +} + +obter + +a + + 4 ERRO NA SOLICITAÇÃO + +Lista dos possíveis erros que poderão ocorrer na solicitação. + +Informações: +Formato de resposta + +JSON + +Resultado: +Sucesso + +{ +"resultado":false, +"codigo":"", +"msg":"", +"sessao":"", +"id_usuario":"", +"nome_usuario":"" +} + +Erros: +Código +100 + +101 +102 +103 + +104 +105 + +106 +107 + +108 + +109 + +110 + +Erro +Motivo +Não foi possível identificar sua sessão. A sessão informada não é válida ou +Realize o login novamente. +o tempo máximo de inatividade (60 +minutos) foi atingido. +Erro ao realizar o login. +O usuário e a senha não conferem +com nenhum cadastrado no sistema. +O dispositivo deve ser liberado para acessar O identificador utilizado não está +o aplicativo. +liberado no sistema. +Não foi possível localizar o usuário. +O +idUsuario +informado +não +corresponde a nenhum usuário +cadastrado no sistema. +Informe os dados corretamente. +Algum parâmetro obrigatório não foi +informado. +Não foi possível localizar o técnico. +O +idTecnico +informado +não +corresponde a nenhum técnico +cadastrado no sistema. +Seu usuário não possui permissão para O usuário não possui permissão para +prosseguir. +utilizar a função solicitada. +Não foi possível localizar o suporte. +O +idSuporte +informado +não +corresponde a nenhum suporte +cadastrado no sistema. +Não foi possível localizar o cliente. +O +idCliente +informado +não +corresponde a nenhum cliente +cadastrado no sistema. +Não foi possível localizar a categoria. +O idCategoria informado não +corresponde a nenhuma categoria +cadastrada no sistema. +Não foi possível localizar o status. +O +idStatus +informado +não +corresponde a nenhum status + + 111 + +112 +113 + +114 + +115 +116 + +900 + +901 + +cadastrado no sistema. +O +idServico +informado +não +corresponde a nenhum serviço +cadastrado no sistema. +O serviço não pertence ao cliente O idServico informado não pertence +informado. +ao idCliente informado. +Não foi possível localizar esta fatura. +O +idFatura +informado +não +corresponde a nenhuma fatura +cadastrada no sistema. +Não foi possível localizar a base. +O +idBase +informado +não +corresponde a nenhuma base +cadastrada no sistema. +O MAC informado não é valido. +O formato do MAC informado não é +válido. +A data informada não é válida. +O formato da data informada não é +válido ou a data informada está +incorreta. +Erro ao realizar esta operação. +Erro de procedimento na utilização +da API. Verifique se os parâmetros +informados são do tipo correto. +Erro ao realizar esta operação. +Erro de procedimento na utilização +da API. +Não foi possível localizar o serviço. + + \ No newline at end of file diff --git a/package.json b/package.json index d06dd7e..49ba6bf 100644 --- a/package.json +++ b/package.json @@ -28,7 +28,9 @@ "dependencies": { "node-telegram-bot-api": "^0.64.0", "ssh2": "^1.15.0", - "dotenv": "^16.3.1" + "dotenv": "^16.3.1", + "axios": "^1.6.0", + "form-data": "^4.0.0" }, "devDependencies": { "nodemon": "^3.0.1" diff --git a/src/bot/handler.js b/src/bot/handler.js index 9d8e189..c6dec8d 100644 --- a/src/bot/handler.js +++ b/src/bot/handler.js @@ -1,5 +1,6 @@ const NLPProcessor = require('../nlp/processor'); const SSHManager = require('../ssh/manager'); +const { TopSappManager } = require('../topsapp'); const config = require('../config/config'); class BotHandler { @@ -7,6 +8,7 @@ class BotHandler { this.bot = bot; this.nlp = new NLPProcessor(); this.ssh = new SSHManager(); + this.topsapp = new TopSappManager(); this.userSessions = new Map(); // Armazena sessões de usuário console.log('🎯 BotHandler inicializado'); @@ -150,6 +152,36 @@ class BotHandler { await this.handleAdicionarOnu(chatId, target); break; + case 'buscar_cliente': + console.log(`🔍 Executando handleBuscarCliente com target: ${target}`); + await this.handleBuscarCliente(chatId, target); + break; + + case 'ver_faturas': + console.log(`📄 Executando handleVerFaturas com target: ${target}`); + await this.handleVerFaturas(chatId, target); + break; + + case 'gerar_boleto': + console.log(`💸 Executando handleGerarBoleto com target: ${target}`); + await this.handleGerarBoleto(chatId, target); + break; + + case 'bloquear_cliente': + console.log(`🔒 Executando handleBloquearCliente com target: ${target}`); + await this.handleBloquearCliente(chatId, target); + break; + + case 'liberar_cliente': + console.log(`🔓 Executando handleLiberarCliente com target: ${target}`); + await this.handleLiberarCliente(chatId, target); + break; + + case 'status_topsapp': + console.log(`🏢 Executando handleStatusTopSapp`); + await this.handleStatusTopSapp(chatId); + break; + case 'conectar': await this.handleConnect(chatId, target); break; @@ -256,6 +288,16 @@ Digite /help para ver todos os comandos disponíveis! • Oferece opções de firmware específicas para cada modelo • Processo seguro com confirmação +🏢 TOPSAPP - GESTÃO DE CLIENTES: +• "buscar cliente João da Silva" +• "buscar cliente 123.456.789-10" +• "buscar cliente Guarai João" +• "ver faturas 123.456.789-10" +• "gerar boleto fatura123" +• "bloquear cliente 456" +• "liberar cliente 456" +• "status topsapp" + 📊 STATUS E MONITORAMENTO: /status - Verifica status • "verificar concentrador" @@ -270,12 +312,18 @@ Digite /help para ver todos os comandos disponíveis! • "Listar usuários conectados" • "Reiniciar juniper" • "Ping 131.0.192.254" +• "Buscar cliente João da Silva" +• "Ver faturas do CPF 123.456.789-10" ✅ EXEMPLOS PRÁTICOS: • "desconectar cliente user123" • "ver sinal DACM91569513" • "adicionar onu DACM91569513" • "remover onu DACM91569513" +• "buscar cliente João Pedro Afonso" +• "ver faturas cliente 123.456.789-10" +• "gerar boleto fatura456" +• "bloquear cliente 789" • "listar clientes conectados" • "verificar status concentrador" @@ -818,6 +866,12 @@ Digite /help para ver todos os comandos disponíveis! console.error(`❌ Erro em handleConfirmAddCallback:`, confirmError); await this.bot.answerCallbackQuery(callbackQuery.id, 'Erro na confirmação'); } + } else if (data.startsWith('confirm_block_')) { + console.log(`🔍 Chamando handleConfirmBlockCallback`); + await this.handleConfirmBlockCallback(callbackQuery, data); + } else if (data.startsWith('confirm_unblock_')) { + console.log(`🔍 Chamando handleConfirmUnblockCallback`); + await this.handleConfirmUnblockCallback(callbackQuery, data); } else if (data.startsWith('confirm_')) { console.log(`🔍 Condição confirm_ atendida`); await this.handleConfirmCallback(callbackQuery, data); @@ -2040,6 +2094,550 @@ Digite /help para ver todos os comandos disponíveis! { parse_mode: 'Markdown' } ); } + + /** + * Status do TopSapp + */ + async handleStatusTopSapp(chatId) { + try { + await this.bot.sendMessage(chatId, '🔄 Verificando status do TopSapp...'); + + const status = this.topsapp.getConfigStatus(); + const instances = this.topsapp.getInstances(); + + let message = `🏢 **STATUS TOPSAPP**\n\n`; + + if (status.ready) { + message += `✅ **Configuração**: OK\n`; + message += `📊 **Instâncias configuradas**: ${instances.length}\n\n`; + + instances.forEach(instance => { + message += `🌐 **${instance.location}**\n`; + message += `└ ${instance.host}\n`; + message += `└ Status: ${status.instances.find(i => i.location === instance.location)?.configured ? '✅ Configurado' : '❌ Não configurado'}\n\n`; + }); + + message += `💡 Use os comandos:\n`; + message += `• "buscar cliente João"\n`; + message += `• "ver faturas 123.456.789-10"\n`; + message += `• "gerar boleto fatura123"\n`; + message += `• "bloquear cliente 456"`; + } else { + message += `❌ **Configuração**: Incompleta\n\n`; + message += `⚠️ **Problemas encontrados**:\n`; + + status.instances.forEach(instance => { + if (!instance.configured) { + message += `• ${instance.location}: Credenciais não configuradas\n`; + } + }); + + message += `\n📝 **Configure no arquivo .env**:\n`; + message += `• TOPSAPP_GUARAI_USER\n`; + message += `• TOPSAPP_GUARAI_PASS\n`; + message += `• TOPSAPP_PEDRO_AFONSO_USER\n`; + message += `• TOPSAPP_PEDRO_AFONSO_PASS`; + } + + await this.bot.sendMessage(chatId, message, { parse_mode: 'Markdown' }); + + } catch (error) { + console.error('❌ Erro ao verificar status TopSapp:', error); + await this.bot.sendMessage(chatId, + `❌ **Erro ao verificar status TopSapp**\n\n` + + `⚠️ ${error.message}`, + { parse_mode: 'Markdown' } + ); + } + } + + /** + * Buscar cliente no TopSapp + */ + async handleBuscarCliente(chatId, target) { + if (!target) { + await this.bot.sendMessage(chatId, + `🔍 **Buscar Cliente**\n\n` + + `💡 **Como usar:**\n` + + `• "buscar cliente João da Silva"\n` + + `• "buscar cliente 123.456.789-10"\n` + + `• "buscar cliente Guarai João" (específica instância)\n` + + `• "buscar cliente Pedro Afonso Maria"` + ); + return; + } + + try { + await this.bot.sendMessage(chatId, '🔍 Buscando cliente...'); + + // Detectar se especificou uma localização + let location = ''; + let query = target; + + if (target.toLowerCase().includes('guarai') || target.toLowerCase().includes('colmeia')) { + location = 'Guarai/Colmeia'; + query = target.replace(/(guarai|colmeia)/gi, '').trim(); + } else if (target.toLowerCase().includes('pedro afonso')) { + location = 'Pedro Afonso'; + query = target.replace(/pedro afonso/gi, '').trim(); + } + + const resultado = await this.topsapp.buscarCliente(query, location); + + if (!resultado.success) { + await this.bot.sendMessage(chatId, + `❌ **Erro na busca**\n\n` + + `⚠️ ${resultado.error}`, + { parse_mode: 'Markdown' } + ); + return; + } + + if (!resultado.clientes || resultado.clientes.length === 0) { + await this.bot.sendMessage(chatId, + `🔍 **Nenhum cliente encontrado**\n\n` + + `📝 Termo buscado: "${query}"\n` + + `🌐 Instância: ${resultado.instancia || 'Todas'}`, + { parse_mode: 'Markdown' } + ); + return; + } + + let message = `🔍 **Clientes encontrados**\n\n`; + message += `📊 **Total**: ${resultado.total} cliente(s)\n`; + message += `🌐 **Instância**: ${resultado.instancia}\n\n`; + + resultado.clientes.slice(0, 5).forEach((cliente, index) => { + message += `👤 **${index + 1}. ${cliente.nome}**\n`; + message += `🆔 ID: \`${cliente.id}\`\n`; + message += `📄 CPF: \`${cliente.cpf}\`\n`; + message += `📧 Email: ${cliente.email || 'Não informado'}\n`; + message += `📞 Telefone: ${cliente.telefone || 'Não informado'}\n`; + message += `📍 Endereço: ${cliente.endereco}\n`; + message += `🏙️ Cidade: ${cliente.cidade}\n`; + message += `📊 Status: ${cliente.status === 1 ? '✅ Ativo' : '❌ Inativo'}\n\n`; + }); + + if (resultado.total > 5) { + message += `📋 *Mostrando apenas os primeiros 5 resultados de ${resultado.total}*\n\n`; + } + + message += `💡 **Comandos úteis:**\n`; + message += `• "ver faturas ${resultado.clientes[0].cpf}"\n`; + message += `• "bloquear cliente ${resultado.clientes[0].id}"\n`; + message += `• "liberar cliente ${resultado.clientes[0].id}"`; + + await this.bot.sendMessage(chatId, message, { parse_mode: 'Markdown' }); + + } catch (error) { + console.error('❌ Erro ao buscar cliente:', error); + await this.bot.sendMessage(chatId, + `❌ **Erro ao buscar cliente**\n\n` + + `⚠️ ${error.message}`, + { parse_mode: 'Markdown' } + ); + } + } + + /** + * Ver faturas do cliente + */ + async handleVerFaturas(chatId, target) { + if (!target) { + await this.bot.sendMessage(chatId, + `📄 **Ver Faturas**\n\n` + + `💡 **Como usar:**\n` + + `• "ver faturas 123.456.789-10"\n` + + `• "ver faturas cliente123"\n` + + `• "ver faturas Guarai 123.456.789-10"` + ); + return; + } + + try { + await this.bot.sendMessage(chatId, '📄 Buscando faturas...'); + + // Detectar se especificou uma localização + let location = ''; + let clienteId = target; + + if (target.toLowerCase().includes('guarai') || target.toLowerCase().includes('colmeia')) { + location = 'Guarai/Colmeia'; + clienteId = target.replace(/(guarai|colmeia)/gi, '').trim(); + } else if (target.toLowerCase().includes('pedro afonso')) { + location = 'Pedro Afonso'; + clienteId = target.replace(/pedro afonso/gi, '').trim(); + } + + // Se é CPF, buscar o cliente primeiro + let idCliente = clienteId; + if (clienteId.includes('.') || clienteId.includes('-')) { + const busca = await this.topsapp.buscarCliente(clienteId, location); + if (busca.success && busca.clientes && busca.clientes.length > 0) { + idCliente = busca.clientes[0].id; + location = busca.instancia; + } else { + await this.bot.sendMessage(chatId, + `❌ **Cliente não encontrado**\n\n` + + `📝 CPF/Nome: "${clienteId}"`, + { parse_mode: 'Markdown' } + ); + return; + } + } + + const resultado = await this.topsapp.obterBoletos(idCliente, location); + + if (!resultado.success) { + await this.bot.sendMessage(chatId, + `❌ **Erro ao buscar faturas**\n\n` + + `⚠️ ${resultado.error}`, + { parse_mode: 'Markdown' } + ); + return; + } + + if (!resultado.boletos || resultado.boletos.length === 0) { + await this.bot.sendMessage(chatId, + `📄 **Nenhuma fatura encontrada**\n\n` + + `👤 Cliente ID: ${idCliente}\n` + + `🌐 Instância: ${resultado.instancia || location}`, + { parse_mode: 'Markdown' } + ); + return; + } + + let message = `📄 **Faturas do Cliente**\n\n`; + message += `📊 **Total**: ${resultado.total} fatura(s)\n`; + message += `🌐 **Instância**: ${resultado.instancia}\n\n`; + + resultado.boletos.slice(0, 10).forEach((boleto, index) => { + message += `💸 **${index + 1}. Fatura #${boleto.id}**\n`; + message += `💰 Valor: R$ ${boleto.valor}\n`; + message += `📅 Vencimento: ${boleto.vencimento}\n`; + message += `📊 Status: ${this.getStatusFatura(boleto.status)}\n`; + message += `📝 Descrição: ${boleto.descricao || 'Não informada'}\n`; + + if (boleto.linhaDigitavel) { + message += `🔢 Linha digitável: \`${boleto.linhaDigitavel}\`\n`; + } + + message += '\n'; + }); + + if (resultado.total > 10) { + message += `📋 *Mostrando apenas as primeiras 10 faturas de ${resultado.total}*\n\n`; + } + + if (resultado.boletos.length > 0) { + message += `💡 **Gerar boleto:**\n`; + message += `• "gerar boleto ${resultado.boletos[0].id}"`; + } + + await this.bot.sendMessage(chatId, message, { parse_mode: 'Markdown' }); + + } catch (error) { + console.error('❌ Erro ao buscar faturas:', error); + await this.bot.sendMessage(chatId, + `❌ **Erro ao buscar faturas**\n\n` + + `⚠️ ${error.message}`, + { parse_mode: 'Markdown' } + ); + } + } + + /** + * Gerar boleto PDF + */ + async handleGerarBoleto(chatId, target) { + if (!target) { + await this.bot.sendMessage(chatId, + `💸 **Gerar Boleto**\n\n` + + `💡 **Como usar:**\n` + + `• "gerar boleto 12345"\n` + + `• "gerar boleto fatura123"` + ); + return; + } + + try { + await this.bot.sendMessage(chatId, '💸 Gerando boleto PDF...'); + + const resultado = await this.topsapp.gerarBoletoPDF(target); + + if (!resultado.success) { + await this.bot.sendMessage(chatId, + `❌ **Erro ao gerar boleto**\n\n` + + `⚠️ ${resultado.error}`, + { parse_mode: 'Markdown' } + ); + return; + } + + // Enviar o PDF + await this.bot.sendDocument(chatId, resultado.buffer, { + filename: resultado.filename, + caption: `💸 **Boleto Gerado**\n\n` + + `📄 Arquivo: ${resultado.filename}\n` + + `🌐 Instância: ${resultado.instancia}`, + parse_mode: 'Markdown' + }); + + await this.bot.sendMessage(chatId, + `✅ **Boleto enviado com sucesso!**\n\n` + + `📄 Arquivo: ${resultado.filename}\n` + + `🌐 Instância: ${resultado.instancia}`, + { parse_mode: 'Markdown' } + ); + + } catch (error) { + console.error('❌ Erro ao gerar boleto:', error); + await this.bot.sendMessage(chatId, + `❌ **Erro ao gerar boleto**\n\n` + + `⚠️ ${error.message}`, + { parse_mode: 'Markdown' } + ); + } + } + + /** + * Bloquear cliente + */ + async handleBloquearCliente(chatId, target) { + if (!target) { + await this.bot.sendMessage(chatId, + `🔒 **Bloquear Cliente**\n\n` + + `💡 **Como usar:**\n` + + `• "bloquear cliente 456"\n` + + `• "bloquear 789"` + ); + return; + } + + try { + // Solicitar confirmação + const keyboard = { + inline_keyboard: [ + [ + { text: '✅ Confirmar Bloqueio', callback_data: `confirm_block_${target}` }, + { text: '❌ Cancelar', callback_data: 'cancel_action' } + ] + ] + }; + + await this.bot.sendMessage(chatId, + `🔒 **Confirmar Bloqueio**\n\n` + + `⚠️ Deseja bloquear o cliente ID: ${target}?\n\n` + + `📋 Esta ação bloqueará todos os serviços ativos do cliente.`, + { + parse_mode: 'Markdown', + reply_markup: keyboard + } + ); + + } catch (error) { + console.error('❌ Erro ao preparar bloqueio:', error); + await this.bot.sendMessage(chatId, + `❌ **Erro ao preparar bloqueio**\n\n` + + `⚠️ ${error.message}`, + { parse_mode: 'Markdown' } + ); + } + } + + /** + * Liberar cliente + */ + async handleLiberarCliente(chatId, target) { + if (!target) { + await this.bot.sendMessage(chatId, + `🔓 **Liberar Cliente**\n\n` + + `💡 **Como usar:**\n` + + `• "liberar cliente 456"\n` + + `• "liberar 789"` + ); + return; + } + + try { + // Solicitar confirmação + const keyboard = { + inline_keyboard: [ + [ + { text: '✅ Confirmar Liberação', callback_data: `confirm_unblock_${target}` }, + { text: '❌ Cancelar', callback_data: 'cancel_action' } + ] + ] + }; + + await this.bot.sendMessage(chatId, + `🔓 **Confirmar Liberação**\n\n` + + `✅ Deseja liberar o cliente ID: ${target}?\n\n` + + `📋 Esta ação liberará todos os serviços bloqueados do cliente.`, + { + parse_mode: 'Markdown', + reply_markup: keyboard + } + ); + + } catch (error) { + console.error('❌ Erro ao preparar liberação:', error); + await this.bot.sendMessage(chatId, + `❌ **Erro ao preparar liberação**\n\n` + + `⚠️ ${error.message}`, + { parse_mode: 'Markdown' } + ); + } + } + + /** + * Utilitário para obter status da fatura + */ + getStatusFatura(status) { + switch (status) { + case 1: return '✅ Paga'; + case 2: return '⏳ Pendente'; + case 3: return '❌ Vencida'; + case 4: return '🔄 Em processamento'; + default: return '❓ Status desconhecido'; + } + } + + /** + * Callback para confirmar bloqueio de cliente + */ + async handleConfirmBlockCallback(callbackQuery, data) { + const chatId = callbackQuery.message.chat.id; + const clienteId = data.replace('confirm_block_', ''); + + try { + await this.bot.answerCallbackQuery(callbackQuery.id, 'Processando bloqueio...'); + + await this.bot.editMessageText( + `🔒 **Bloqueando cliente ID: ${clienteId}**\n\n⏳ Aguarde...`, + { + chat_id: chatId, + message_id: callbackQuery.message.message_id, + parse_mode: 'Markdown' + } + ); + + const resultado = await this.topsapp.bloquearCliente(clienteId); + + if (!resultado.success) { + await this.bot.editMessageText( + `❌ **Erro ao bloquear cliente**\n\n` + + `🆔 Cliente ID: ${clienteId}\n` + + `⚠️ Erro: ${resultado.error}`, + { + chat_id: chatId, + message_id: callbackQuery.message.message_id, + parse_mode: 'Markdown' + } + ); + return; + } + + let message = `🔒 **Cliente bloqueado com sucesso!**\n\n`; + message += `🆔 Cliente ID: ${clienteId}\n`; + message += `🌐 Instância: ${resultado.instancia}\n`; + message += `📊 Serviços bloqueados: ${resultado.total}\n\n`; + + if (resultado.servicosBloqueados && resultado.servicosBloqueados.length > 0) { + message += `📋 **Detalhes dos bloqueios:**\n`; + resultado.servicosBloqueados.forEach((servico, index) => { + message += `${index + 1}. ${servico.descricao}: ${servico.resultado.success ? '✅ Bloqueado' : '❌ Erro'}\n`; + }); + } + + await this.bot.editMessageText(message, { + chat_id: chatId, + message_id: callbackQuery.message.message_id, + parse_mode: 'Markdown' + }); + + } catch (error) { + console.error('❌ Erro ao bloquear cliente:', error); + await this.bot.editMessageText( + `❌ **Erro interno ao bloquear cliente**\n\n` + + `🆔 Cliente ID: ${clienteId}\n` + + `⚠️ ${error.message}`, + { + chat_id: chatId, + message_id: callbackQuery.message.message_id, + parse_mode: 'Markdown' + } + ); + } + } + + /** + * Callback para confirmar liberação de cliente + */ + async handleConfirmUnblockCallback(callbackQuery, data) { + const chatId = callbackQuery.message.chat.id; + const clienteId = data.replace('confirm_unblock_', ''); + + try { + await this.bot.answerCallbackQuery(callbackQuery.id, 'Processando liberação...'); + + await this.bot.editMessageText( + `🔓 **Liberando cliente ID: ${clienteId}**\n\n⏳ Aguarde...`, + { + chat_id: chatId, + message_id: callbackQuery.message.message_id, + parse_mode: 'Markdown' + } + ); + + const resultado = await this.topsapp.liberarCliente(clienteId); + + if (!resultado.success) { + await this.bot.editMessageText( + `❌ **Erro ao liberar cliente**\n\n` + + `🆔 Cliente ID: ${clienteId}\n` + + `⚠️ Erro: ${resultado.error}`, + { + chat_id: chatId, + message_id: callbackQuery.message.message_id, + parse_mode: 'Markdown' + } + ); + return; + } + + let message = `🔓 **Cliente liberado com sucesso!**\n\n`; + message += `🆔 Cliente ID: ${clienteId}\n`; + message += `🌐 Instância: ${resultado.instancia}\n`; + message += `📊 Serviços liberados: ${resultado.total}\n\n`; + + if (resultado.servicosLiberados && resultado.servicosLiberados.length > 0) { + message += `📋 **Detalhes das liberações:**\n`; + resultado.servicosLiberados.forEach((servico, index) => { + message += `${index + 1}. ${servico.descricao}: ${servico.resultado.success ? '✅ Liberado' : '❌ Erro'}\n`; + }); + } + + await this.bot.editMessageText(message, { + chat_id: chatId, + message_id: callbackQuery.message.message_id, + parse_mode: 'Markdown' + }); + + } catch (error) { + console.error('❌ Erro ao liberar cliente:', error); + await this.bot.editMessageText( + `❌ **Erro interno ao liberar cliente**\n\n` + + `🆔 Cliente ID: ${clienteId}\n` + + `⚠️ ${error.message}`, + { + chat_id: chatId, + message_id: callbackQuery.message.message_id, + parse_mode: 'Markdown' + } + ); + } + } } module.exports = BotHandler; diff --git a/src/nlp/processor.js b/src/nlp/processor.js index cde3151..ad3ac0f 100644 --- a/src/nlp/processor.js +++ b/src/nlp/processor.js @@ -17,11 +17,24 @@ class NLPProcessor { 'ping': ['ping', 'testar', 'test', 'conectividade'], 'admin': ['admin', 'administração', 'administracao', 'painel'], 'usuarios_autorizados': ['usuarios autorizados', 'users autorizados', 'lista usuarios', 'listar usuarios autorizados'], - 'meu_id': ['meu id', 'meu user id', 'my id', 'user id', 'minha id'] + 'meu_id': ['meu id', 'meu user id', 'my id', 'user id', 'minha id'], + 'buscar_cliente': ['buscar cliente', 'procurar cliente', 'encontrar cliente', 'search cliente', 'cliente'], + 'ver_faturas': ['ver faturas', 'ver fatura', 'faturas', 'fatura', 'boletos', 'boleto', 'contas'], + 'gerar_boleto': ['gerar boleto', 'boleto', 'criar boleto', 'pdf boleto', 'imprimir boleto'], + 'bloquear_cliente': ['bloquear cliente', 'bloquear', 'suspender cliente', 'cortar cliente'], + 'liberar_cliente': ['liberar cliente', 'liberar', 'desbloquear cliente', 'reconectar cliente'], + 'status_topsapp': ['status topsapp', 'verificar topsapp', 'topsapp status', 'topsapp'] }; // Padrões de comandos this.commandPatterns = [ + // Padrões específicos para TopSapp + /^(buscar|procurar|encontrar)\s+(cliente|user)\s+(.+)$/i, + /^(ver|mostrar)\s+(faturas?|boletos?|contas?)\s+(.+)$/i, + /^(gerar|criar|imprimir)\s+(boleto|pdf)\s+(.+)$/i, + /^(bloquear|suspender|cortar)\s+(cliente|user)\s+(.+)$/i, + /^(liberar|desbloquear|reconectar)\s+(cliente|user)\s+(.+)$/i, + /^(status|verificar)\s+(topsapp)$/i, // Padrões específicos para ver sinal /^(ver|verificar|check)\s+(sinal|signal)\s+([A-Z0-9]+)$/i, /^(sinal|signal)\s+([A-Z0-9]+)$/i, @@ -120,6 +133,76 @@ class NLPProcessor { }; } + // Detectar comandos TopSapp - buscar cliente + if (/buscar|procurar|encontrar/i.test(action) && /cliente|user/i.test(fullMatch)) { + let query = match[3] || match[2]; // Nome/CPF do cliente + + return { + action: 'buscar_cliente', + target: query ? query.trim() : null, + confidence: 0.95, + type: 'topsapp_search_pattern' + }; + } + + // Detectar comandos TopSapp - ver faturas + if (/ver|mostrar/i.test(action) && /faturas?|boletos?|contas?/i.test(fullMatch)) { + let query = match[3] || match[2]; // ID/CPF do cliente + + return { + action: 'ver_faturas', + target: query ? query.trim() : null, + confidence: 0.95, + type: 'topsapp_faturas_pattern' + }; + } + + // Detectar comandos TopSapp - gerar boleto + if (/gerar|criar|imprimir/i.test(action) && /boleto|pdf/i.test(fullMatch)) { + let faturaId = match[3] || match[2]; // ID da fatura + + return { + action: 'gerar_boleto', + target: faturaId ? faturaId.trim() : null, + confidence: 0.95, + type: 'topsapp_boleto_pattern' + }; + } + + // Detectar comandos TopSapp - bloquear cliente + if (/bloquear|suspender|cortar/i.test(action) && /cliente|user/i.test(fullMatch)) { + let clienteId = match[3] || match[2]; // ID do cliente + + return { + action: 'bloquear_cliente', + target: clienteId ? clienteId.trim() : null, + confidence: 0.95, + type: 'topsapp_block_pattern' + }; + } + + // Detectar comandos TopSapp - liberar cliente + if (/liberar|desbloquear|reconectar/i.test(action) && /cliente|user/i.test(fullMatch)) { + let clienteId = match[3] || match[2]; // ID do cliente + + return { + action: 'liberar_cliente', + target: clienteId ? clienteId.trim() : null, + confidence: 0.95, + type: 'topsapp_unblock_pattern' + }; + } + + // Detectar comandos TopSapp - status + if (/status|verificar/i.test(action) && /topsapp/i.test(fullMatch)) { + return { + action: 'status_topsapp', + target: null, + confidence: 0.95, + type: 'topsapp_status_pattern' + }; + } + // Padrão específico para "sinal SERIAL" if (/sinal|signal/i.test(action)) { let serialNumber = match[2]; // Segundo grupo capturado diff --git a/src/topsapp/api.js b/src/topsapp/api.js new file mode 100644 index 0000000..87511be --- /dev/null +++ b/src/topsapp/api.js @@ -0,0 +1,333 @@ +const axios = require('axios'); +const https = require('https'); + +class TopSappAPI { + constructor() { + this.instances = { + 'guarai_colmeia': { + baseURL: 'https://131.0.192.6:9910', + name: 'Guarai e Colmeia', + cities: ['guarai', 'colmeia'] + }, + 'pedro_afonso': { + baseURL: 'https://45.189.140.18:9910', + name: 'Pedro Afonso', + cities: ['pedro afonso', 'pedro_afonso'] + } + }; + + this.sessions = new Map(); // Armazenar sessões ativas + + // Configurar axios para ignorar certificados SSL auto-assinados + this.axiosConfig = { + httpsAgent: new https.Agent({ + rejectUnauthorized: false + }), + timeout: 30000, + headers: { + 'Content-Type': 'multipart/form-data' + } + }; + + console.log('🔗 TopSappAPI inicializado'); + } + + /** + * Determina qual instância usar baseada na cidade/região + */ + getInstanceByLocation(location = '') { + const loc = location.toLowerCase(); + + // Pedro Afonso + if (loc.includes('pedro') || loc.includes('afonso')) { + return this.instances.pedro_afonso; + } + + // Guarai e Colmeia (padrão) + return this.instances.guarai_colmeia; + } + + /** + * Realizar login na API + */ + async login(instance, credentials) { + try { + console.log(`🔐 Fazendo login na instância: ${instance.name}`); + + const formData = new FormData(); + formData.append('usuario', credentials.usuario); + formData.append('senha', credentials.senha); + formData.append('identificador', credentials.identificador || 'BotTelegram'); + formData.append('idUsuario', credentials.idUsuario || '1'); + + const response = await axios.post( + `${instance.baseURL}/Login`, + formData, + this.axiosConfig + ); + + if (response.data && response.data.status === 'success') { + const sessionId = response.data.sessao; + this.sessions.set(instance.baseURL, { + sessionId, + timestamp: Date.now(), + instance + }); + + console.log(`✅ Login realizado com sucesso na instância: ${instance.name}`); + return { success: true, sessionId, instance }; + } else { + throw new Error(response.data?.message || 'Login falhou'); + } + + } catch (error) { + console.error(`❌ Erro no login da instância ${instance.name}:`, error.message); + return { + success: false, + error: error.message, + instance + }; + } + } + + /** + * Verificar se a sessão está válida + */ + isSessionValid(instanceURL) { + const session = this.sessions.get(instanceURL); + if (!session) return false; + + // Sessão expira em 30 minutos + const thirtyMinutes = 30 * 60 * 1000; + return (Date.now() - session.timestamp) < thirtyMinutes; + } + + /** + * Obter sessão válida ou fazer novo login + */ + async getValidSession(instance, credentials) { + if (this.isSessionValid(instance.baseURL)) { + return this.sessions.get(instance.baseURL); + } + + const loginResult = await this.login(instance, credentials); + if (loginResult.success) { + return this.sessions.get(instance.baseURL); + } + + throw new Error(`Não foi possível autenticar na instância ${instance.name}`); + } + + /** + * Fazer requisição autenticada para a API + */ + async makeRequest(endpoint, data = {}, instance, credentials) { + try { + const session = await this.getValidSession(instance, credentials); + + const formData = new FormData(); + formData.append('sessao', session.sessionId); + + // Adicionar parâmetros extras + Object.keys(data).forEach(key => { + if (data[key] !== undefined && data[key] !== null) { + formData.append(key, data[key]); + } + }); + + console.log(`📡 Fazendo requisição para: ${instance.baseURL}/${endpoint}`); + + const response = await axios.post( + `${instance.baseURL}/${endpoint}`, + formData, + this.axiosConfig + ); + + if (response.data && response.data.status === 'success') { + return { + success: true, + data: response.data, + instance: instance.name + }; + } else { + throw new Error(response.data?.message || 'Requisição falhou'); + } + + } catch (error) { + console.error(`❌ Erro na requisição ${endpoint}:`, error.message); + return { + success: false, + error: error.message, + instance: instance.name + }; + } + } + + /** + * Buscar cliente por nome, CPF ou ID + */ + async buscarCliente(query, location = '', credentials) { + const instance = this.getInstanceByLocation(location); + + try { + // Tentar buscar por diferentes critérios + const searchParams = {}; + + // Se é número, pode ser CPF ou ID + if (/^\d+$/.test(query)) { + if (query.length === 11) { + searchParams.cpf = query; + } else { + searchParams.idCliente = query; + } + } else { + // Buscar por nome + searchParams.nome = query; + } + + const result = await this.makeRequest('ObterClientes', searchParams, instance, credentials); + + if (result.success) { + return { + success: true, + clientes: result.data.clientes || [], + instance: result.instance + }; + } + + return result; + + } catch (error) { + return { + success: false, + error: error.message, + instance: instance.name + }; + } + } + + /** + * Obter dados detalhados do cliente + */ + async obterDadosCliente(idCliente, location = '', credentials) { + const instance = this.getInstanceByLocation(location); + + return await this.makeRequest('ObterClientes', { idCliente }, instance, credentials); + } + + /** + * Obter serviços do cliente + */ + async obterServicosCliente(idCliente, location = '', credentials) { + const instance = this.getInstanceByLocation(location); + + return await this.makeRequest('ObterClientesServicos', { idCliente }, instance, credentials); + } + + /** + * Obter faturas em aberto do cliente + */ + async obterFaturas(idCliente, location = '', credentials) { + const instance = this.getInstanceByLocation(location); + + return await this.makeRequest('ObterDocReceber', { + idCliente, + situacao: 1 // Faturas em aberto + }, instance, credentials); + } + + /** + * Obter dados para pagamento da fatura (linha digitável) + */ + async obterDadosFatura(idFatura, location = '', credentials) { + const instance = this.getInstanceByLocation(location); + + return await this.makeRequest('ObterDocReceberDadosFatura', { idFatura }, instance, credentials); + } + + /** + * Obter boleto em Base64 + */ + async obterBoletoBase64(idFatura, location = '', credentials) { + const instance = this.getInstanceByLocation(location); + + return await this.makeRequest('ObterDocReceberBase64', { idFatura }, instance, credentials); + } + + /** + * Alterar status do serviço (bloquear/liberar) + */ + async alterarStatusServico(idServico, status, location = '', credentials) { + const instance = this.getInstanceByLocation(location); + + // Status: 1 = Ativo, 2 = Bloqueado, 3 = Desativado + return await this.makeRequest('AlterarServicoStatus', { + idServico, + status + }, instance, credentials); + } + + /** + * Bloquear serviço do cliente + */ + async bloquearServico(idServico, location = '', credentials) { + return await this.alterarStatusServico(idServico, 2, location, credentials); + } + + /** + * Liberar serviço do cliente + */ + async liberarServico(idServico, location = '', credentials) { + return await this.alterarStatusServico(idServico, 1, location, credentials); + } + + /** + * Listar todas as instâncias disponíveis + */ + getInstances() { + return Object.values(this.instances); + } + + /** + * Converter Base64 para PDF + */ + convertBase64ToPDF(base64String, filename = 'boleto.pdf') { + try { + // Remove header se presente (data:application/pdf;base64,) + const base64Data = base64String.replace(/^data:application\/pdf;base64,/, ''); + + // Converte para buffer + const buffer = Buffer.from(base64Data, 'base64'); + + return { + success: true, + buffer, + filename, + mimeType: 'application/pdf' + }; + + } catch (error) { + return { + success: false, + error: error.message + }; + } + } + + /** + * Limpar sessões expiradas + */ + clearExpiredSessions() { + const thirtyMinutes = 30 * 60 * 1000; + const now = Date.now(); + + for (const [instanceURL, session] of this.sessions.entries()) { + if ((now - session.timestamp) >= thirtyMinutes) { + this.sessions.delete(instanceURL); + console.log(`🧹 Sessão expirada removida: ${session.instance.name}`); + } + } + } +} + +module.exports = TopSappAPI; diff --git a/src/topsapp/config.js b/src/topsapp/config.js new file mode 100644 index 0000000..0d0f13e --- /dev/null +++ b/src/topsapp/config.js @@ -0,0 +1,90 @@ +/** + * Configurações do TopSapp + */ +class TopSappConfig { + constructor() { + this.credentials = { + guarai_colmeia: { + usuario: process.env.TOPSAPP_GUARAI_USER || '', + senha: process.env.TOPSAPP_GUARAI_PASS || '', + identificador: process.env.TOPSAPP_GUARAI_ID || 'BotTelegram', + idUsuario: process.env.TOPSAPP_GUARAI_USERID || '1' + }, + pedro_afonso: { + usuario: process.env.TOPSAPP_PEDRO_USER || '', + senha: process.env.TOPSAPP_PEDRO_PASS || '', + identificador: process.env.TOPSAPP_PEDRO_ID || 'BotTelegram', + idUsuario: process.env.TOPSAPP_PEDRO_USERID || '1' + } + }; + + this.isConfigured = this.validateConfiguration(); + } + + /** + * Validar se as configurações estão completas + */ + validateConfiguration() { + const required = ['usuario', 'senha']; + + for (const instance in this.credentials) { + const creds = this.credentials[instance]; + for (const field of required) { + if (!creds[field]) { + console.warn(`⚠️ TopSapp: Campo ${field} não configurado para ${instance}`); + return false; + } + } + } + + console.log('✅ TopSapp: Configurações validadas'); + return true; + } + + /** + * Obter credenciais para uma instância + */ + getCredentials(instanceKey) { + return this.credentials[instanceKey] || null; + } + + /** + * Obter credenciais por localização + */ + getCredentialsByLocation(location = '') { + const loc = location.toLowerCase(); + + if (loc.includes('pedro') || loc.includes('afonso')) { + return this.credentials.pedro_afonso; + } + + return this.credentials.guarai_colmeia; + } + + /** + * Verificar se o TopSapp está configurado + */ + isReady() { + return this.isConfigured; + } + + /** + * Obter status da configuração + */ + getStatus() { + const status = {}; + + for (const instance in this.credentials) { + const creds = this.credentials[instance]; + status[instance] = { + configured: !!(creds.usuario && creds.senha), + usuario: creds.usuario ? '✅' : '❌', + senha: creds.senha ? '✅' : '❌' + }; + } + + return status; + } +} + +module.exports = TopSappConfig; diff --git a/src/topsapp/index.js b/src/topsapp/index.js new file mode 100644 index 0000000..f3e3198 --- /dev/null +++ b/src/topsapp/index.js @@ -0,0 +1,9 @@ +const TopSappAPI = require('./api'); +const TopSappConfig = require('./config'); +const TopSappManager = require('./manager'); + +module.exports = { + TopSappAPI, + TopSappConfig, + TopSappManager +}; diff --git a/src/topsapp/manager.js b/src/topsapp/manager.js new file mode 100644 index 0000000..c7adfb4 --- /dev/null +++ b/src/topsapp/manager.js @@ -0,0 +1,372 @@ +const TopSappAPI = require('./api'); +const TopSappConfig = require('./config'); +const fs = require('fs').promises; +const path = require('path'); + +class TopSappManager { + constructor() { + this.api = new TopSappAPI(); + this.config = new TopSappConfig(); + + // Limpar sessões expiradas a cada 10 minutos + setInterval(() => { + this.api.clearExpiredSessions(); + }, 10 * 60 * 1000); + + console.log('🎯 TopSappManager inicializado'); + } + + /** + * Verificar se o TopSapp está configurado e pronto + */ + isReady() { + return this.config.isReady(); + } + + /** + * Obter status de configuração + */ + getConfigStatus() { + return this.config.getStatus(); + } + + /** + * Buscar cliente por nome, CPF ou ID + */ + async buscarCliente(query, location = '') { + if (!this.isReady()) { + return { + success: false, + error: 'TopSapp não está configurado. Verifique as credenciais no arquivo .env' + }; + } + + try { + const credentials = this.config.getCredentialsByLocation(location); + const result = await this.api.buscarCliente(query, location, credentials); + + if (result.success && result.clientes) { + // Formatar resultados para melhor apresentação + const clientesFormatados = result.clientes.map(cliente => ({ + id: cliente.id, + nome: cliente.nome, + cpf: cliente.cpf, + email: cliente.email, + telefone: cliente.telefone, + endereco: `${cliente.endereco}, ${cliente.numero} - ${cliente.bairro}`, + cidade: cliente.cidade, + status: cliente.status, + instancia: result.instance + })); + + return { + success: true, + clientes: clientesFormatados, + total: clientesFormatados.length, + instancia: result.instance + }; + } + + return result; + + } catch (error) { + return { + success: false, + error: error.message + }; + } + } + + /** + * Obter dados completos do cliente + */ + async obterDadosCompletos(idCliente, location = '') { + if (!this.isReady()) { + return { + success: false, + error: 'TopSapp não está configurado' + }; + } + + try { + const credentials = this.config.getCredentialsByLocation(location); + + // Buscar dados do cliente, serviços e faturas em paralelo + const [dadosCliente, servicos, faturas] = await Promise.all([ + this.api.obterDadosCliente(idCliente, location, credentials), + this.api.obterServicosCliente(idCliente, location, credentials), + this.api.obterFaturas(idCliente, location, credentials) + ]); + + const resultado = { + success: true, + cliente: null, + servicos: [], + faturas: [], + instancia: location + }; + + if (dadosCliente.success && dadosCliente.data.clientes) { + resultado.cliente = dadosCliente.data.clientes[0]; + } + + if (servicos.success && servicos.data.servicos) { + resultado.servicos = servicos.data.servicos; + } + + if (faturas.success && faturas.data.faturas) { + resultado.faturas = faturas.data.faturas; + } + + return resultado; + + } catch (error) { + return { + success: false, + error: error.message + }; + } + } + + /** + * Obter boletos do cliente + */ + async obterBoletos(idCliente, location = '') { + if (!this.isReady()) { + return { + success: false, + error: 'TopSapp não está configurado' + }; + } + + try { + const credentials = this.config.getCredentialsByLocation(location); + const faturas = await this.api.obterFaturas(idCliente, location, credentials); + + if (!faturas.success) { + return faturas; + } + + const boletos = []; + + for (const fatura of faturas.data.faturas || []) { + // Obter dados da fatura (linha digitável) + const dadosFatura = await this.api.obterDadosFatura(fatura.id, location, credentials); + + const boleto = { + id: fatura.id, + valor: fatura.valor, + vencimento: fatura.vencimento, + status: fatura.status, + descricao: fatura.descricao, + linhaDigitavel: null + }; + + if (dadosFatura.success && dadosFatura.data.linhaDigitavel) { + boleto.linhaDigitavel = dadosFatura.data.linhaDigitavel; + } + + boletos.push(boleto); + } + + return { + success: true, + boletos, + total: boletos.length, + instancia: faturas.instance + }; + + } catch (error) { + return { + success: false, + error: error.message + }; + } + } + + /** + * Gerar PDF do boleto + */ + async gerarBoletoPDF(idFatura, location = '') { + if (!this.isReady()) { + return { + success: false, + error: 'TopSapp não está configurado' + }; + } + + try { + const credentials = this.config.getCredentialsByLocation(location); + const boletoBase64 = await this.api.obterBoletoBase64(idFatura, location, credentials); + + if (!boletoBase64.success) { + return boletoBase64; + } + + // Converter Base64 para PDF + const pdfResult = this.api.convertBase64ToPDF( + boletoBase64.data.arquivo, + `boleto_${idFatura}.pdf` + ); + + if (pdfResult.success) { + return { + success: true, + filename: pdfResult.filename, + buffer: pdfResult.buffer, + mimeType: pdfResult.mimeType, + instancia: boletoBase64.instance + }; + } + + return pdfResult; + + } catch (error) { + return { + success: false, + error: error.message + }; + } + } + + /** + * Salvar PDF do boleto em arquivo + */ + async salvarBoletoPDF(idFatura, location = '', outputDir = './boletos') { + try { + const resultado = await this.gerarBoletoPDF(idFatura, location); + + if (!resultado.success) { + return resultado; + } + + // Criar diretório se não existir + await fs.mkdir(outputDir, { recursive: true }); + + const filepath = path.join(outputDir, resultado.filename); + await fs.writeFile(filepath, resultado.buffer); + + return { + success: true, + filepath, + filename: resultado.filename, + instancia: resultado.instancia + }; + + } catch (error) { + return { + success: false, + error: error.message + }; + } + } + + /** + * Bloquear cliente + */ + async bloquearCliente(idCliente, location = '') { + if (!this.isReady()) { + return { + success: false, + error: 'TopSapp não está configurado' + }; + } + + try { + const credentials = this.config.getCredentialsByLocation(location); + + // Obter serviços do cliente + const servicos = await this.api.obterServicosCliente(idCliente, location, credentials); + + if (!servicos.success) { + return servicos; + } + + const resultados = []; + + // Bloquear todos os serviços ativos + for (const servico of servicos.data.servicos || []) { + if (servico.status === 1) { // Apenas serviços ativos + const resultado = await this.api.bloquearServico(servico.id, location, credentials); + resultados.push({ + servicoId: servico.id, + descricao: servico.descricao, + resultado + }); + } + } + + return { + success: true, + servicosBloqueados: resultados, + total: resultados.length, + instancia: servicos.instance + }; + + } catch (error) { + return { + success: false, + error: error.message + }; + } + } + + /** + * Liberar cliente + */ + async liberarCliente(idCliente, location = '') { + if (!this.isReady()) { + return { + success: false, + error: 'TopSapp não está configurado' + }; + } + + try { + const credentials = this.config.getCredentialsByLocation(location); + + // Obter serviços do cliente + const servicos = await this.api.obterServicosCliente(idCliente, location, credentials); + + if (!servicos.success) { + return servicos; + } + + const resultados = []; + + // Liberar todos os serviços bloqueados + for (const servico of servicos.data.servicos || []) { + if (servico.status === 2) { // Apenas serviços bloqueados + const resultado = await this.api.liberarServico(servico.id, location, credentials); + resultados.push({ + servicoId: servico.id, + descricao: servico.descricao, + resultado + }); + } + } + + return { + success: true, + servicosLiberados: resultados, + total: resultados.length, + instancia: servicos.instance + }; + + } catch (error) { + return { + success: false, + error: error.message + }; + } + } + + /** + * Obter instâncias disponíveis + */ + getInstances() { + return this.api.getInstances(); + } +} + +module.exports = TopSappManager;