Описание 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=55.76&lon=37.64&rad=2
POST /api/apiranges
Content-Type: application/json
{"key": "001122334455", "lat": 55.76, "lon": 37.64, "rad": 2}
Ответ:
{"result": true, "data": [{"range": "192.168.0.0/16", "netname": "", "descr": "Local IP range", "country": ""}]} |
|