Pular para o conteúdo

API de promoções

Como as promoções funcionam: Promoções. O equivalente na CLI é dtvsol promo …. Autenticação e erros: veja a visão geral da API.

Todas as promoções (ativas agora ou não) e a velocidade atual de cada plano — ou em outro momento, com at.

Nome Em Tipo Observações
at query string YYYY-MM-DD HH:MM (horário local do roteador): as velocidades naquele momento, como pré-visualização.
Janela do terminal
curl -s "http://ROUTER-IP:8880/promotions" -H "X-API-Key: YOUR_API_KEY"
{
"ok": true,
"at": "2026-10-03 sat 23:30",
"preview": false,
"promotions": [
{"name": "nights", "enabled": true, "down": 3.0, "up": 1.0, "max_mbps": 1000, "days": [],
"from": "22:00", "to": "06:00", "start": null, "end": null, "plans": [], "comment": "",
"active": true, "words": "×3 down ×1 up, up to 1000 Mb/s, every day, 22:00–06:00, all plans"}
],
"plans": {
"plan_100_100": {"down_mbps": 300, "up_mbps": 100, "base_down_mbps": 100, "base_up_mbps": 100,
"promotions": ["nights"]}
},
"applied": {"speeds": {"plan_100_100": [300, 100]}, "at": "2026-10-03 23:30:00", "router_shaped": 12}
}

Adiciona uma promoção, ou altera a que tem esse nome (só os campos informados mudam).

Nome Em Tipo Observações
name body string 1–40 letras, dígitos, -, _. Obrigatório.
down, up body number Multiplicadores de 1 a 10 (1 = sem alteração). Pelo menos um acima de 1.
max_mbps body integer O teto em Mbit/s; 0 ou null = nenhum.
days body array or string sun mon tue wed thu fri sat; vazio ou all = todos os dias.
from, to body string HH:MM, os dois ou nenhum (nenhum = o dia inteiro).
start, end body string YYYY-MM-DD, o primeiro e o último dia.
plans body array or string Nomes de planos; vazio = todos os planos.
enabled body boolean Padrão true; false a mantém sem executá-la.
comment body string Até 120 caracteres.
Janela do terminal
curl -s -X POST "http://ROUTER-IP:8880/promotions" -H "X-API-Key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "saturday", "down": 2, "up": 2, "days": ["sat"]}'

{"ok": true, "message": "promotion saturday: ×2, sat, all plans", "promotion": {…}, "active": false, "applied": {"changed": false}}; 400 para um valor inválido, 404 para um plano desconhecido.

Exclui uma promoção; as velocidades voltam na hora. 404 quando não existe nenhuma com esse nome.

Todos os serviços de cada OLT cadastrada, e se o seu service-port está nas tabelas de tráfego próprias do seu plano (que uma promoção pode aumentar só para aquele plano).

Nome Em Tipo Observações
olt query string Só esta OLT.
{
"ok": true,
"olts": {
"olt-1": {
"shared": 1,
"services": [
{"id": "svc_1a2b3c4d", "name": "…", "plan": "plan_100_100", "pon": "0/1/3", "ont_id": 5,
"download_table": "dtvsol-r107520", "upload_table": "dtvsol-r107520", "own_tables": false}
]
}
}
}

Executa o plan-sync na OLT e depois move, um depois do outro, todos os serviços que ainda estão em uma tabela compartilhada para as tabelas próprias do seu plano.

Nome Em Tipo Observações
olt body string A OLT. Obrigatório.
confirm body boolean Sem ele, só a lista do que seria movido (dry_run: true, would_move).

{"ok": true, "moved": ["svc_…"], "failed": []}; 502 com os serviços que falharam.

O mesmo que POST /promotions com o nome no caminho; com {"delete": true} exclui a promoção, como faz DELETE /promotions/{name}.

Este site foi escrito com a ajuda de IA e revisado pela nossa equipe.