Описание API
Описание API
Описание API версии 4
Обмен данными между клиентской частью (Android/iOS приложение) и сервером data.egov.kz осуществляется через протокол HTTPS. Поиск по данным реализован с использованием технологии elasticsearch. При запросе параметры передаются по протоколу HTTPS методом GET в следующем формате:
/api/v4/dataset?source={Query in Json Object}
/api/v4/dataset/version?source={Query in Json Object}
Данный запрос осуществляет поиск по набору данных dataset, при этом передается параметр source, который описывает как именно должен производиться поиск и фильтрация.
/api/v4/mapping/dataset
/api/v4/mapping/dataset/version
Данный запрос описывает поля записей, используемых в наборе данных dataset
Ответ сервера возвращается в формате JSON, он содержит выборку данных или сообщение об ошибке.
Ниже приведены примеры запросов.
Пример 1:
Вывести описание полей с их типами и структурой, а также версии набора.
Для получения списка полей и их типов выполните запрос указанный ниже.
Запрос выглядит следующим образом:
/api/v4/mapping/astana_kalasynyn_kylmystyk_kuk1
Ответ:
{
"astana_kalasynyn_kylmystyk_kuk1" : {
"mappings" : {
"v1" : {
"properties" : {
"city_code" : {
"type" : "string",
"store" : true
},
"crime_code" : {
"type" : "string",
"store" : true
},
"dat_sover" : {
"type" : "string",
"store" : true
},
"hard_code" : {
"type" : "string",
"store" : true
},
"home_number" : {
"type" : "string",
"store" : true
},
"latitude" : {
"type" : "string",
"store" : true
},
"longitude" : {
"type" : "string",
"store" : true
},
...
Пример 2:
Получить выборку из совершенных уголовных преступлений по Астане:
/api/v4/mapping/astana_kalasynyn_kylmystyk_kuk1
* В случае если у набора имеется более 1 версии, нужно указать необходимую версию, например:
/api/v4/mapping/astana_kalasynyn_kylmystyk_kuk1/v1
Ответ:
{
"astana_kalasynyn_kylmystyk_kuk1" : {
"mappings" : {
"v1" : {
"properties" : {
"city_code" : {
"type" : "string",
"store" : true
},
"crime_code" : {
"type" : "string",
"store" : true
},
"dat_sover" : {
"type" : "string",
"store" : true
},
"hard_code" : {
"type" : "string",
"store" : true
},
"home_number" : {
"type" : "string",
"store" : true
},
"latitude" : {
"type" : "string",
"store" : true
},
"longitude" : {
"type" : "string",
"store" : true
},
...
Пример 3:
Чтобы получить первые 5 записей из набора данных по совершенным уголовным преступлениям г.Астана укажите значение параметра size:
/api/v4/astana_kalasynyn_kylmystyk_kuk1/v1?source={"size": 5}
* В случае если у набора имеется более 1 версии, Вы можете заменить версию на необходимую Вам, например:
/api/v4/astana_kalasynyn_kylmystyk_kuk1/v3?source={"size": 5}
Ответ:
[ {
"dat_sover" : "01.01.2016",
"street" : "ДОСТЫЌ",
"stat" : "ст.293 ч.2",
"time_period" : "1",
"organ" : "УВД районаЕсиль",
"crime_code" : "2930",
"hard_code" : "2",
"month" : "1",
"longitude" : "71.434872580000004",
"year" : "2016",
"city_code" : "г. Астана",
"ud" : "167115030000038",
"latitude" : "51.126707959999997",
"objectid" : "2316830",
"home_number" : "13",
"reg_code" : "РайонЕсил"
}, {
"dat_sover" : "01.01.2016",
"street" : "САУРАН",
"stat" : "ст.190 ч.1",
"time_period" : "3",
"organ" : "УВД районаЕсиль",
"crime_code" : "1900",
"hard_code" : "1",
"month" : "1",
"longitude" : "71.422323582999994",
"year" : "2016",
"city_code" : "г. Астана",
"ud" : "157115030024346",
"latitude" : "51.121251012999998",
"objectid" : "2139389",
"home_number" : "6/1",
"reg_code" : "РайонЕсил"
},
...
Пример 4:
Чтобы получить 3 совершенных уголовных преступлениях пог.Астана, при этом пропустив первые 5, укажите параметр from:
/api/v4/astana_kalasynyn_kylmystyk_kuk1/v1?source={"from":5, "size": 3}
Ответ:
[ {
"dat_sover" : "01.01.2016",
"street" : "МЈСКЕУ",
"stat" : "ст.188 ч.1",
"time_period" : "1",
"organ" : "СарыаркинскийРУВД",
"crime_code" : "1880",
"hard_code" : "2",
"month" : "1",
"longitude" : "71.397837250999999",
"year" : "2016",
"city_code" : "г. Астана",
"ud" : "167113030000156",
"latitude" : "51.180052580000002",
"objectid" : "860949",
"home_number" : "14/3",
"reg_code" : "РайонСарыарка"
}, {
"dat_sover" : "01.01.2016",
"street" : "КОНСТИТУЦИИ",
"stat" : "ст.191 ч.1",
"time_period" : "1",
"organ" : "СарыаркинскийРУВД",
"crime_code" : "1910",
"hard_code" : "2",
"month" : "1",
"longitude" : "71.393267264000002",
"year" : "2016",
"city_code" : "г. Астана",
"ud" : "167113030000082",
"latitude" : "51.195856544999998",
"objectid" : "1932847",
"home_number" : "19",
"reg_code" : "Район Сарыарка"
},
...
Пример 5: Поиск по полям: вывести почтовые отделения Астаны, работающие без перерыва по улице Сыганак.
Поиск по полям: вывести перечень совершенных уголовных преступлений по г. Астана по улице Иманова, а также 2ой тяжестью преступления.
/api/v4/astana_kalasynyn_kylmystyk_kuk1/v1?source={
"size":100,
"query": {
"bool":{
"must":[
{"match":{"hard_code": "2"}},
{"match":{"street": "Иманова"}}
]
}
}
}
Производится поиск объектов, где поле "hard_code" содержит подстроку "2" и поле "street" содержит подстроку "Иманова". Ответ содержит все объекты для которых выполняются оба условия. Наименование полей, а также их типы можно выяснить следуя примеру 1.
Ответ:
[ {
"dat_sover" : "18.02.2016",
"street" : "ИМАНОВА",
"stat" : "ст.188 ч.1",
"time_period" : "1",
"organ" : "Алматинский РУВД",
"crime_code" : "1880",
"hard_code" : "2",
"month" : "2",
"longitude" : "71.444085013999995",
"year" : "2016",
"city_code" : "г. Астана",
"ud" : "167111030008206",
"latitude" : "51.164931746000001",
"objectid" : "1942307",
"home_number" : "21",
"reg_code" : "Район Алматы"
}, {
"dat_sover" : "22.05.2016",
"street" : "ИМАНОВА",
"stat" : "ст.120 ч.1",
"time_period" : "1",
"organ" : "Алматинский РУВД",
"crime_code" : "1200",
"hard_code" : "2",
"month" : "5",
"longitude" : "71.434266149999999",
"year" : "2016",
"city_code" : "г. Астана",
"ud" : "167111030026076",
"latitude" : "51.163761094000002",
"objectid" : "2431516",
"home_number" : "9",
"reg_code" : "Район Алматы"
},
...
Пример 6:
Получить медицинские организации РК, которые находятся в Акмолинской области, в радиусе 10 км от координат (51.608524, 68.171934) в поле geoposition (может быть использовано в том случае, если тип поля в наборе помечен как «geoposition»):
/api/v4/medorg/v1?source={
"size":100,
"query": {
"filtered": {
"query":{
"bool":{
"must":[
{"match":{ "address": "Акмолинская" }}
]
}
},
"filter": {
"geo_distance": {
"distance": "10km",
"geoposition": {
"lat": 51.608524,
"lon": 68.171934
}
}
}
}
}
}
Ответ:
[ {
"region" : "Акмолнская область",
"id" : 148,
"address" : "Акмолинская область, Атбасарский район, село Самарка",
"geoposition" : "51.602993, 68.032539",
"name" : "Самарский МП"
}, {
"region" : "Акмолнская область",
"id" : 125,
"address" : "Акмолинская область, Атбасарский район, село Сергеевка",
"geoposition" : "51.653683, 68.198503",
"name" : "Сергеевская ВА"
},
...
Пример 7:
Вывести все медицинские организации РК, находящиеся в Южно-Казахстанской области, в радиусе 1200 м от координат (42.359461, 69.622625) в поле geoposition и отсортированные в порядке удаленности от этих координат (может быть использовано в том случае, если тип поля в наборе помечен как «geoposition»):
/api/v4/medorg/v1?source={
"size":100,
"query": {
"filtered": {
"query":{
"bool":{
"must":[
{"match":{ "region": "Южно-Казахстанскаяобласть" }}
]
}
},
"filter": {
"geo_distance": {
"distance": "1200m",
"geoposition": {
"lat": 42.359461,
"lon": 69.622625
}
}
}
}
},
"sort": [{
"_geo_distance": {
"geoposition": {
"lat": 42.359461,
"lon": 69.622625
},
"order": "asc",
"unit": "m"
}
}]
}
Ответ:
[ {
"region" : "Южно-Казахстанская область",
"id" : 3178,
"address" : "г.Шымкент, мкрНурсат, стр 125/1",
"geoposition" : "42.359461, 69.622625",
"name" : "ГККП "
}, {
"region" : "Южно-Казахстанская область",
"id" : 3230,
"address" : "г.Шымкент, мкрНурсат б /н",
"geoposition" : "42.358324, 69.627430",
"name" : "ГКП на ПХВ "
},
...
Пример 8:
Поиск по полям: вывести список в порядке удаленности от координат (42.358324, 69.627430) по полю geoposition (может быть использовано в том случае, если тип поля в наборе помечен как «geoposition»):
/api/v4/medorg/v1?source={
"size":100,
"query": {
"bool":{
"must":[
{"match": {"region": "Южно"}},
{"match": {"address": "Шымкент"}}
]
}
},
"sort": [{
"_geo_distance": {
"geoposition": {
"lat": 42.358324,
"lon": 69.627430
},
"order": "asc",
"unit": "km"
}
}]
}
Ответ:
[ {
"region" : "Южно-Казахстанская область",
"id" : 3204,
"address" : "г. Шымкент, ул. ЖибекЖолы б/н",
"geoposition" : "42.330978, 69.626532 ",
"name" : "ГККП "
}, {
"region" : "Южно-Казахстанская область",
"id" : 3229,
"address" : "г. Шымкент ул. Толстого б/н",
"geoposition" : "42.320622, 69.620595",
"name" : "Шымкентская городская станция скорой медицинской помощи"
},
...
Пример 9: Нечеткий поиск (FuzzySearch).
Параметр fields может принимать наименование нескольких полей, а также "_all", если нужно искать по всем полям.
Параметр fuzziness (редакционное расстояние) по умолчанию равен 2
Более подробную информацию по нечеткому поиску можно найти в официальной документации elasticsearch
Запрос 1:
Данный запрос производит нечеткий поиск слова по всем полям в заданном наборе данных.
/api/v4/medorg/v1?source={
"size":2,
"query": {
"fuzzy_like_this" : {
"fields" : ["_all"],
"like_text" : "Астни"
}
}
}
Ответ 1:
[ {
"region" : "Астана",
"id" : 845,
"address" : "ул.Сарыарка",
"geoposition" : "51.076148, 71.424524",
"name" : "ГУ "
}, {
"region" : "Астана",
"id" : 873,
"address" : "микрорайон 3",
"geoposition" : "51.147495, 71.471863",
"name" : "ТОО « АкадемияортопедииАстана»"
} ]
Запрос 2: Пример использования параметра fuzziness:
/api/v4/medorg/v1?source={
"size":3,
"query": {
"fuzzy_like_this" : {
"fields" : ["region"],
"like_text" : "Астани",
"fuzziness" : "1"
}
}
}
Ответ 2:
[ {
"region" : "Астана",
"id" : 820,
"address" : "ул. Т. Рыскулова,8",
"geoposition" : "51.083505, 71.413128",
"name" : "Центр семейного здоровья «Шипагер»"
}, {
"region" : "Астана",
"id" : 865,
"address" : "ул. Жибек жолы,76",
"geoposition" : "51.179823, 71.419469",
"name" : "ТОО «ФрезениусМедикалКейрКазахстан»"
}, {
"region" : "Астана",
"id" : 817,
"address" : "ул. Абылайхана,30",
"geoposition" : "51.128850, 71.461773",
"name" : "ЦПМСМ "
} ]
Пример 10: Нечеткий поиск (FuzzySearch) в комбинации с поиском по геолокации.
Производится поиск объектов, содержащиx слова с редакционным расстоянием (fuzziness) 2 от слова "Астани" по всем полям. Ответ предоставляется в виде списка объектов отсортированного по удаленности от координат (51.168803, 71.444856) в поле geoposition
/api/v4/medorg/v1?source={
"size":100,
"query": {
"fuzzy_like_this" : {
"fields" : ["_all"],
"like_text" : "Астани"
}
},
"sort": [{
"_geo_distance": {
"geoposition": {
"lat": 51.168803,
"lon": 71.444856
},
"order": "asc",
"unit": "km"
}
}]
}
Ответ:
[ {
"region" : "Астана",
"id" : 836,
"address" : "ул. Кенесары 82",
"geoposition" : "51.167188, 71.441343",
"name" : "ТОО "
}, {
"region" : "Астана",
"id" : 815,
"address" : "ул. Сембинова,4/1",
"geoposition" : "51.166105, 71.448100",
"name" : "ГКП на ПХВ «Городская поликлиника №8»"
},
...
Detailed Api
Описание Detailed Api
Данные запросы позволят получить подробную информацию по наборам данных
/api/detailed/dataset?source={Query in Json Object}
/api/detailed/dataset/version?source={Query in Json Object}
Указанный запрос осуществяет поиск по набору данных dataset. Параметр source описывает как производить поиск и фильтрацию.
version является необязательным параметром
Ответ сервера возвращается в формате JSON. Он содержит выборку данных или сообщение об ошибке
Ниже представлены примеры запросов.
Пример 1:
Получение подробной выборки из каталога аптек:
Запрос выглядит следующим образом:
/api/detailed/pharmacy/v1
Ответ:
{
"totalCount" : 56, //Жалпы объектілер саны
"data" : [ { //Объектілер ауқымы
"_index" : "pharmacy", //Деректер жиынының индексі
"_type" : "v1", //Деректер жиынының нұсқасы
"_id" : "28", //Бірегеу сәйкестендіргіш
"id" : 28,
"Name" : "Гиппократ № 30",
"Region" : 17108,
"geoposition" : "51.169886,71.436908",
"Address" : "г. Астана, ул. Абая д.59"
},
...
Пример 2:Также возможно производить агрегацию по полям набора. Подробности можно найти в официальной документации elasticsearch.
Получить коэффициент качества знаний за 2012-2013 учебный год:
Запрос выглядит следующим образом:
/api/detailed/sch_rating/data?source={
"aggs" : {
"average_quality" : { "avg" : { "field" : "KnowledgeQuality20122013" }
}
}
}
Ответ:
{
"totalCount": 70,
"data": [
{
"UNTresults": "89.05",
"СonformityLevel": "1 из 1",
"KnowledgeQuality20122013": "62.3",
"_index": "sch_rating",
"FullName": "№17 школа-гимназия",
"_type": "data",
"ID": "16",
"_id": "16"
},
...
"aggregations": {
"average_quality": {
"value": 55.2250723907913 //Cредний коэффициент качества образования
}
}
}
Мета информация
Данные запросы позволяют пользователям извлекать мета информацию по интересующим их наборам.
/meta/dataset/version
Данный запрос показывает мета информацию по набору данных dataset и версии version.
Ответ сервера возвращается в формате JSON. Он содержит объект или сообщение об ошибке.
Ниже показан пример запроса.
Пример:
Получить метаинформацию по набору данных Апитеки:
Запрос выглядит следующим образом:
/meta/pharmacy/v1
Ответ:
{
"apiUri" : "pharmacy"
"nameRu" : "Аптеки",
"nameEn" : "Pharmacy",
"nameKk" : "Дәріханалар",
"descriptionRu" : "Данный набор содержит наименования аптек, коды ...",
"descriptionEn" : "This set contains names of pharmacies, codes of ...",
"descriptionKk" : "Осы жиынтық дәріханалар, өңірлер кодтары мен ...",
"responsible" : {
"phone" : "+7 123 456 78 90",
"phone" : "test@test.kz",
"fullnameKk" : "Дәріханалар",
"fullnameEn" : "Pharmacy",
"fullnameRu" : "Аптеки"
},
"createdDate" : "2015-01-05T13:53:19.702Z",
"modifiedDate" : "2015-01-05T13:53:19.702Z",
"fields" : {
"id" : {
"labelKk" : "Id",
"labelEn" : "Id",
"type" : "Int",
"labelRu" : "Id"
},
"Name" : {
"labelKk" : "Name",
"labelEn" : "Name",
"type" : "String",
"labelRu" : "Name"
},
"Region" : {
"labelKk" : "Region",
"labelEn" : "Region",
"type" : "Int",
"labelRu" : "Region"
},
"geoposition" : {
"labelKk" : "Geoposition",
"labelEn" : "Geoposition",
"type" : "Geoposition",
"labelRu" : "Geoposition"
},
"Address" : {
"labelKk" : "Address",
"labelEn" : "Address",
"type" : "String",
"labelRu" : "Address"
}
}
}







