A Virtour mobil alkalmazás adatbázisához készült REST API dokumentációja - verzió: 1.0
Ez a REST API a Virtour mobil alkalmazásának az adatbázisában tárolt adatok eléréséhez nyújt segítséget. GET request-el lehet lekérdezéseket küldeni az API-nak, ami válaszként a lekérdezett adatokat és néhány kiegészítő adatot fog visszaküldeni. Az adatokat kérhetjük json és xml formátumban is.
Az alap URL az API-hoz a https://api.virtour.hu/, melyet egy útvonal követ az adott végponthoz, melyek alább lesznek részletezve:
| HTTP method | Útvonal | Leírás |
|---|---|---|
| GET | /advertisements | Az összes hirdetés elérése. |
| GET | /media | Az összes médiafájl adatainak elérése. |
| GET | /media-directories | Az összes média könyvtár adatainak elérése. |
| GET | /news | Az összes hír elérése. |
| GET | /providers | Az összes szolgáltató elérése. |
| GET | /regions | Az összes térség elérése. |
| GET | /routes | Az összes túraútvonal elérése. |
| GET | /route-types | Az összes túraútvonal típus elérése. |
| GET | /services | Az összes szolgáltatás típus elérése. |
A fent leírt végpontokat kiegészíthetjük egy adott rekord azonosítójával, így csak a kiválasztott rekord adatai jelennek meg.
Pl.: https://api.virtour.hu/providers/25 - Az alábbi végponton találhatóak a 25-ös id-val rendelkező szolgáltató adatai.
Értelemszerűen ezeken a végpontokon nem használhatóak a lekérdezéses paraméterek, a language paramétert leszámítva.
A visszakapott adatok formátuma meghatározható azáltal, hogy megadjuk a fájlkiterjesztést a végpont útvonal végén.
Pl.: https://api.virtour.hu/providers.xml, vagy https://api.virtour.hu/providers.json. Az alapértelmezett formátum a json.
A http request method felülírható a lekérdezésben megadott _method paraméterrel vagy az X-HTTP-Method-Override request header-rel. Így például POST method-dal is lekérdezhető minden adat.
Az API akkor küld megfelelő választ a request-ekre, ha a request tartalmazza a key paramétert, melynek az értéke egy érvényes, a kliens ip-címéhez tartozó kulcs. Kulcsot az API üzemeltetőjétől kérhet.
A végpontok meghívásakor lekérdezési paraméterekkel lehet pontosítani a találati listánkat, az igényeinknek megfelelően. A Lekérdezések fejezetben ezeket a paramétereket részletezzük.
Keresési vagy szűrési kifejezések megadásával szűkíthetjük a találati listát.
A filter paraméter egy szűrő kifelyezéseket tartalmazó tömb. A tömb első elemeként megadható a szűrő kifejezések közötti reláció, melyet az API-nak a lekérdeznéskor alkalmaznia kell. A reláció értéke lehet AND, vagy OR, típusa pedig string, az alapértelmezett relácó az AND. A filter tömbben a reláció után kétféle elem típus adható meg:
Egy szűrő kifejezés a következő paramétereket tartalmazza:
| Név | Típus | Leírás | ||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| field | string | array | Egy vagy több mező nevének megadása, melyben a szűrő kifejezésre keresünk a lekérdezéskor. Érvényes értékek: * (összes mező), mező_neve, vagy egy tömb (array), ami a mezők neveit tartalmazza.
|
||||||||||||||||||||||||||||
| value | string | array | Maga a kereső, vagy szűrő kifejezés, ami alapján szűrni szeretnénk a találati listát. Vagy egy tömb, ami több értéket tartalmaz, ha a compare paraméter értéke IN, NOT IN vagy BETWEEN.
|
||||||||||||||||||||||||||||
| compare | string | A mező (field) tartalma és a szűrő kifejezés (value) összehasonlításának a módját határozza meg.Érvényes értékek:
|
Az elérhető mezőnevekről az adott végpontot részletező fejezetben olvashatunk bővebben.
relation mint első elem, szűrő kifejezés (filter), vagy szűrő kifejezések csoportja (filter set)Szűrő kifejezések csoportja egy tömbben megadható relációval, ahogy feljebb is leítruk. A filter set segítségével összetett kereséseket csinálhatunk, a szűrő kifejezések csoportosításával és egymásba ágyazott filter set-ekkel. Lényegében ezek a csoportok definiálják az SQL lekérdezésben a zárójeleket.
Példa:
{
"filter": [
"AND",
{
"field": "title",
"value": "panzió",
"compare": "LIKE"
},
[
"OR",
{
"field": "created_at",
"value": "2020.10.15 18:00:00",
"compare": ">="
},
{
"field": "updated_at",
"value": "2020.10.15 18:00:00",
"compare": ">="
}
]
]
}
A language azaz nyelv paraméterrel határozhatjuk meg, hogy az adott lekérdezés találatait milyen nyelven kapjuk meg. Ha nem adunk meg ilyen paramétert akkor alapértelmezetten a magyar találatokat adja vissza. Ha az adott tábla nem tartalmaz magyar nyelvű rekordot akkor az első talált nyelv alapján keres. Kivételt képez ez alól a /media végpont ahol nem feltétlenül tartozik nyelv egy rekorhoz, így itt a nyelvvel összefüggő mezők NULL értéket is kaphatnak. A paraméter értékeként a kívánt nyelv kódját kell megadni: hu, en, de, sk
Példa:
{
"language": 'hu'
}
Ezen kívül megadható az all érték is, így az adott rekordhoz tartozó összes nyelv szerepelni fog az API válaszában, a languages mezőben, egy tömbbe rendezve. Ilyenkor nem alkalmazható a nyelvi mezőkre az order_by és a filter paraméter.
A before és after paraméterek az adatszinkronizációnál jelenthetnek segítséget. Leszűkítik a találatot a megadott dátum és idő előtt, vagy után módosított rekordokra. A dátumot a következő formátumban kell megadni: Y-m-d H:i:s vagy Y-m-d
Példa:
{
"before": '2020-05-16 16:22:00'
}
{
"after": '2020-03-09 08:22:00'
}
A lapszámozással (paggination) kapcsolatos paraméterekkel tudjuk a lekérdezéseket optimalizálni. A limit paraméter határozza meg, hogy hány találatot adjon vissza egy oldalon (azaz egy lekérdezéskor) az API, a page paraméter pedig azt határozza meg hogy éppen melyik oldal találatait kérjük. Így tudjuk befolyásolni a továbbítandó adat mennyiségét. Figyelem! A limit paraméter értéke nem lehet magasabb mint 100. Ezáltal biztosítjuk, hogy a kiszolgáló ne ütközzön memória limit problémákba.
Példa:
{
"limit": 50,
"page": 2
}
Az order_by paraméter határozza meg, hogy melyik mező alapján rendezzűk a találati listát és az order paraméter határozza meg hogy csökkenő vagy növekvő sorrendben kapjuk meg a találatokat.
Példa:
{
"order_by": 'title',
"order": 'ASC'
}
Válasz séma:
{
"count": 15,
"results": [
{
"id": 2,
"place": 0,
"active_from": "2020-05-20T10:00:00+00:00",
"active_to": "2020-09-30T10:00:00+00:00",
"poi_list": "217",
"project_id": 8,
"created_at": "2020-05-21T16:20:56+00:00",
"updated_at": "2020-09-03T15:38:30+00:00",
"title": "Cím",
"media_id": 1629,
"language": "hu"
}
...
]
}
A count mező tartalmazza a keresésnek megfelelő találatok számát, ami nem feltétlenül egyenlő a results tömbben található találatok számával lsd. limit lekérdezési paraméter.
Válasz séma:
{
"count": 15,
"results": [
{
"id": 2915,
"path": "Images/kep.jpg",
"basename": "kep.jpg",
"original_file_path": "Images/kep.jpg.original",
"directory": 125,
"filesize": 96014,
"filesize_count": 122774,
"type": "image",
"size_names": "thumbnail",
"sequence_number": 147,
"project_id": 8,
"temporary": 0,
"created_at": "2020-09-03T15:20:38+00:00",
"updated_at": "2020-09-03T15:20:38+00:00",
"url": "https://api.virtour.hu/uploads/8/Images/kep.jpg"
}
...
]
}
A count mező tartalmazza a keresésnek megfelelő találatok számát, ami nem feltétlenül egyenlő a results tömbben található találatok számával lsd. limit lekérdezési paraméter.
Válasz séma:
{
"count": 15,
"results": [
{
"id": 125,
"name": "Könyvtár neve",
"parent": 0,
"project_id": 8,
"created_at": "2020-09-03T13:20:17+00:00",
"updated_at": "2020-09-03T13:20:17+00:00"
}
...
]
}
A count mező tartalmazza a keresésnek megfelelő találatok számát, ami nem feltétlenül egyenlő a results tömbben található találatok számával lsd. limit lekérdezési paraméter.
Válasz séma:
{
"count": 15,
"results": [
{
"id": 2,
"main_image": 2915,
"images": "",
"active_from": "2020-09-03T15:19:00+00:00",
"active_to": "2021-09-03T15:19:00+00:00",
"poi_list": "219",
"project_id": 8,
"category_list": "69,42",
"group_list": "34",
"connections": "34_69_216,34_69_217,34_69_218,34_69_219,34_42_318,34_69_0,34_42_0,34_0_0",
"created_at": "2020-09-03T15:22:02+00:00",
"updated_at": "2020-09-03T15:24:51+00:00",
"title": "Hír címe",
"text": "Hír szövege...",
"narration_id": 0,
"video_id": 0,
"language": "hu"
}
...
]
}
A count mező tartalmazza a keresésnek megfelelő találatok számát, ami nem feltétlenül egyenlő a results tömbben található találatok számával lsd. limit lekérdezési paraméter.
Válasz séma:
{
"count": 15,
"results": [
{
"id": 465,
"is_active": 1,
"beacon_id": "",
"codename": "000500500",
"number": "20",
"sequence": 1,
"group_childs": 0,
"parent": 0,
"main_image": 2438,
"images": "",
"child_pois_map": 0,
"services": "5",
"action": "",
"latitude": "47.94011",
"longitude": "19.03357",
"big_image": 0,
"kiosk_only": 0,
"project_id": 8,
"created_at": "2020-07-02T11:06:21+00:00",
"updated_at": "2020-07-02T11:06:21+00:00",
"title": "Szolgáltató neve",
"secondary_title": "Szolgáltató másodlagos neve",
"text": "Szolgáltató leírása",
"narration_id": 0,
"video_id": 0,
"video_cover_id": 0,
"pano_id": 0,
"website_link": "www.szolgaltato.hu",
"website_link_text": "",
"ar_file_id": 0,
"ar_marker_image_id": 0,
"ar_marker_physical_size": 0.05,
"modell_id": 0,
"language": "hu",
"routes": [
{
"route_id": 72,
"parent_provider_id": 0,
"map_index": 0,
"open_map_index": -1,
"coordx": "-1",
"coordy": "-1",
"rotation": -1,
"sorting_index": 4,
"marker_type": "Default"
}
...
]
}
...
]
}
A count mező tartalmazza a keresésnek megfelelő találatok számát, ami nem feltétlenül egyenlő a results tömbben található találatok számával lsd. limit lekérdezési paraméter.
A routes mező tartalmazza a poi információkat a különböző túraútvonalakban, melyekben szerepel az adott szolgáltató.
Válasz séma:
{
"count": 15,
"results": [
{
"id": 44,
"is_active": 1,
"main_image": 2437,
"images": "",
"type": 0,
"sequence": 1,
"logo": 0,
"lat": "",
"lng": "",
"colorcode": "",
"map_tiles_file_path": "utvonal/a/terkep/mozaik/fajlokhoz.zip",
"map_tiles_file_updated": 1593688374,
"map_tiles_file_size": 0,
"map_tiles_update_requested": 0,
"map_bounding": "{"nw_lat":47.962101,"nw_lng":18.999292576387,"se_lat":47.912977,"se_lng":19.097694880529}",
"map_center_point": "{"lat":47.937539,"lng":19.048493728458}",
"number_module": 0,
"project_id": 8,
"created_at": "2020-07-02T10:14:41+00:00",
"updated_at": "2020-07-02T10:18:56+00:00",
"title": "Térség neve",
"alt": "Térség alt szövege",
"text": "Térség leírása",
"narration_id": 0,
"video_id": 0,
"pano_id": 0,
"language": "hu"
}
...
]
}
A count mező tartalmazza a keresésnek megfelelő találatok számát, ami nem feltétlenül egyenlő a results tömbben található találatok számával lsd. limit lekérdezési paraméter.
Válasz séma:
{
"count": 15,
"results": [
{
"id": 72,
"group_id": 44,
"map1_image": 0,
"map2_image": 0,
"map3_image": 0,
"main_image": 2437,
"images": "",
"is_active": 1,
"map_mode": true,
"map_tiles_file_path": "",
"map_tiles_file_updated": 0,
"map_tiles_file_size": 0,
"map_tiles_update_requested": 0,
"map_center_point": "{"lat":47.937539,"lng":19.048493728458}",
"map_bounding": "{"nw_lat":47.962101,"nw_lng":18.999292576387,"se_lat":47.912977,"se_lng":19.097694880529}",
"duration_hours": 0,
"duration_minutes": 0,
"type": 14,
"sequence": 0,
"kiosk_only": 0,
"colorcode": "",
"project_id": 8,
"created_at": "2020-07-02T10:40:07+00:00",
"updated_at": "2020-09-03T11:27:12+00:00",
"title": "Túraútvonal neve",
"secondary_title": "Túraútvonal másodlagos neve",
"text": "Túraútvonal leírása",
"map1_text": "",
"map2_text": "",
"map3_text": "",
"narration_id": 0,
"video_id": 0,
"language": "hu",
"providers": [
{
"provider_id": 461,
"parent_provider_id": 0,
"map_index": 0,
"open_map_index": -1,
"coordx": "-1",
"coordy": "-1",
"rotation": -1,
"sorting_index": 0,
"marker_type": "Default"
}
...
]
}
...
]
}
A count mező tartalmazza a keresésnek megfelelő találatok számát, ami nem feltétlenül egyenlő a results tömbben található találatok számával lsd. limit lekérdezési paraméter.
A providers mező tartalmazza a poi információkat a túraútvonalban szereplő szolgáltatókkal kapcsolatban.
Válasz séma:
{
"count": 15,
"results": [
{
"id": 19,
"group_name": "PAGES",
"special_id": "USER_GUIDE",
"image": 0,
"is_active": 1,
"project_id": 8,
"created_at": "2020-09-21T13:39:45+00:00",
"updated_at": "2020-09-21T13:39:45+00:00",
"title": "Túraútvonal típus neve",
"text": "Túraútvonal típus leírása",
"language": "hu"
}
...
]
}
A count mező tartalmazza a keresésnek megfelelő találatok számát, ami nem feltétlenül egyenlő a results tömbben található találatok számával lsd. limit lekérdezési paraméter.
Válasz séma:
{
"count": 15,
"results": [
{
"id": 11,
"image": 0,
"parent_id": 1,
"project_id": 8,
"created_at": "2020-07-02T12:34:53+00:00",
"updated_at": "2020-07-02T12:34:53+00:00",
"title": "Apartman",
"language": "hu"
}
...
]
}
A count mező tartalmazza a keresésnek megfelelő találatok számát, ami nem feltétlenül egyenlő a results tömbben található találatok számával lsd. limit lekérdezési paraméter.