Logotipo RC ACS - Sistema para Provedores de Internet

Referência de API

A API REST do RC ACS permite que integradores — ERPs, sistemas internos, scripts de automação — gerenciem CPEs programaticamente. Esta página documenta os principais endpoints, métodos de autenticação e exemplos de uso.

Atenção: As URLs e parâmetros abaixo são exemplos ilustrativos. A documentação completa e interativa via Swagger estará disponível em sua instância do RC ACS em /api-docs. Os endpoints reais podem variar conforme a versão instalada. Esta página é um guia conceitual — sempre consulte o Swagger da sua instância para detalhes exatos.

Visão geral

  • Protocolo: REST sobre HTTPS
  • Formato de dados: JSON (Content-Type: application/json)
  • Versão atual: v3
  • URL base: https://seu-acs.dominio.com/api/v1/
  • Documentação Swagger: https://seu-acs.dominio.com/api-docs

Autenticação

A autenticação na API é feita via API Key enviada no cabeçalho HTTP. O formato esperado:

Authorization: Bearer <sua-api-key>

O mecanismo exato de autenticação (Bearer token, X-API-Key ou custom header) será confirmado pelo time de desenvolvimento e documentado no Swagger da sua instância.

Para gerar uma chave de API:

  1. Acesse o painel do RC ACS como Administrador.
  2. Navegue até Administração → Usuários → Chaves de API.
  3. Clique em Nova chave e defina nome, permissões e validade.
  4. Copie a chave gerada — ela será exibida apenas uma vez.

Dica: Armazene a chave de API com segurança. Nunca a inclua em código-fonte versionado. Use variáveis de ambiente (ACS_API_KEY) ou cofre de segredos.

Endpoints

CPEs

Gerencie CPEs individualmente ou em lote. Principais endpoints:

Método URL Descrição Parâmetros
GET /api/v1/cpes Listar todos os CPEs gerenciados ?status=online, ?page=1&limit=50, ?search=serial
GET /api/v1/cpes/{id} Consultar detalhes de um CPE específico {id} = serial ou ID interno
POST /api/v1/cpes Cadastrar novo CPE no ACS (provisionamento) JSON: serial, preset_id, cliente
PATCH /api/v1/cpes/{id} Alterar configuração de um CPE JSON: parâmetros TR-069 (SSID, senha, VLAN, etc.)
POST /api/v1/cpes/{id}/reboot Reiniciar CPE remotamente
POST /api/v1/cpes/{id}/firmware Atualizar firmware do CPE JSON: version ou firmware_id
DELETE /api/v1/cpes/{id} Remover CPE do ACS

Diagnósticos

Execute testes e diagnósticos a partir do CPE. Principais endpoints:

Método URL Descrição Parâmetros
POST /api/v1/cpes/{id}/diagnostics/speedtest Executar teste de velocidade no CPE
GET /api/v1/cpes/{id}/diagnostics/speedtest/{task_id} Consultar resultado de speed test {task_id} retornado no POST
POST /api/v1/cpes/{id}/diagnostics/ping Executar ping a partir do CPE JSON: host, count (opcional)
POST /api/v1/cpes/{id}/diagnostics/traceroute Executar traceroute a partir do CPE JSON: host, max_hops (opcional)

Usuários

Gerencie o acesso de operadores ao RC ACS. Principais endpoints:

Método URL Descrição Parâmetros
GET /api/v1/users Listar usuários do ACS ?role=admin, ?status=active
POST /api/v1/users Criar novo usuário JSON: username, password, role
PATCH /api/v1/users/{id} Alterar permissões de usuário JSON: role, status
DELETE /api/v1/users/{id} Desativar usuário

Exemplos de uso

cURL

# Listar todos os CPEs
curl -X GET "https://acs.seuisp.com.br/api/v1/cpes" \
  -H "Authorization: Bearer sua-api-key" \
  -H "Content-Type: application/json"

# Consultar um CPE específico
curl -X GET "https://acs.seuisp.com.br/api/v1/cpes/ABC123456" \
  -H "Authorization: Bearer sua-api-key"

# Provisionar novo CPE
curl -X POST "https://acs.seuisp.com.br/api/v1/cpes" \
  -H "Authorization: Bearer sua-api-key" \
  -H "Content-Type: application/json" \
  -d '{"serial": "ABC123456", "preset_id": "residencial-100mbps", "cliente": "João Silva"}'

