Сервер WNAM QoW позволяет обеспечить взаимодействие с внешней информационной системой - например, системой мониторинга вашей организации, или универсальным дашбордом сервисов организации, по HTTP/REST протоколу.
Для этого внешняя информационная система должна отправлять специальным образом сформированные запросы на API-эндпоинт сервера QoW. Для авторизации доступа используется передача заголовка "X-API-Key" со значением, соответствующем значению параметра netams.remoteToken, определенного в конфигурационном файле /home/qow/application.properties сервера. При помощи API внешняя система может получить справочники различных объектов (сенсоров, групп, ...) сервера, состояние последнего измерения по заданному объекту, запустить внеочередное выполнение измерения по заданному объекту (например, проблемной точке доступа).
Формат обмена данных - JSON, кодировка UTF-8. Все эндпоинты вызываются по методу HTTP GET. Ответ сервера - в формате JSON.
Справочник допустимых эндпоинтов API:
URL | Параметры | Возвращаемое значение | Описание |
---|---|---|---|
/api/objects/listGroups | нет | Массив краткой информации по всем группам в системе | |
/api/objects/getGroup/{groupId} | идентификатор группы | Краткая информация по заданной группе | |
/api/objects/listSensors | нет | Массив краткой информации по всем сенсорам в системе | |
/api/objects/getSensor/{sensorId} | идентификатор сенсора | Краткая информация по заданному сенсору | |
/api/objects/listAccessPoints | нет | Массив краткой информации по всем "своим" точкам доступа в системе | |
/api/objects/getAccessPoint/{accessPointId} | идентификатор точки доступа | Краткая информация по заданной точке доступа | |
/api/objects/listTasks | нет | Массив краткой информации по всем задачам в системе | |
/api/objects/getTask/{taskId} | идентификатор задачи | Краткая информация по заданной задаче | |
/api/healthSummary/getLatest | один из параметров должен быть указан: groupId, sensorId, accessPointId или bssid | Краткая информация по результатам измерения для заданного объекта, взятая из последнего измерения из БД сервера. | Запрос последних известных данных по измерениям для заданного объекта. Параметры объекта передаются в URL запросе в виде ключ=значение, например https://dev.wifisensor.pro/api/healthSummary/getLatest?sensorId=611a211ff1290747553498f4 Ответ сервера приходит синхронно и за короткое время (миллисекунды). |
/api/healthSummary/requestHealth | один из параметров должен быть указан: groupId, sensorId, accessPointId, accessPointName, taskId, ssid или bssid (все - строки) обязательные параметры callbackUrl (строка) и timeout (число секунд) | Статус запуска задачи "вне очереди" на подходящих по параметрам запроса сенсоре (сенсорах) | Запрос выполнения измерения для заданного объекта. Параметры объекта передаются в URL запросе в виде ключ=значение. Ответ сервера приходит асинхронно после заданного таймаута, либо раньше, если измерения завершатся до него, путем отправки запроса на заданный Callback URL вашей системы. |
При этом идентификатором является ключ в базе MongoDB, под которым хранятся сведения об объекте. Это длинная строка вида "611a213bf1290747553498f9".
Внимание! Выдаются сокращенные сведения об объекте: id, имя, местоположение, принадлежность к группе и несколько других базовых характеристик. Полная информация об объекте (как она хранится на сервере) в данном API не предоставляется.
Например:
Запрос информации о сенсоре
curl -X GET \
https://wifisensor-server/api/objects/getSensor/611a211ff1290747553498f4 \
-H 'X-API-Key: sxdgfgdfghdgjgfdhjlasdgf' \
-H 'cache-control: no-cache'
Ответ сервера
HTTP/1.1 200
Server: nginx/1.14.2
Date: Wed, 12 Jan 2022 12:20:59 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
Set-Cookie: JSESSIONID=706F8360029679006C5548E26C0E1A33; Path=/; HttpOnly
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block
Cache-Control: no-cache, no-store, max-age=0, must-revalidate
Pragma: no-cache
Expires: 0
Access-Control-Allow-Credentials: true
Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS
Access-Control-Allow-Headers: Accept,Authorization,Cache-Control,Content-Type,DNT,If-Modified-Since,Keep-Alive,Origin,User-Agent,X-Requested-With,X-API-Key{
"id": "611a211ff1290747553498f4",
"mac": "94:83:C4:09:04:DC",
"location": "FNM_B_r220",
"name": "QoW-1",
"testingAccessPointIds": [
"614a0c47b6fb545d0e1ea1b0"
],
"groupId": "611a213bf1290747553498f9"
}