Сравнение версий

Ключ

  • Эта строка добавлена.
  • Эта строка удалена.
  • Изменено форматирование.

...

Для этого нужно сделать запрос POST /auth/login с указанием пользователя и его пароля:

Блок кода
linenumberstrue
# POST /auth/login
{
    "username":  "admin",
    "password":  "qwerty123"
}


В ответ придет сгенерированный JWT токен:

Блок кода
# Response /auth/login
{
   "status":"success",
   "statuscode":"",
   "data":{
      "count":13,
      "total":0,
      "items":{
         "id":"103390aa-665d-453a-9c27-6d2c9a38fce4",
         "token":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1MjY0NjA3ODgsImxvY2F0aW9uIjoiZTY4NDI0ZWItNGFkMC00NTMxLTlmM2ItMmNiZTFkNTRhZjI5Iiwicm9sZSI6ImFkbWluIiwic2FsdCI6MTUyNjI4Nzk4ODE1NywidXNlcl9pZCI6IjEwMzM5MGFhLTY2NWQtNDUzYS05YzI3LTZkMmM5YTM4ZmNlNCIsInVzZXJuYW1lIjoid2ltYXJrIn0.YW9V4bF52tuINoGdZ4nJzMhhGJtEf47SgAvzHKK4fBE",
         "username":"admin"
      },
      "itemslist":[
      ]
   }
}


Токен из response.data.items.token необходимо передавать с каждым запросом через заголовок HTTP запроса к API. Время жизни токена - 30 суток.
"Authorization": "Bearer <response.data.items.token>"

Работа с локациями

API: /api/locations

Создание объекта локации

...

{"action":"C","items":{"0":{"name":"test/location"}}}

...

Созданные локации можно использовать при создании других объектов. Если не заполнять поле base_location, то по - умолчанию выставляется локация пользователя, от которого идут запросы.
При удалении локации удаляются все нижестоящие локации, а объекты назначаются на первую вышестоящую в иерархии локацию. Локацию с именем “/” (root) удалить нельзя.

Поиск локации

...

{"action":"R"}

Пример ответа (Возвращает все локации):

...

API: /api/users
Чтение / обновление / удаление : с помощью POST запроса с указанием поля action R (read) | U (update) | D (delete)

Создание пользователя

{"action":"C","items":{"0":{"role":"admin","base_location":"53117f16-62bc-4942-8fb6-8185f0c37dc8","username":"some_user","password":"12345678"}}}

...

{"status":"success","statuscode":"","data":{"count":1,"total":0,"items":{"5694adf4-1d8f-4167-b3dd-8d4db3e08e62":{"id":"5694adf4-1d8f-4167-b3dd-8d4db3e08e62","username":"some_user","password":"hashed","email":"","photo":"","base_location":"53117f16-62bc-4942-8fb6-8185f0c37dc8","role":"admin","created_at":1560440585,"created_by":"3f3ba5b8-33c8-415d-83b5-2643c991e7d8","first_login":0,"last_login":0,"login_number":0,}}}}

Поиск пользователей

{"action":"R"}

Пример ответа (Возвращает всех пользователей):

...

API: /api/cpes
Чтение / обновление / удаление : с помощью POST запроса с указанием поля action R (read) | U (update) | D (delete)

Чтение CPE

Для чтения CPE, и других объектов (WLAN, RADIUS, Templates, hs20, users, locations) применяется один общий шаблон. Самое важное в запросе - поле action со значением R. Остальное все опционально. По умолчанию отдаются первые 30 объектов, удовлетворяющих запросу. В поле q можно вставить различные запросы к mongodb например, запрос ниже нацелен на получения первых 300 подключенных к платформе ТД с сортировкой по имени, модель которых равна QTECH QWP-82E и статус connected:

...

