Virtour REST API

A Virtour mobil alkalmazás adatbázisához készült REST API dokumentációja - verzió: 1.0


Bevezetés


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.

Végpontok

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.

Hitelesítés

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.

Lekérdezések

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és és szűrés

Keresési vagy szűrési kifejezések megadásával szűkíthetjük a találati listát.

  • név: filter
  • típus: array
  • alapértelmezett érték: null

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:

Szűrő kifejezés
  • típus: object

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:
Érték SQL megfelelője
==
!=!=
>>
>=>=
<<
<=<=
LIKELIKE és a szűrő kifejezés a % jelekkel lesz kiegészítve
pl.: LIKE %panzió%
NOT LIKENOT LIKE és a szűrő kifejezés a % jelekkel lesz kiegészítve
pl.: NOT LIKE %panzió%
ININ - szűrő kifejezés value paramétere egy tömb kell hogy legyen, ami a lehetséges értékeket tartalmazza.
NOT INNOT IN - szűrő kifejezés value paramétere egy tömb kell hogy legyen, ami azokat az értékeket tartalmazza, amelyeket ki akarunk zárni a találati listából .
IS NULLIS NULL
IS NOT NULLIS NOT NULL
BETWEENBETWEEN - szűrő kifejezés value paramétere egy tömb kell hogy legyen, két elemmel.
Alapértelmezett érték: =

Az elérhető mezőnevekről az adott végpontot részletező fejezetben olvashatunk bővebben.

Szűrő kifejezések csoportja
  • filter set
  • típus: array
  • lehetséges elem típusuok: 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": ">="
                                                }
                                            ]
                                        ]
                                    }
                                

Nyelv

  • név: language
  • típus: string
  • alapértelmezett érték: hu

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.

Módosítás dátuma

  • név: before
  • típus: date string
  • alapértelmezett érték: null

  • név: after
  • típus: date string
  • alapértelmezett érték: null

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'
                                    }
                                

Lapszámozás

  • név: limit
  • típus: number
  • alapértelmezett érték: 10
  • maximum érték: 100

  • név: page
  • típus: number
  • alapértelmezett érték: 1

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
                                    }
                                

Rendezés

  • név: order_by
  • típus: string
  • alapértelmezett érték: Általában az 'id' mező, de ez végpontonként változhat.

  • név: order
  • típus: string
  • alapértelmezett érték: DESC
  • lehetséges értékek: ASC, DESC

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'
                                    }
                                

Hirdetések

  • végpont: https://api.virtour.hu/advertisements

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.

Médiafájlok

  • végpont: https://api.virtour.hu/media

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.

Média könyvtárak

  • végpont: https://api.virtour.hu/media-directories

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.

Hírek

  • végpont: https://api.virtour.hu/news

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.

Szolgáltatók

  • végpont: https://api.virtour.hu/providers

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ó.

Térségek

  • végpont: https://api.virtour.hu/regions

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.

Túraútvonalak

  • végpont: https://api.virtour.hu/routes

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.

Túraútvonal típusok

  • végpont: https://api.virtour.hu/route-types

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.

Szolgáltatások

  • végpont: https://api.virtour.hu/services

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.