# Documentação Oficial da API de Integração Externa — AIPNET Gestão ISP

**Sistema:** AIPNET Gestão ISP (Brotas / SP)  
**Versão da API:** `1.0.0`  
**Compatibilidade:** 100% compatível com o **AIP-Painel (Sistema de Atendimento / Thalita IA)**, **RadiusNet API v1 (Drop-in)** e integrações **REST JSON modernas**.

---

## 1. Dados de Configuração para o AIP-Painel

Para conectar o **AIP-Painel** (`atendimento.aip.com.br`) diretamente ao **AIPNET**, acesse a tela de **Integrações -> RadiusNet Brotas** no AIP-Painel e preencha:

| Campo no AIP-Painel | Valor para Configurar |
| :--- | :--- |
| **Nome de Exibição** | `AIPNET Gestão ISP - Brotas` |
| **URL da API (Drop-in AIP-Painel)** | `https://aipnet.aip.com.br/radiusnet` |
| **URL Base REST Nativa** | `https://aipnet.aip.com.br/api/v1/integracao` |
| **Token (`RTOKEN` / `Bearer`)** | `aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b` |

> **Nota:** O AIP-Painel adiciona automaticamente `/index.php/api/v1` ao final da URL configurada. O AIPNET responde nativamente em:
> - `https://aipnet.aip.com.br/radiusnet/index.php/api/v1/...`
> - `https://aipnet.aip.com.br/index.php/api/v1/...`
> - `https://aipnet.aip.com.br/api/v1/integracao/...`

---

## 2. Autenticação

Todas as requisições (exceto download direto de PDF de boleto) devem conter o Token de Integração em **qualquer um** dos seguintes formatos:

1. **Header Padrão AIP-Painel / RadiusNet:**
   ```http
   RTOKEN: aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b
   Accept: application/json
   ```
2. **Header REST Padrão (Bearer Token):**
   ```http
   Authorization: Bearer aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b
   ```
3. **Header API Key:**
   ```http
   X-API-Key: aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b
   ```

---

## 3. Endpoints Compatíveis com AIP-Painel / Thalita (Padrão RadiusNet v1)

Base URL: `https://aipnet.aip.com.br/radiusnet/index.php/api/v1`

### 3.1. Testar Conexão e Listar Setores (`GET /st/`)
Usado pelo botão **Testar** do AIP-Painel e para listagem de setores de chamados.
```bash
curl -H "RTOKEN: aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b" "https://aipnet.aip.com.br/radiusnet/index.php/api/v1/st/"
```

### 3.2. Consultar Cliente, Contratos, Status e Roteador por CPF/CNPJ (`GET /cp/{cpf_cnpj}` ou `/cp/{cpf_cnpj}/5`)
Retorna dados cadastrais do assinante, status (`Ativo`, `Avisado`, `Bloqueado`), estado em tempo real do roteador/ONU (`statusRoteador`) e lista de contratos (`planos`) com login PPPoE, serial da ONT, porta PON, sinal óptico RX/TX e endereço.
```bash
curl -H "RTOKEN: aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b" "https://aipnet.aip.com.br/radiusnet/index.php/api/v1/cp/25913101812/5"
```

### 3.3. Consultar Faturas em Aberto / Não Pagas (`GET /cbp/np/{id_contrato}`)
Retorna todas as faturas pendentes (vencidas e a vencer) do contrato, incluindo linha digitável (47 dígitos), Nosso Número, Pix Copia e Cola e flag `isVencido`.
```bash
curl -H "RTOKEN: aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b" "https://aipnet.aip.com.br/radiusnet/index.php/api/v1/cbp/np/95"
```

### 3.4. Consultar Faturas Vencidas / Em Atraso (`GET /cbp/at/{id_contrato}`)
Retorna exclusivamente as faturas vencidas do contrato (usado pela URA/Thalita para elegibilidade de liberação em confiança).
```bash
curl -H "RTOKEN: aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b" "https://aipnet.aip.com.br/radiusnet/index.php/api/v1/cbp/at/95"
```

### 3.5. Consultar Faturas Pagas (`GET /cbp/pg/{id_contrato}`)
Retorna o histórico de faturas liquidadas do contrato.
```bash
curl -H "RTOKEN: aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b" "https://aipnet.aip.com.br/radiusnet/index.php/api/v1/cbp/pg/95"
```

### 3.6. Obter Link e PDF do Boleto Híbrido (`GET /bc/{id_cobranca}` e `/bc/{id_cobranca}/pdf`)
- `GET /bc/{id_cobranca}` retorna `{"rows": "https://aipnet.aip.com.br/index.php/api/v1/bc/{id_cobranca}/pdf"}`.
- `GET /bc/{id_cobranca}/pdf` entrega o arquivo **PDF real** do boleto híbrido Sicredi (Código de Barras + QR Code Pix).
```bash
curl -H "RTOKEN: aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b" "https://aipnet.aip.com.br/radiusnet/index.php/api/v1/bc/1050"
```

