Skip to content

Integrações (API) ​

Os produtos Integrador conversam entre si — e com o ERP que o provedor já usa — por APIs HTTP autenticadas. Esta seção descreve, produto por produto, o que cada API oferece: como se autenticar, quais recursos existem e um exemplo de chamada. É a referência para quem integra um sistema próprio ou confere o que está ligado entre os produtos.

Para quem é

Para o técnico de TI do provedor e para o desenvolvedor que integra. O operador do dia a dia não precisa disto: as integrações entre os produtos são ligadas nas telas de Integrações e na Loja de Plugins de cada sistema, sem escrever código.

O padrão "ilha" ​

Cada produto Integrador é uma ilha: tem o seu banco de dados, o seu painel e as suas regras. Uma ilha nunca lê o banco da outra — ela só conversa por API HTTP autenticada. Na prática:

  • Cada produto publica as rotas que quer que os outros usem (o "webservice") e exige uma chave em toda chamada.
  • Quem chama recebe só o que a chave permite — por escopo (o que pode fazer) e, no ISP, por filial (o que enxerga).
  • Quando algo acontece do outro lado (mensagem entregue, contrato assinado, roteador configurado), a ilha avisa de volta por webhook assinado.

Quem conversa com quem ​

De → ParaPara quê
OMNI → ISPConsultar cliente, contrato, fatura, nota e O.S. durante o atendimento; pedir desbloqueio de confiança; abrir atendimento e O.S.
ISP → OMNIEnviar mensagens e avisos de cobrança pelo WhatsApp; abrir atendimento com modelo para leads do Kanban comercial.
OMNI → IXC, SGP, HubSoftLer o cadastro, o contrato e as faturas do cliente no ERP de terceiros (somente leitura nos dois últimos).
ACS → ISPDescobrir de quem é um roteador (login PPPoE, serial da ONU).
ISP → ACSAplicar PPPoE, Wi-Fi, reinício e padrão da empresa nos roteadores dos clientes; manter o espelho de conexões.
OMNI → ACSTrocar senha e nome do Wi-Fi, reiniciar roteador, consultar equipamento.
ASSINA → ISPBuscar as O.S. de assinatura de contrato e devolver o link e a conclusão.
ISP → ASSINAMandar o documento para assinatura e consultar o resultado.
SQUAD ⇄ OMNIO OMNI entrega a conversa; o SQUAD decide e devolve a resposta pronta (IA).
Sistemas da casa → OMNI (Canal Integrador)Abrir chamado de suporte entre produtos.

Chaves por escopo ​

Toda chamada leva uma chave de API. A chave nasce na tela de integração do produto que recebe a chamada.

ProdutoCabeçalhoFormatoEscopos
Integrador ISPX-API-Keytoken gerado na tela de integraçõesleitura, desbloqueio, atendimento, acs, assinatura, cadastro — e recorte por filial
Integrador OMNIX-API-Keyio_live_…messages.send, messages.read, tecnico
Integrador ACSAuthorization: Bearerisp_… (ISP) ou omni_… (OMNI)leitura, wifi, reboot, pppoe, cadastro, reset
Integrador ASSINAX-API-Keychave da empresa ou chave por integração— (a chave identifica a empresa)
Integrador SQUADAuthorization: Bearertoken "T1" por empresa—
Integrador PONTOAuthorization: Bearersessão do RH ou do terminal—

Atenção

  • Trate a chave como senha: não a coloque em código público nem em mensagens. Se vazar, gere outra — a anterior deixa de valer.
  • Dê à chave só os escopos de que o sistema precisa. Uma integração de consulta não precisa de escopo de escrita.
  • Um recurso fora do alcance da chave responde como se não existisse (o ISP devolve 404 em ambos os casos), para a chave nunca descobrir o que há fora dela.

Webhooks com HMAC ​

Os avisos de volta chegam como POST com o corpo em JSON e uma assinatura HMAC-SHA256 do corpo, calculada com um segredo combinado entre as duas pontas. Quem recebe deve conferir a assinatura antes de confiar no conteúdo.

Quem enviaCabeçalho da assinaturaEvento principal
OMNIX-Integrador-Omni-Signature: sha256=<hex> (e X-Integrador-Omni-Event)message.sent, message.delivered, message.read, message.failed
ASSINAX-Assina-Signature: sha256=<hex>documento.concluido
ACSX-Acs-Signature: sha256=<hex>lote de eventos de aparelho ({"eventos": [...]})

Como conferir (em qualquer linguagem): calcule o HMAC-SHA256 dos bytes exatos do corpo recebido, com o segredo, em hexadecimal, e compare com o valor do cabeçalho em tempo constante. Não reserialize o JSON antes de calcular: a assinatura vale para os bytes originais.

bash
# conferindo uma assinatura de teste (valores fictícios)
printf '%s' '{"evento":"message.delivered","outbox_id":101}' \
  | openssl dgst -sha256 -hmac 'segredo-de-exemplo'

Convenções comuns ​

  • JSON em tudo, com datas em ISO-8601 e dinheiro como texto decimal ("119.90"), nunca número com ponto flutuante.
  • Idempotência: toda escrita importante aceita (ou exige) o cabeçalho Idempotency-Key. Repetir a chamada com a mesma chave devolve a mesma resposta, sem fazer a ação de novo — use quando precisar reenviar após uma falha de rede.
  • Limite de chamadas por chave: o excesso responde 429. Respeite o tempo de espera.
  • Erros: 400 entrada inválida; 401 sem chave ou chave inválida; 403 chave sem o escopo; 404 não existe (ou fora do alcance); 409 recusa de regra de negócio, com um motivo; 422 corpo inválido.

Um exemplo para começar ​

Descobrir o que uma chave do ISP alcança:

bash
curl -s https://isp.exemplo.com.br/api/webservice/v1/sobre/ \
  -H "X-API-Key: chave-de-exemplo"

Páginas desta seção ​

Integrador · software para provedores de internet · integradorisp.com.br