Описание API

Сервис предоставляет доступ к базе данных через API.
Ниже описан процесс отправки запроса, а так же доступные методы.


Все API запросы отправляются по следующему URI: /api/%method%, где method - название API-метода.

Различные методы могут принимать данные в разном формате. Большая часть методов использует API-ключи для доступа к функциям.

Все методы возвращают результат выполнения result, который равен true в случае успеха, либо false в случае неудачи. В последнем случае также возвращается параметр error с описанием возникшей ошибки.

Реализованные методы API

Метод Описание Входные данные Выходные данные
Тип данных Параметры
apikeys Получает API-ключи пользователя (и опционально генерирует их) POST (форма)
POST (JSON-объект)
string login - логин пользователя object profile - данные профиля пользователя: nick - никнейм, regdate - дата регистрации, level - уровень доступа
string password - пароль пользователя
bool genread - генерировать ключ на чтение при его отсутствии (опционально) array data - массив API-ключей, содержащий записи с полями key - ключ и access - права доступа для этого ключа (либо read - на чтение, либо write - на запись)
bool genwrite - генерировать ключ на запись при его отсутствии (опционально)

Примеры:

POST /api/apikeys
Content-Type: application/x-www-form-urlencoded; charset=UTF-8

login=user123&password=pass123

POST /api/apikeys
Content-Type: application/json

{"login": "user123", "password": "pass123"}

Ответ:

{"result": true, "profile": {"nick": "Anonymous", "regdate": "2015-12-13 12:00:00", "level": 1}, "data": [{"key": "0011223344", "access": "read"}, {"key": "5566778899", "access": "write"}]}
apiquery Запрашивает точки доступа из базы (точное совпадение с BSSID и/или ESSID) GET (запрос)
POST (форма)
POST (JSON-объект)
string key - API-ключ с правами на чтение array data - массив найденных данных, ключи массива содержат либо "BSSID", либо пару "BSSID|ESSID", в зависимости от того, что было запрошено; каждая запись в массиве содержит в себе ещё один массив соответствий со следующими параметрами: time - дата и время загрузки записи в базу, bssid - BSSID, essid - ESSID, sec - тип защиты, key - ключ сети, wps - WPS пин код, lat - широта, lon - долгота
array bssid - массив BSSID точек доступа
array essid - массив ESSID точек доступа (опционально), если указан - должен быть соразмерен с массивом BSSID и соответствовать записям в нём
bool sens - учитывать регистр символов ESSID (опционально)

Примеры (запрос одной точки):

GET /api/apiquery?key=001122334455&bssid=01:23:45:67:89:AB
POST /api/apiquery
Content-Type: application/json

{"key": "001122334455", "bssid": "01:23:45:67:89:AB"}

Ответ:

{"result": true, "data": {"01:23:45:67:89:AB": [{"time": "2017-04-09 21:00:00", "bssid": "01:23:45:67:89:AB", "essid": "Wi-Fi AP", "sec": "WPA2", "key": "wifipass", "wps": "12345670", "lat": 55.76, "lon": 37.64}]}}

Примеры (запрос нескольких точек):

POST /api/apiquery
Content-Type: application/json

{"key": "001122334455", "bssid": ["11:22:33:44:55:66", "77:88:99:AA:BB:CC"]}

Ответ:

{"result": true, "data": {"11:22:33:44:55:66": [{"time": "2017-04-09 21:00:00", "bssid": "11:22:33:44:55:66", "essid": "Wi-Fi AP 1", "sec": "WPA2", "key": "wifipass", "wps": "12345670", "lat": 55.76, "lon": 37.64}], "77:88:99:AA:BB:CC": [{"time": "2017-04-09 21:00:00", "bssid": "77:88:99:AA:BB:CC", "essid": "Wi-Fi AP 2", "sec": "WPA2", "key": "wifipass", "wps": "12345670", "lat": 55.76, "lon": 37.64}]}}
apiwps Генерирует WPS PIN коды на основе BSSID и данных из базы GET (запрос)
POST (форма)
POST (JSON-объект)
string key - API-ключ с правами на чтение array data - массив найденных данных, ключи массива содержат "BSSID"; каждая запись в массиве содержит в себе ещё один массив scores со следующими параметрами: name - название алгоритма генерации пин кода, value - значение пин кода, score - вероятность (значение от 0 до 1)
array bssid - массив BSSID точек доступа