### 3.7. Obter QR Code e Pix Copia e Cola (`GET /qrp/{id_cobranca}`)
Retorna `qrcode_copy_paste` (EMV Pix) e `qrcode_base64` (imagem PNG do QR Code em Base64).
```bash
curl -H "RTOKEN: aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b" "https://aipnet.aip.com.br/radiusnet/index.php/api/v1/qrp/1050"
```

### 3.8. Liberação em Confiança / Desbloqueio Imediato (`PUT /ppg/{id_cobranca}`)
Desbloqueia imediatamente o cliente e o contrato no AIPNET, registra a promessa de pagamento, sincroniza o FreeRADIUS e envia pacote **CoA/Disconnect** na porta `3799` do MikroTik para reconectar o cliente na velocidade normal.
```bash
curl -X PUT -H "RTOKEN: aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b" "https://aipnet.aip.com.br/radiusnet/index.php/api/v1/ppg/1050"
```

### 3.9. Consultar Sessão PPPoE no FreeRADIUS (`GET /radacct`)
Consulta sessões ativas e histórico recente de conexões do login PPPoE.
```bash
curl -H "RTOKEN: aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b" "https://aipnet.aip.com.br/radiusnet/index.php/api/v1/radacct?page=1&limit=100&username=jairo.m"
```

### 3.10. Consultar e Abrir Chamados / O.S. (`GET /atl/{id_cliente}` e `POST /at/`)
- `GET /atl/{id_cliente}`: lista todas as Ordens de Serviço do assinante.
- `POST /at/`: abre uma nova Ordem de Serviço integrada à Central do Técnico AIP (`IDCP`, `IDST`, `IDSVC`, `DESC`).

---

## 4. Endpoints REST Nativos do AIPNET (`/api/v1/integracao`)

Além do modo compatível com RadiusNet, qualquer sistema externo pode consumir as rotas REST diretas:

| Método | Endpoint | Descrição |
| :--- | :--- | :--- |
| `GET` | `/api/v1/integracao/status` | Status operacional da API e métricas em tempo real |
| `GET` | `/api/v1/integracao/clientes/{cpf_cnpj}` | Ficha completa do cliente + contratos + faturas + sinal óptico |
| `GET` | `/api/v1/integracao/faturas/{identificador}` | Lista faturas por CPF/CNPJ, ID do Contrato ou ID do Cliente |
| `GET` | `/api/v1/integracao/boleto/{id_fatura}/pdf` | Download direto do PDF do boleto híbrido (Código de Barras + Pix) |
| `POST` | `/api/v1/integracao/liberar` | Liberação em confiança por `documento`, `contrato_id` ou `fatura_id` |
| `GET` | `/api/v1/integracao/sinal/{identificador}` | Diagnóstico óptico OLT Huawei + TR-069 (RX/TX dBm, PON, VLAN, Wi-Fi, VoIP) |
| `GET` | `/api/v1/integracao/conexao/{identificador}` | Status PPPoE em tempo real (IP, MAC, Uptime e histórico de quedas) |

### Exemplo de Consulta de Sinal Óptico e Wi-Fi (`GET /api/v1/integracao/sinal/{identificador}`)
Aceita **CPF/CNPJ**, **ID do Contrato**, **Login PPPoE** ou **Serial da ONT**:
```bash
curl -H "RTOKEN: aipnet_live_7f9c4e2b8a1d6f3e5c9b0a4d8e2f1a7c3b5d9e0f2a4c6e8b" "https://aipnet.aip.com.br/api/v1/integracao/sinal/jairo.m"
```
Resposta JSON:
```json
{
  "sucesso": true,
  "cliente_id": 256,
  "nome": "JAIRO RODRIGUES MARSON",
  "contrato_id": 95,
  "plano": "PLANO 500 MEGA",
  "status_contrato": "Ativo",
  "telemetria": {
    "online": true,
    "status": "online",
    "login_pppoe": "jairo.m",
    "ip": "100.64.12.45",
    "mac": "58:F2:FC:98:C6:4B",
    "serial_onu": "4857544305317592",
    "porta_pon": "0/6/7 ONT 12",
    "vlan": 27,
    "sinal_rx": "-19.40",
    "sinal_tx": "2.15",
    "qualidade_sinal": "Excelente / Ideal",
    "wifi_24g_ssid": "AIP_JAIRO_2G",
    "wifi_5g_ssid": "AIP_JAIRO_5G",
    "voip_ativo": false
  }
}
```
