Opzio API Reference
Documentação completa dos endpoints REST do sistema Opzio. Todos os endpoints retornam JSON e seguem o padrão HTTP de status codes.
servix_session definido no login. Para integrações server-to-server, passe o header x-tecnico-id com o ID do técnico.
Auth
Login e logout de usuários — atendentes e técnicos.
| Campo | Tipo | Descrição |
|---|---|---|
| usuario | string | Login do usuário obrigatório |
| senha | string | Senha do usuário obrigatório |
Agenda Técnica
Consulta a agenda de OS diretamente do ERP, agrupada por técnico. Fonte de verdade para o painel e o app do técnico.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| data | string | Data única no formato YYYY-MM-DD opcional |
| inicio | string | Data inicial do período YYYY-MM-DD opcional |
| fim | string | Data final do período YYYY-MM-DD opcional |
Atribuições de OS
Listagem e atribuição de ordens de serviço a técnicos.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| tecnicoId | string | Filtrar por técnico opcional |
| apenasHoje | "1" | Retornar apenas OS do dia opcional |
| todos | "1" | Incluir todos os status opcional |
| comBaixas | "1" | Incluir OS concluídas opcional |
| Campo | Tipo | Descrição |
|---|---|---|
| osId | string | ID da OS no ERP obrigatório |
| tecnicoId | string | ID do técnico obrigatório |
| tecnicoNome | string | Nome do técnico obrigatório |
| clienteNome | string | Nome do cliente opcional |
| tipoOS | string | Tipo da OS opcional |
| dataAgendada | string | Data agendada YYYY-MM-DD opcional |
Atualizar OS no ERP
Atualiza campos de uma OS diretamente no ERP via API REST.
| Campo | Tipo | Descrição |
|---|---|---|
| osId | string | ID da OS obrigatório |
| os_prioridade | number | 1=Alta · 2=Normal · 3=Baixa opcional |
| status | string | Novo status da OS opcional |
Finalizar OS
Encerra uma OS no ERP e registra o serviço realizado, com suporte a upload de fotos.
| Campo | Tipo | Descrição |
|---|---|---|
| osId | string | ID da OS obrigatório |
| relato | string | Descrição do serviço realizado obrigatório |
| fotos | string[] | Array de imagens em base64 opcional |
| tecnicoId | string | ID do técnico opcional |
Massiva de Rede
Detecção e gestão de falhas em massa. Quando detectada, notifica automaticamente os clientes afetados via WhatsApp.
Executa a detecção automática e retorna todos os grupos de massiva ativos.
| Campo | Tipo | Descrição |
|---|---|---|
| action | string | "confirmar" · "dispersar" · "atualizar" obrigatório |
| grupoId | string | ID do grupo de massiva obrigatório |
| Action | Efeito |
|---|---|
| confirmar | Atribui todas as OS ao técnico responsável por massiva |
| dispersar | Libera as OS de volta para a fila de distribuição normal |
| atualizar | Re-executa a detecção e atualiza a lista |
Dados do Técnico
Informações de OS específica incluindo dados do cliente no ERP.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| osId | string | ID da OS obrigatório |
Localização do Técnico
| Campo | Tipo | Descrição |
|---|---|---|
| tecnicoId | string | ID do técnico obrigatório |
| lat | number | Latitude obrigatório |
| lng | number | Longitude obrigatório |
Controle de KM
| Parâmetro | Tipo | Descrição |
|---|---|---|
| tecnicoId | string | Filtrar por técnico opcional |
| data | string | Data YYYY-MM-DD opcional |
| Campo | Tipo | Descrição |
|---|---|---|
| tecnicoId | string | ID do técnico obrigatório |
| kmInicial | number | KM inicial do dia obrigatório |
| kmFinal | number | KM final do dia opcional |
| data | string | Data YYYY-MM-DD obrigatório |
Áreas de Cobertura
| Campo | Tipo | Descrição |
|---|---|---|
| areas | array | Array completo de áreas obrigatório |
Frota de Veículos
| Campo | Tipo | Descrição |
|---|---|---|
| veiculos | array | Array completo de veículos obrigatório |
Status do Sistema
Verifica se o sistema está operacional. Útil para monitoramento.
Monitor PON — Detecção Proativa
Monitora ONUs online/offline por PON via API FTTX do ERP. Detecta quedas de rede automaticamente antes de qualquer chamado de cliente. Chamado pelo cron a cada 5 minutos.
Consulta todas as OLTs ativas, conta ONUs online/offline por PON e compara com snapshot anterior. Cria alerta de massiva automaticamente se detectar queda ≥ 4 ONUs e ≥ 35% de queda relativa. Também detecta OLTs inacessíveis (queda total).
• Queda absoluta ≥ 4 ONUs offline
• Queda relativa ≥ 35% do baseline
• Baseline mínimo: 3 ONUs online no snapshot anterior
• Cooldown: 30 min por PON (evita alertas repetidos)
• OLT inacessível → todas ONUs do snapshot contam como offline
Retorna o snapshot mais recente de todas as PONs monitoradas, ordenado por quantidade de ONUs offline. Útil para debug e auditoria.
"oltId:slot:pon" — ex: "100122:1:3"
Estoque & Equipamentos
Controle de estoque de equipamentos (ONUs, cabos, splitters). Monitoramento de saldo e movimentações.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| categoria | string | Filtrar por categoria opcional |
| tecnicoId | string | Estoque de um técnico específico opcional |
| Campo | Tipo | Descrição |
|---|---|---|
| action | string | "entrada" · "saida" · "transferir" obrigatório |
| itemId | string | ID do item opcional — cria novo se omitido |
| nome | string | Nome do item opcional |
| quantidade | number | Quantidade a movimentar obrigatório |
| tecnicoId | string | Técnico origem/destino opcional |
| serial | string | Número de série opcional |
Cruza o estoque de ONUs com o status online/offline no ERP FTTX. Identifica ONUs instaladas que estão offline.
Rastreamento de Veículos
Rastreamento GPS em tempo real de veículos da frota. Histórico de rotas, cercas eletrônicas e alertas de saída de área.
| Campo | Tipo | Descrição |
|---|---|---|
| veiculoId | string | ID do veículo obrigatório |
| lat | number | Latitude obrigatório |
| lng | number | Longitude obrigatório |
| velocidade | number | Velocidade em km/h opcional |
| ignicao | boolean | Estado da ignição opcional |
| Parâmetro | Tipo | Descrição |
|---|---|---|
| veiculoId | string | ID do veículo obrigatório |
| data | string | Data YYYY-MM-DD opcional — padrão: hoje |
Retorna os polígonos de cercas eletrônicas cadastrados. Quando um veículo sai de uma cerca, é gerado um alerta automático.
Lista alertas gerados: saída de cerca eletrônica, excesso de velocidade ou ignição fora de horário.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| lido | "0"·"1" | Filtrar por lido/não lido opcional |
| veiculoId | string | Filtrar por veículo opcional |
Gestão de ONUs
Integração com o módulo FTTX do ERP para busca, autorização e gestão de ONUs na rede óptica.
| Campo | Tipo | Descrição |
|---|---|---|
| serial | string | Serial da ONU opcional |
| mac | string | MAC address da ONU opcional |
| oltId | number | ID da OLT para filtrar opcional |
| Campo | Tipo | Descrição |
|---|---|---|
| serial | string | Serial da ONU obrigatório |
| contratoId | string | ID do contrato no ERP obrigatório |
| templateId | number | ID do perfil de configuração obrigatório |
| vlan | number | VLAN do contrato (vem do info-sgp) obrigatório |
| Campo | Tipo | Descrição |
|---|---|---|
| osId | string | ID da OS obrigatório |
| serial | string | Serial da ONU fotografada obrigatório |
| foto | string | Imagem em base64 obrigatório |
Retorna os templates de provisão disponíveis no ERP (perfis de serviço GPON/EPON para autorização de ONUs).
Retorna status detalhado da ONU do cliente de uma OS: sinal RX, VLAN, uptime, status online. Usado pelo app do técnico em campo.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| osId | string | ID da OS obrigatório |
App do Técnico — Operações
Endpoints utilizados exclusivamente pelo app móvel do técnico em campo: ponto, pausa, rota, speed test, baixa e busca de contratos.
| Campo | Tipo | Descrição |
|---|---|---|
| tecnicoId | string | ID do técnico obrigatório |
| tipo | string | "entrada" · "saida" · "almoco_saida" · "almoco_retorno" obrigatório |
| lat | number | Latitude no momento do ponto opcional |
| lng | number | Longitude no momento do ponto opcional |
| foto | string | Selfie em base64 — processada no cliente com carimbo de data/hora BRT, endereço e coordenadas GPS via canvas + Nominatim opcional |
A foto é carimbada pelo app do técnico antes do envio: data/hora em BRT, endereço reverso via OpenStreetMap (Nominatim) e coordenadas GPS. Imagens são comprimidas para max 1280px JPEG 0.82 (~15–160 KB). Fotos são armazenadas em /uploads/ponto/YYYY-MM-DD/ e removidas automaticamente após 90 dias via crontab.
| Campo | Tipo | Descrição |
|---|---|---|
| tecnicoId | string | ID do técnico obrigatório |
| tipo | string | "iniciar" · "finalizar" obrigatório |
| motivo | string | Motivo da pausa opcional |
Técnico solicita confirmação de encerramento de OS. O atendente visualiza a solicitação no painel de baixas pendentes antes de confirmar no ERP.
| Campo | Tipo | Descrição |
|---|---|---|
| osId | string | ID da OS obrigatório |
| tecnicoId | string | ID do técnico obrigatório |
| relato | string | Relato do serviço realizado obrigatório |
| fotos | string[] | Fotos em base64 opcional |
| Campo | Tipo | Descrição |
|---|---|---|
| osId | string | ID da OS obrigatório |
| download | number | Velocidade de download em Mbps obrigatório |
| upload | number | Velocidade de upload em Mbps obrigatório |
| ping | number | Latência em ms opcional |
Retorna dados do contrato vinculado a uma OS: plano, status de pagamento, endereço técnico. CPF/CNPJ nunca são exibidos.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| osId | string | ID da OS obrigatório |
Retorna as OS do dia ordenadas por proximidade geográfica (rota otimizada). Exibido no app do técnico como lista de paradas em sequência.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| tecnicoId | string | ID do técnico obrigatório |
| data | string | Data YYYY-MM-DD opcional — padrão: hoje |
| Campo | Tipo | Descrição |
|---|---|---|
| tecnicoId | string | ID do técnico obrigatório |
| tipo | string | "inicial" · "final" obrigatório |
| foto | string | Foto do odômetro em base64 obrigatório |
| km | number | KM lido no odômetro opcional — pode ser extraído da foto por IA |
Reagendamento de OS
Controle de solicitações de reagendamento feitas por técnicos e processamento automático pelo sync diário.
Retorna solicitações de reagendamento filtradas por status. Quando status=aprovado, cada registro inclui o objeto atribuicao com coordenadas e endereço da OS — usado pelo mapa do admin e pelo app do técnico para exibir reagendadas aprovadas.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| status | string | "pendente" · "aprovado" · "rejeitado" · "todos" opcional — padrão: pendente |
| tecnicoId | string | Filtrar por técnico opcional |
O campo atribuicao só está presente quando status=aprovado e há uma OS vinculada no banco local.
| Campo | Tipo | Descrição |
|---|---|---|
| action | string | "criar" · "aprovar" · "rejeitar" obrigatório |
| osId | string | ID da OS obrigatório |
| tecnicoId | string | ID do técnico opcional |
| motivo | string | Motivo do reagendamento opcional |
| novaData | string | Nova data YYYY-MM-DD opcional |
Atualiza a data agendada de uma OS diretamente no ERP via API REST.
| Campo | Tipo | Descrição |
|---|---|---|
| osId | string | ID da OS no ERP obrigatório |
| novaData | string | Nova data YYYY-MM-DD obrigatório |
| tecnicoId | string | ID do técnico responsável opcional |
Chamado automaticamente pelo sync diário (passo 3b). Move todas as OS abertas de dias anteriores para a data atual no ERP.
Cruza coordenadas da OS com polígonos de áreas cadastradas e atribui ao técnico responsável por aquela área.
| Campo | Tipo | Descrição |
|---|---|---|
| osIds | string[] | Lista de IDs de OS para processar opcional — processa todas se omitido |
IA — Distribuição de OS
Motor de distribuição inteligente de ordens de serviço. Usa coordenadas, áreas, carga de trabalho e histórico para sugerir ou aplicar atribuições otimizadas.
Analisa as OS abertas do dia, cruza com áreas e carga dos técnicos, e aplica a distribuição otimizada. Registra no histórico.
| Campo | Tipo | Descrição |
|---|---|---|
| data | string | Data YYYY-MM-DD para distribuir opcional — padrão: hoje |
| forcar | boolean | Redistribuir mesmo OS já atribuídas opcional |
| apenasPreview | boolean | Só sugerir, não aplicar opcional |
Versão da distribuição com resposta em streaming para atualização em tempo real no painel. Aceita os mesmos parâmetros que /api/ia/distribuir.
Chamado pelo cron após o sync. Executa a distribuição automática completa sem intervenção humana. Registra log no histórico.
Busca OS diretamente do SGP, executa distribuição e salva atribuições. Equivalente ao script-auto mas forçando re-fetch do ERP.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| data | string | Filtrar por data YYYY-MM-DD opcional |
| limite | number | Máximo de registros opcional — padrão 30 |
Retorna métricas de desempenho: total distribuído, taxa de cobertura de áreas, média de OS por técnico.
Agrega dados de OS, atribuições e pontos para gerar insights operacionais: técnicos sobrecarregados, áreas com mais OS, taxa de resolução no prazo.
Ponto Eletrônico & RH
Gestão de jornada, correções de ponto, escala de trabalho, benefícios e lançamentos de RH.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| tecnicoId | string | Filtrar por técnico opcional |
| inicio | string | Data inicial YYYY-MM-DD obrigatório |
| fim | string | Data final YYYY-MM-DD obrigatório |
| Campo | Tipo | Descrição |
|---|---|---|
| action | string | "solicitar" · "aprovar" · "rejeitar" obrigatório |
| registroId | string | ID do registro de ponto obrigatório |
| novoHorario | string | Horário corrigido HH:MM opcional |
| motivo | string | Justificativa opcional |
Retorna escalas cadastradas (6x1, 5x2, 12x36, etc.) com horários de entrada, saída e configuração de folga.
| Campo | Tipo | Descrição |
|---|---|---|
| nome | string | Ex: "6x1 Semanal" obrigatório |
| tipo | string | "semanal" · "mensal" · "personalizado" obrigatório |
| horarioEntrada | string | Horário padrão de entrada HH:MM obrigatório |
| horarioSaida | string | Horário padrão de saída HH:MM obrigatório |
| Campo | Tipo | Descrição |
|---|---|---|
| tecnicoId | string | ID do técnico/funcionário obrigatório |
| escalaId | string | ID da escala obrigatório |
| dataInicio | string | Data de início YYYY-MM-DD obrigatório |
Retorna os benefícios ativos (VT, VR, plano de saúde, etc.) com valor e forma de desconto.
Registra adicionais, descontos, bônus, verbas rescisórias ou ausências (Atestado, Férias, Folga, Falta) para um funcionário. Quando o tipo é uma ausência e o período cobre o dia atual, o sistema redistribui automaticamente as OS abertas do técnico para outros técnicos disponíveis.
| Campo | Tipo | Descrição |
|---|---|---|
| tecnicoId | string | ID do funcionário obrigatório |
| tipo | string | "adicional" · "desconto" · "bonus" · "Atestado" · "Férias" · "Folga" · "Falta" obrigatório |
| descricao | string | Descrição do lançamento obrigatório |
| valor | number | Valor em R$ (não obrigatório para ausências) |
| dataInicio | string | Data inicial YYYY-MM-DD (obrigatório para ausências) |
| dataFim | string | Data final YYYY-MM-DD (obrigatório para ausências) |
| competencia | string | Mês/ano YYYY-MM obrigatório |
⚠️ OS com status em_deslocamento ou em_atendimento não são redistribuídas automaticamente — devem ser tratadas manualmente.
Cargos e Perfis de Colaborador
Gestão de cargos com controle de acesso por módulo. Cada cargo define quais módulos o colaborador pode acessar.
| Campo | Tipo | Descrição |
|---|---|---|
| id | string | ID do cargo (edição) opcional — omitir para criar |
| nome | string | Nome do cargo obrigatório |
| departamento | string | Departamento opcional |
| modulos | string[] | Lista de módulos permitidos opcional |
| salarioBase | number | Salário base R$ opcional |
Retorna todos os usuários com perfil colaborador, seu cargo e os módulos que têm acesso (herdados do cargo).
| Parâmetro | Tipo | Descrição |
|---|---|---|
| cargoId | string | Filtrar por cargo opcional |
| Campo | Tipo | Descrição |
|---|---|---|
| usuarioId | string | ID do usuário obrigatório |
| cargoId | string | ID do cargo obrigatório |
Folha de Pagamento
Apuração mensal da folha de pagamento. Calcula horas trabalhadas, extras, banco de horas, benefícios e lançamentos avulsos.
| Parâmetro | Tipo | Descrição |
|---|---|---|
| competencia | string | Mês/ano no formato YYYY-MM obrigatório |
| tecnicoId | string | Filtrar por funcionário opcional |
| Campo | Tipo | Descrição |
|---|---|---|
| action | string | "fechar" · "reabrir" · "calcular" obrigatório |
| competencia | string | YYYY-MM obrigatório |
INSS · IRRF · VT · VA
Tabelas legais usadas no cálculo da folha de pagamento. Os valores padrão seguem a legislação vigente e podem ser atualizados pelo administrador quando houver mudança na lei — sem necessidade de alteração no código.
Retorna as faixas de INSS e IRRF. Se não houver customização, retorna os valores padrão da legislação atual. Indica data e responsável da última atualização.
Sobrescreve uma tabela específica com os novos valores. A alteração é registrada com data e nome do responsável.
| Campo | Tipo | Descrição |
|---|---|---|
| chave | string | "inss" · "irrf_faixas" · "irrf_desconto" obrigatório |
| valor | array | Novas faixas conforme estrutura da tabela obrigatório |
| atualizadoPor | string | Nome do responsável pela atualização opcional |
Retorna os valores diários de Vale Transporte e Vale Alimentação configurados. Se não houver customização, retorna os valores padrão. Cada empresa configura os seus próprios valores.
| Campo | Tipo | Descrição |
|---|---|---|
| vtValorDia | number | Valor diário do Vale Transporte em R$ |
| vaValorDia | number | Valor diário do Vale Alimentação em R$ |
| vtDescontaAtestado | boolean | Descontar VT em dias de atestado |
| vaDescontaAtestado | boolean | Descontar VA em dias de atestado |
Retorna todas as escalas cadastradas. Cada escala define os dias e horários de trabalho. Pode ser atribuída individualmente a cada colaborador.
| Campo | Tipo | Descrição |
|---|---|---|
| id | string | ID da escala — omitir para criar nova opcional |
| nome | string | Nome da escala obrigatório |
| diasConfig | object | Configuração por dia da semana (seg/ter/qua/qui/sex/sab/dom) com entrada, saída e se está ativo obrigatório |
| Campo | Tipo | Descrição |
|---|---|---|
| userId | string | ID do colaborador obrigatório |
| escalaId | string | ID da escala obrigatório |
Relatórios e Emails
Geração e envio de relatórios por email. Relatório de KM diário, ponto eletrônico e resumos operacionais.
| Campo | Tipo | Descrição |
|---|---|---|
| tipo | string | "km_diario" · "ponto_mensal" · "resumo_os" obrigatório |
| destinatarios | string[] | Lista de emails obrigatório |
| horario | string | Horário de envio HH:MM opcional |
| ativo | boolean | Ativar/desativar envio opcional |
| Campo | Tipo | Descrição |
|---|---|---|
| relatorioId | string | ID do relatório obrigatório |
| data | string | Data de referência YYYY-MM-DD opcional — padrão: hoje |
Gestão de Usuários e Provedores
CRUD de usuários do painel e configuração de integrações com ERPs (SGP, IXC, MKAuth).
| Campo | Tipo | Descrição |
|---|---|---|
| id | string | ID do usuário (edição) opcional — omitir para criar |
| nome | string | Nome completo obrigatório |
| usuario | string | Login (único) obrigatório |
| senha | string | Senha obrigatório na criação |
| perfil | string | "admin" · "atendente" · "tecnico" · "colaborador" obrigatório |
| cor | string | Cor no mapa (hex) opcional |
| sgpId | string | ID do técnico no ERP opcional |
| ativo | boolean | Ativar/desativar acesso opcional |
Retorna as configurações de integração com os ERPs de internet (SGP, IXC, MKAuth). Inclui URL, status da conexão e últimas sincronizações.
| Campo | Tipo | Descrição |
|---|---|---|
| tipo | string | "sgp" · "ixc" · "mkauth" obrigatório |
| url | string | URL base do ERP obrigatório |
| token | string | Token de API obrigatório |
| usuario | string | Usuário da API opcional |
| senha | string | Senha da API opcional |
Painel do Atendente
Endpoints exclusivos do painel de atendimento: aprovação de baixas solicitadas pelos técnicos e gestão de remoções de OS.
Retorna todas as OS onde o técnico solicitou baixa via app mas ainda aguardam confirmação do atendente para encerrar no ERP.
| Campo | Tipo | Descrição |
|---|---|---|
| action | string | "aprovar" · "rejeitar" obrigatório |
| baixaId | string | ID da solicitação de baixa obrigatório |
| motivo | string | Motivo da rejeição opcional |
Remove uma OS da fila de distribuição local do Opzio (não altera o ERP). Usado quando uma OS foi cancelada ou tratada fora do sistema.
| Campo | Tipo | Descrição |
|---|---|---|
| osId | string | ID da OS obrigatório |
| motivo | string | Motivo da remoção opcional |
Implantação de Novo Cliente
Cada cliente Opzio é uma instância completamente isolada — banco de dados próprio, processo PM2 próprio e subdomínio próprio. Nenhum dado é compartilhado entre clientes.
sem dados fictícios
schema limpo (sem seed)
calculada por hash do nome
login: admin / senha definida
Rode no VPS como root. O script cria tudo automaticamente em 6 passos.
- Copia
/root/servix-demo/→/root/clientes/CLIENTE/(sem banco, sem dados demo) - Gera
.envexclusivo com DATABASE_URL, NEXTAUTH_SECRET e NEXTAUTH_URL - Cria
data/com JSONs vazios (massivas, áreas, estoque…) - Roda
npm install+prisma migrate deploy→ banco limpo - Cria usuário admin com a senha informada
- Build + PM2 na porta exclusiva + registra em
/root/clientes/registro.txt
SUBDOMINIO.servix.cgrltec.com.br → 127.0.0.1:PORTA
2. Cadastra técnicos (nome, login, cor no mapa)
3. Configura integração com ERP (SGP / IXC / MKAuth) — URL + credenciais
4. Sistema começa a puxar OS automaticamente via sync a cada 2 min
5. Ajusta áreas de cobertura no mapa para distribuição automática por IA