{"status":"success","statuscode":"","data":{"count":1,"total":1,"itemslist":[{"base_location":"4969622a-5935-416a-b1ff-440fe43287fd","clients":{ },"config":{"beeline_config":{"nas_ip":"192.168.1.38"},"description":"","dhcpcap_config":{"enabled":true,"msgtypefilter":[ ]},"firewall":{"l2_chain":"","l3_filter":{"ip_list":[ ],"mac_list":[ ]},"nat_access":false,"wan_access_block":false},"firmware":{"checksum":"","file":"","mode":"check","storage":"","timeout":0},"gre_peer_addr":"","lbs_config":{"blacklist":[ ],"clienttimeout":0,"emptywatcher":false,"enabled":false,"filtermode":"None","maxcachequeue":0,"maxquiet":0,"reportperiod":0,"whitelist":[ ]},"log_config":{"enabled":false,"log_ip":"","log_port":0,"log_prefix":"","log_proto":""},"name":"","net_manual":{ },"stats_config":{"enabled":true,"reportperiod":60},"tunnels":{ },"wifi":{"radio0":{"bandmode":"11g","bandwidth":"HT20","basic_rate":"","channels":[4],"country":"RU","frequency":"2.4","legacy_rates":"0","log_level":"0","max_inactivity":0,"maxclients":0,"mintxpower":"","power":{"auto":false,"range":[0,15]},"require_mode":"off","scanningconfig":{"enabled":true,"reportperiod":0,"scannumber":0,"scantimeout":0},"supported_rates":null,"txpower":"","wlans":[ ]},"radio1":{"bandmode":"11a","bandwidth":"HE80","basic_rate":"","channels":[149],"country":"RU","frequency":"5","legacy_rates":"0","log_level":"0","max_inactivity":0,"maxclients":0,"mintxpower":"","power":{"auto":false,"range":[0,20]},"require_mode":"off","scanningconfig":{"enabled":true,"reportperiod":0,"scannumber":0,"scantimeout":0},"supported_rates":null,"txpower":"","wlans":["033e6a26-42df-42b7-81b8-eeec16c57c19","56951c46-3b1d-4e1b-8e49-aae779422ed1"]}},"wifi_lock":false,"wifi_manual":{ },"wired":{ },"wmsnmpd":{"default":{"community":"public","enabled":true,"interfaces":["lan","wan"],"listen_interface":"lan","location":"wimarkovo"}}},"config_not_send":false,"config_status":"offline","connected":false,"description":"dubai danya","first_connection":1660128498,"id":"c30009d8-73be-c6ee-f216-44d1fab238a7","last_connection":1666197211,"last_disconnection":1666197308,"last_error":{"description":"","module":"","module_id":"","recommendation":"","type":""},"latitude":0,"longitude":0,"model":{"id":"13b42565-ec28-481d-93df-6831c53fb037","name":"YunCore AX820","short":"yuncore,ax820"},"name":"Qtech-38a6","rrm_group":{ },"state":{"firmware":{"current_md5":"","features":["cpeagent","dhcp-cap","ethernet-accounting","firewall","firmware","get","lbs","network","openwrt","radius","scanning","snmp","statistic","tc","ubus","uci","umdns","wifi"],"has_update":false,"version":{"build":0,"commit":"31dc8dacc99b894a475f2057780ab67c4d81fa8b","version":"v1.9.4"}},"l2tp_state":{"enabled":true,"host":"wm-dev","host_addr":"45.89.25.58","host_tunnel":0,"local_addr":"192.168.1.38","local_iface":"","local_tunnel":1,"tunnel_type":"none"},"net_manual":{"alan":{".type":"interface","proto":"static"},"ipsec_lo":{".type":"interface","ifname":"lo","proto":"static"},"lan":{".type":"interface","ipv6":"0","proto":"dhcp"},"loopback":{".type":"interface","proto":"static"},"nat_wlan_1":{".type":"interface","proto":"static","type":"bridge"},"nat_wlan_2":{".type":"interface","proto":"static","type":"bridge"},"wwan":{".type":"interface","proto":"wwan"}},"network":{"gateway":"192.168.1.1","ipaddr":"192.168.1.38","ipaddrs":[{"ipaddr":"192.168.1.38","netmask":"255.255.255."}],"macaddr":"44:D1:FA:B2:38:A7"},"tunnels":{ },"wan":{"iface":"lan","proto":"dhcp"},"wifi":{"radio0":{"bandmode":"11g","bandwidth":"HT20","channel":"4","enabled":false,"frequency":"2.4","txpower":"15","wlanstates":{ }},"radio1":{"bandmode":"11a","bandwidth":"HE80","channel":"149","enabled":false,"frequency":"5","txpower":"20","wlanstates":{ }}},},"tags":[ ]}]}}

Привязка CPE к Локации

API: /api/bulk/locations/cpes

...


Работа с WLAN

API: /api/wlans

Создание

Создание ssid без пароля с именем name-wifi-ssifap1i

...

{ "action": "C", "items": { "0": { "ssid": "name-wifi-ssifap1i", "security": { "type": "wpa2personal", "data": { "psk": "12345678" } } } } }

Чтение

{ "action": "R" }


Работа с шаблонами

API: /api/cpe_config_templates

Создание

Создание шаблона с именем test-api фильтрами: подсеть 10.30.40.0/24 и mac префиксом 90:B8:32:49, шаблон будет добавлять ssid с id 10b5f52d-70d4-47f2-b59d-4ddfe1a6a493 на все ТД подходящие под условие выше.

{ "action": "C", "items": { "0": { "name": "test-api", "base_location": "1864a500-d4d0-44ad-9094-a68c956b0b3e", "is_auto": true, "subnet": { "ipaddr": "10.30.40.0", "netmask": "255.255.255.0" }, "mac_prefix": "90:B8:32:49", "is_always": true, "template": { "location": "1864a500-d4d0-44ad-9094-a68c956b0b3e", "wlans": ["10b5f52d-70d4-47f2-b59d-4ddfe1a6a493"] } } } }

Чтение

{ "action": "R" }


Работа с точками доступа

API: /api/cpes

Создание


Создание ТД с id 4174f9dd-648f-0785-6640-001fce06d222

{ "action": "C", "items": { "4174f9dd-648f-0785-6640-001fce06d222": { } } }

Чтение

{ "action": "R" }