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.
GET /promotions
Seção intitulada “GET /promotions”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. |
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}}POST /promotions
Seção intitulada “POST /promotions”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. |
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.
DELETE /promotions/{name}
Seção intitulada “DELETE /promotions/{name}”Exclui uma promoção; as velocidades voltam na hora. 404 quando não existe nenhuma com esse nome.
GET /plan-tables
Seção intitulada “GET /plan-tables”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} ] } }}POST /plan-tables/move
Seção intitulada “POST /plan-tables/move”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.
POST /promotions/{name}
Seção intitulada “POST /promotions/{name}”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.