Swagger - это фреймворк для спецификации REST API. Он дает возможность не только интерактивно просматривать спецификацию, но и отправлять запросы. В swagger можно
использовать весь функционал API который присутствует на сервере WICO. Все методы имеют описание, зачем нужен, что значат поля на входе и в ответах.
Swagger доступен по ссылке вида http://dev.wico.pro:8080/swagger-ui/index.html#/ где dev.wico.pro:8080 адрес контроллера. Для работы в swagger требуется bearer авторизация. Токен можно получить в
JWT Authentication в методе POST /api/authenticate. Для начала работы надо нажать в правом верхнем углу кнопку Try it out.
После нажатия кнопки становится доступно для редактирования окно с параметрами для запроса.
Там следует ввести username и password с которыми вы зарегистрированы в контроллере. И нажать ниже кнопку Execute.
Пример запроса на curl для получения токена.
curl -X 'POST' \
'http://dev.wico.pro:8080/api/authenticate' \
-H 'accept: */*' \
-H 'Content-Type: application/json' \
-d '{
"username": "username",
"password": "password"
}'
Если все сделано правильно ответ выглядит примерно так.
Копируем токен. Находим в самом верху сваггера кнопку Authorize и нажимаем.
В открывшееся поле вставляем токен и нажимаем Authorize, закрываем окно ввода токена. Теперь можно пользоваться любыми методами если у вас есть на это достаточно прав в контроллере ( Некоторые методы доступны только с ролью ADMIN).
Токен будет автоматически подставлен в шапку запроса.
Для выполнения любого запроса порядок действий такой-же как и при получении токена, кнопка Try it out, затем заполняем требуемые для запроса параметры. Например чтоб посмотреть трафик по точке доступа за день заполняем параметры запроса: id -точки и интервал.
Нажимаем Execute.
Ответ:
Запрос на curl:
curl -X 'GET' \
'http://dev.wico.pro:8080/api/v1/devices/44%3AD1%3AFA%3AE0%3A9D%3A40/traffic?interval=Day' \
-H 'accept: */*' \
-H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTcxNTYyOTYxNSwiaWF0IjoxNzE1NjExNjE1fQ.zxfL7kt5gsuRRwt7UW5Ozfjk-Lc69JLZGWLVdgnsmM011o4VW-CrMM9PNxa0A3pxoMCrQcaM-uEmWxRJhvjwJw'
Ответ в формате json:
{
"unit": "HOURS",
"results": [
{
"label": null,
"dateTime": {
"year": 0,
"month": 0,
"week": null,
"day": null,
"hour": null,
"minute": null,
"period": null
},
"startDate": "2024-05-12T15:45:29.663Z",
"endDate": null,
"missed": false,
"createdAt": "2024-05-12T15:46:00.000+00:00",
"speedTx": 205328,
"speedRx": 6559664,
"rssi": 0,
"trafficIn": 0.21,
"trafficOut": 6.56
},
{
"label": null,
"dateTime": {
"year": 0,
"month": 0,
"week": null,
"day": null,
"hour": null,
"minute": null,
"period": null
},
"startDate": "2024-05-12T16:45:29.663Z",
"endDate": null,
"missed": false,
"createdAt": "2024-05-12T16:46:00.000+00:00",
"speedTx": 56064,
"speedRx": 12072,
"rssi": 0,
"trafficIn": 0.06,
"trafficOut": 0.01
},...
]
Для выполнения POST запроса, если требуется что-либо загрузить, изменить какие то настройки, или что-то сохранить заполняем тело запроса. Например создание нового пользователя.
В ответе получаем id нового пользователя.
Тот же запрос на curl:
curl -X 'POST' \
'http://dev.wico.pro:8080/api/v1/users' \
-H 'accept: */*' \
-H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTcxNTYyOTYxNSwiaWF0IjoxNzE1NjExNjE1fQ.zxfL7kt5gsuRRwt7UW5Ozfjk-Lc69JLZGWLVdgnsmM011o4VW-CrMM9PNxa0A3pxoMCrQcaM-uEmWxRJhvjwJw' \
-H 'Content-Type: application/json' \
-d '{
"id": null,
"username": "test_user",
"password": "Test_user1",
"role": "OPERATOR",
"fullname": "Василий Пупкин",
"company": "Netams",
"email": "pupkin@mail.ru",
"phone": "9229229191",
"telegramId": "",
"enabled": true,
"lastLogin": "2024-05-13T07:05:26.941Z",
"groupIdsStr": "",
"createdAt": "2024-05-13T07:05:26.941Z",
"updatedAt": "2024-05-13T07:05:26.941Z",
"passwordHistoryList": "",
"passwordHistory": [
"string"
],
"lastPasswordSetDate": 0,
"changePasswordRequested": true,
"passwordNeverExpires": true,
"showHelpTooltips": true,
"locale": "",
"name": "",
"groupIds": [
"0"
]
}'
Ответ:
{"data":{"id":"test_user"}}
Удаление пользователя:
Ответ:
На curl :
curl -X 'DELETE' \
'http://dev.wico.pro:8080/api/v1/users/test_user' \
-H 'accept: */*' \
-H 'Authorization: Bearer eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImV4cCI6MTcxNTYyOTYxNSwiaWF0IjoxNzE1NjExNjE1fQ.zxfL7kt5gsuRRwt7UW5Ozfjk-Lc69JLZGWLVdgnsmM011o4VW-CrMM9PNxa0A3pxoMCrQcaM-uEmWxRJhvjwJw'
Краткая информация о доступном API представлена ниже, более подробное описание а так же описание работы всех методов можно получить в swagger.
JWT Authentication | Авторизация, получение токена, смена пароля. |
Agent API | Позволяет просматривать, перезагружать и обновлять агентов. |
Auth Server API | Позволяет просматривать и изменять настройки сервера авторизации. |
Backup and Restore DB API | Выполнение бэкапа и восстановление бд контроллера из резервной копии. |
Dashboard Api | Сводные данные по контроллеру. |
Device API | Точки доступа, чтение, запись, удаление,изменение параметров. |
DHCP API | Dhcp и tftp. |
Diagnostic API | Диагностика. |
DNS and NTP API | DnsNtpConfiguration. |
Events and Alerts API | События и оповещения. |
Firmware API | Обновления и прошивки. |
GRE/VXLAN Gateway API | Шлюзы. |
Group API | Управление группами. |
KeysPassword API | Ключи и пароли. |
Licenses API | Лицензии. |
Log API | Логи. |
Notification Rule API | Правила нотификаций. |
Portal Configuration API | Порталы. |
Radio Resources API | Радиоресурсы. |
RADIUS Servers API | RADIUS сервера. |
Settings API | Системные настройки. |
Shell API | Shell команды. |
Sniffer API | Захват трафика. |
SSID Config API | Сети wi-fi. |
Syslog API | Syslog и Snmp. |
System API | Просмотр сведений о контроллере, обновление, перезагрузка и удаление устаревших данных. |
User API | Пользователи. |
Version API | Версии. |
VPN and IP API | Настройки IP и VPN |
WirelessClient API | Клиенты. |