# Alterar SSID e senha Wi-Fi
curl -X PATCH "https://acs.seuisp.com.br/api/v1/cpes/ABC123456" \
  -H "Authorization: Bearer sua-api-key" \
  -H "Content-Type: application/json" \
  -d '{"ssid": "CasaDoJoao", "wifi_password": "novaSenhaSegura123"}'

# Reiniciar CPE
curl -X POST "https://acs.seuisp.com.br/api/v1/cpes/ABC123456/reboot" \
  -H "Authorization: Bearer sua-api-key"

Python

import requests
import os

API_BASE = "https://acs.seuisp.com.br/api/v1"
API_KEY = os.environ.get("ACS_API_KEY")

headers = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json"
}

# Listar CPEs online
response = requests.get(f"{API_BASE}/cpes?status=online", headers=headers)
cpes = response.json()
for cpe in cpes["data"]:
    print(f"{cpe['serial']} - {cpe['fabricante']} - {cpe['modelo']}")

# Provisionar novo CPE
novo_cpe = {
    "serial": "XYZ987654",
    "preset_id": "residencial-300mbps",
    "cliente": "Maria Souza"
}
response = requests.post(f"{API_BASE}/cpes", headers=headers, json=novo_cpe)
if response.status_code == 201:
    print("CPE provisionado com sucesso!")

# Executar speed test
response = requests.post(
    f"{API_BASE}/cpes/XYZ987654/diagnostics/speedtest",
    headers=headers
)
task = response.json()
print(f"Speed test agendado. ID: {task['task_id']}")

PHP

 $http_code, 'body' => json_decode($response, true)];
}

// Listar CPEs
$result = acs_request('GET', '/cpes?status=online');
foreach ($result['body']['data'] as $cpe) {
    echo $cpe['serial'] . " - " . $cpe['fabricante'] . "\n";
}

// Reiniciar CPE
$result = acs_request('POST', '/cpes/ABC123456/reboot');
if ($result['status'] === 202) {
    echo "Reboot agendado com sucesso.\n";
}

Códigos de erro

Código Descrição Ação recomendada
200 OK — requisição bem-sucedida
201 Created — recurso criado com sucesso
202 Accepted — comando aceito, em processamento (ex: reboot) Acompanhe status via GET no recurso
400 Bad Request — parâmetros inválidos ou ausentes Verifique o corpo da requisição. Consulte o Swagger para parâmetros obrigatórios.
401 Unauthorized — chave de API inválida ou ausente Verifique se a chave está correta e não expirou. Gere nova chave se necessário.
403 Forbidden — permissão insuficiente A chave usada não tem permissão para esta ação. Use uma chave com privilégios adequados.
404 Not Found — recurso não encontrado Verifique o ID/serial do CPE ou usuário. Confirme que o recurso existe.
429 Too Many Requests — limite de taxa excedido Aguarde o tempo indicado no cabeçalho Retry-After e reenvie. Reduza a frequência de chamadas.
500 Internal Server Error — erro interno do servidor Registre o request_id da resposta e reporte ao suporte.

Rate limits

Os limites de taxa (rate limits) serão definidos pelo time de desenvolvimento e estarão documentados no Swagger da sua instância. Expectativa preliminar: limites por chave de API com janela deslizante, cabeçalhos X-RateLimit-Limit, X-RateLimit-Remaining e Retry-After em caso de estouro.

Recomendações gerais:

  • Use paginação em listagens (parâmetros ?page= e ?limit=).
  • Evite polling agressivo — para monitoramento contínuo, prefira webhooks (consulte a documentação de disparo de eventos).
  • Implemente backoff exponencial com jitter em caso de 429.
  • Cacheie respostas que mudam pouco (ex: lista de presets, lista de CPEs compatíveis).

Perguntas frequentes

A API retorna dados em tempo real ou cache?

Status de CPE (online/offline) e métricas imediatas são em tempo real. Listagens e consultas de configuração refletem o estado mais recente conhecido pelo ACS — que é atualizado a cada Inform do CPE (tipicamente a cada 30 minutos, configurável). Para forçar uma atualização imediata, você pode enviar um comando de refresh via API.

Posso usar a API para migrar CPEs de outro ACS para o RC ACS?

Sim. A migração de CPEs de outro ACS é um caso de uso suportado. O procedimento envolve: (1) alterar a URL do ACS no CPE (via preset ou configuração manual), (2) cadastrar o CPE no RC ACS via API, (3) o CPE se conecta ao novo ACS no próximo Inform. Consulte o guia de presets e entre em contato com nossa equipe de implantação para planejar a migração.

Leia também

Nesta página