Примеры (единичный запрос):

GET /api/apiwps?key=001122334455&bssid=01:23:45:67:89:AB
POST /api/apiwps
Content-Type: application/json

{"key": "001122334455", "bssid": "01:23:45:67:89:AB"}

Ответ:

{"result": true, "data": {"01:23:45:67:89:AB": {"scores": [{"name": "Static PIN", "value": "12345670", "score": 0.75}]}}}

Примеры (мульти-запрос):

POST /api/apiwps
Content-Type: application/json

{"key": "001122334455", "bssid": ["11:22:33:44:55:66", "77:88:99:AA:BB:CC"]}

Ответ:

{"result": true, "data": {"11:22:33:44:55:66": {"scores": [{"name": "Static PIN", "value": "12345670", "score": 0.75}]}, "77:88:99:AA:BB:CC": {"scores": [{"name": "Static PIN", "value": "12345670", "score": 0.75}]}}}
apidev Определяет модели устройств на основе BSSID и похожих устройств в базе GET (запрос)
POST (форма)
POST (JSON-объект)
string key - API-ключ с правами на чтение array data - массив найденных данных, ключи массива содержат "BSSID"; каждая запись представляет из себя ещё один массив со следующими параметрами: name - название устройства, score - вероятность (значение от 0 до 1), count - кол-во таких же устройств в базе
array bssid - массив BSSID точек доступа
bool nocli - исключать Wi-Fi клиенты из определения (по умолчанию включено)

Примеры (единичный запрос):

GET /api/apidev?key=001122334455&bssid=01:23:45:67:89:AB
POST /api/apidev
Content-Type: application/json

{"key": "001122334455", "bssid": "01:23:45:67:89:AB"}

Ответ:

{"result": true, "data": {"01:23:45:67:89:AB": [{"name": "Router Model 1", "score": 0.9, "count": 2000}, {"name": "Router Model 2", "score": 0.75, "count": 500}, {"name": "Router Model 3", "score": 0.4, "count": 100}]}}

Примеры (мульти-запрос):

POST /api/apidev
Content-Type: application/json

{"key": "001122334455", "bssid": ["11:22:33:44:55:66", "77:88:99:AA:BB:CC"]}

Ответ:

{"result": true, "data": {"11:22:33:44:55:66": [{"name": "Router Model 1", "score": 0.9, "count": 2000}, {"name": "Router Model 2", "score": 0.75, "count": 500}, {"name": "Router Model 3", "score": 0.4, "count": 100}], "77:88:99:AA:BB:CC": [{"name": "Router Model 4", "score": 0.75, "count": 2000}, {"name": "Router Model 5", "score": 0.6, "count": 500}, {"name": "Router Model 6", "score": 0.2, "count": 100}]}}
apiranges Получает список диапазонов по широте, долготе и радиусу GET (запрос)
POST (форма)
POST (JSON-объект)
string key - API-ключ с правами на чтение array data - массив найденных данных; каждая запись в массиве содержит параметры: range - IP диапазон, netname - название сети, descr - описание диапазона, country - двухсимвольный код страны
float lat - широта (от -90 до 90)
float lon - долгота (от -180 до 180)
float rad - радиус (от 0.001 до 25)

Примеры (единичный запрос):

GET /api/apiranges?key=001122334455&lat=50.62&lon=26.24&rad=2
POST /api/apiranges
Content-Type: application/json

{"key": "001122334455", "lat": 50.62, "lon": 26.24, "rad": 2}

Ответ:

{"result": true, "data": [{"range": "192.168.0.0/16", "netname": "", "descr": "Local IP range", "country": ""}]}