[Extern] API Dokumentation
Datahub Tegernsee [Stand: 23.05.2023]
Inhaltsverzeichnis
1. Erste Schritte
Um mit der GraphQL Schnittstelle arbeiten zu können benötigen sie:
Datahub API Key
- Link zum
GraphiQL Explorer
Diese Informationen erhalten sie von ihrem Ansprechpartner (ATS/TTT).
1.1 GraphiQL Explorer
Für jede individuelle GraphQL Schnittstelle steht eine eigene technische Dokumentation im GraphiQL Explorer zur Verfügung. Dieser kann unter folgendem URL Schema aufgerufen werden.
https://datahub.tourismus-kompetenz.de/pimcore-datahub-webservices/explorer/API-NAME
API-NAME
wird durch den übermittelten Namen der GraphQL Schnittstelle ersetzt. Beispiel: https://datahub.tourismus-kompetenz.de/pimcore-datahub-webservices/explorer/tours
1.1.1. GraphQL Dokumentation
Die technische Dokumentation kann mit Klick auf "Docs" sowie dem untergeordneten Root Type eingesehen werden. Diese passt sich den zur Verfügung gestellten Daten an.
1.1.2. Ausführen einer Query im GraphiQL Explorer
In folgenden 4 Schritten ist das Ausführen einer Query im GraphiQL Explorer möglich.
- Korrekte Graph QL Schnittstelle ausgewählt? (URL) - prüfen der URL. Siehe Punkt 1.1 GraphiQL Explorer
- Korrekter API Key hinterlegt? (URL) - der API Key ist nach Ausführung auch in der URL sichtbar.
- Abfrage (siehe Beispiel)
- Ausführen ✔️
2. Allgemeine Erklärung
3. Daten
Angeschlossene Datenquellen (Urspung der Dateneingabe):
- outdooractive - Activity
- imx.Platform - Event, Poi, Snow
- INTERMAPS - Ski (POI)
- DS Booking Solution (DS-Content API) - Accomodation
Aktualierungs-Zyklen Datentypen
- Activities 0 10 * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:outdooractive tours" ( Fullimport jeden SO 0:00)
- Events 10 * * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax events --modifiedFromDate" ( stündlich zur 10. Minute bei IMX Änderung)
- POI 20 * * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax pois --modifiedFromDate" (stündlich zur 20. Minute bei IMX Änderung)
- Event Location 30 * * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax eventLocationPois --modifiedFromDate" (stündlich zur 30. Minute bei IMX Änderung)
- POI/Activities (intermaps) 0 2 * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:intermaps" (Fullimport täglich 2:00)
- Schnee IMX (Loipen, Rodelbahn) - (POI) 0 3 * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax poisImx" (Fullimport täglich 3:00)
- Schnee IMX (activityRegion, activity) 40 * * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax activitiesImx" (Fullimport stüdlich zur 40. Minute)
- Accomodation 0 5 * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:ds" (Fullimport täglich 5:00)
Cronsheet
0 0 * * 0 /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:outdooractive tours"
0 1 * * 0 /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:outdooractive cleanTours"
10 * * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax events --modifiedFromDate"
20 * * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax pois --modifiedFromDate"
30 * * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax eventLocationPois --modifiedFromDate"
15 1 * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax cleanEvents"
25 1 * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax cleanPois"
35 1 * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax unpublishWrongPois"
45 1 * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax archiveEvents"
0 2 * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:intermaps"
0 3 * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax poisImx"
40 * * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:infoxmax activitiesImx"
0 5 * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console importer:ds"
0 6 * * * /bin/bash -c "cd /var/www/html/pimcore && ./bin/console updater:tags"
Tags
Mithilfe von Tags werden die Daten im DataHub bzgl. Kategorie und Region geclustered. Diese Tags können über die GraphQL Schnittstelle wie folgt abgefragt werden:
Bsp - Activities:
{
getActivityRegionListing(first: 20, after: 0, defaultLanguage: "de", ids: "47810") {
edges {
node {
id
name
tags {
id
name
}
}
}
}
}
Für weitere Informationen zu den vorhandenen Tags kontaktieren Sie bitte Ihren Ansprechpartner.
Filtering
GraphQL Filtering mehr Infos:
3.1 Gesamt-Visualisierung DataHub
Die im Datahub vorhandenen Informationen können mittels GraphQL Voyager unter folgendem Link betrachtet werden. Mittels Klick auf Objekte werden dynamisch die Verbindungen sowie Tabellen-Felder sichtbar.
3.2 Event
3.2.1. Einleitung
Die Objektklasse "Event" beinhaltet EventCategory (ID: eventCategory) und EventCriteria (ID: eventCriteria) und importiert die Daten aus der Schnittstelle IMX alle 60 Minuten (nur geänderte Daten). Verfügbare Daten liegen in Deutscher Sprache vor. Es besteht eine Verknüpfung (Typ: Viele-zu-Eins-Beziehung) zur Objektklasse Poi (location, contributor).
3.2.2. Visualisierung
Die dynamische Visualisierung der Datahub-Daten ist unter folgendem Link erreichbar.
Alle Details zu Events werden mit Klick auf object_Event
sichtbar.
3.2.3. Beispiel-Query
Listing von Events inkl. aller Details:
{
getEventListing(first: 10, after: 0, defaultLanguage: "de") {
edges {
node {
id
title
shortDescription
location {
... on object_Poi {
id
title
}
}
categories {
... on object_EventCategory {
id
name
}
}
startDate
endDate
startTime
duration
weekDays
weeklyGap
monthlyMonthGap
monthlyGap
monthlyDayOfWeek
monthlyDayOfMonth
specificEventDates {
date
startTime
duration
}
cancelledEventDates {
date
}
soldOutEventDates {
date
}
}
}
}
}
Abfrage von Thumbnails (verfügbar 800x500)
{
2 getEventListing(first: 5) {
3 edges {
4 node {
5 id
6 images {
7 image {
8 id
9 fullpath(thumbnail: "signageEvent")
10 }
11 }
12 }
13 }
14 }
15}
Syntax ist der folgende: statt fullpath
-> fullpath(thumbnail: "signageEvent")
funktioniert somit auch mit anderen Typen.
Abfrage nach Events - gefiltert nach einer Location (id)
{
getEventListing(filter: "{\"location__id\": \"20711\"}", first: 10, after: 0, defaultLanguage: "de") {
edges {
node {
id
title
shortDescription
location {
... on object_Poi {
id
title
}
}
categories {
... on object_EventCategory {
id
name
}
}
startDate
endDate
startTime
duration
weekDays
weeklyGap
monthlyMonthGap
monthlyGap
monthlyDayOfWeek
monthlyDayOfMonth
specificEventDates {
date
startTime
duration
}
cancelledEventDates {
date
}
soldOutEventDates {
date
}
}
}
}
}
3.3 Activity
3.3.1. Einleitung
Die Objektklasse "Activity" beinhaltet ActivityCategory (ID: activityCategory), ActivityRegion (ID: activityRegion) und ActivityTag (ID:activityTag). Importiert werden die Daten aus der Schnittstelle outdooractive einmal wöchentlich (Sonntag, 24:00 Uhr). Verfügbare Daten liegen in Deutscher Sprache vor. Es besteht eine optionale Verknüpfung zu Poi (IMX) falls Schneedaten zur Verfügung stehen (z.B. Loipen, Rodelbahnen) - das Matching wird durch den Eintrag der IMX ID hergestellt.
3.3.2. Visualisierung
Die dynamische Visualisierung der Datahub-Daten ist unter folgendem Link erreichbar.
Alle Details zu Activities werden mit Klick auf object_Activity
sichtbar.
3.3.3. Beispiel-Query
Abfrage Listing von Activities inkl. Details und Medien
{
getActivityListing(first: 10, after: 0, defaultLanguage: "de") {
edges {
node {
id
title
shortText
longText
kmlFile
gpxFile
primary {
image {
id
fullpath
modificationDate
}
}
gallery {
image {
id
fullpath
modificationDate
}
}
regions {
... on object_ActivityRegion {
id
name
}
}
category {
... on object_ActivityCategory {
id
name
}
}
tags {
... on object_ActivityTag {
id
name
}
}
}
}
}
}
3.4 Poi
3.4.1. Einleitung
Die Objektklasse "Poi" beinhaltet PoiCategory (ID: poiCategory) und importiert die Daten aus der Schnittstelle IMX alle 60 Minuten (nur geänderte Daten). Verfügbare Daten liegen in Deutscher Sprache vor.
3.4.2. Visualisierung
Die dynamische Visualisierung der Datahub-Daten ist unter folgendem Link erreichbar.
Alle Details zu Activities werden mit Klick auf object_Poi
sichtbar.
3.4.3. Beispiel-Query
Abfrage POI Listing inkl. Details und Medien
{
getPoiListing(first: 10, after: 0, defaultLanguage: "de") {
edges {
node {
id
title
shortDescription
longDescription
classifications
categories {
... on object_PoiCategory {
id
name
}
}
contactName
salutation
firstname
lastname
street
streetNo
zipcode
city
country
phone1
phone2
fax
email
homepage
geo {
longitude
latitude
}
images {
image {
id
fullpath
modificationDate
}
}
seatsIndoor
seatsOutdoor
numberRooms
numberConferenceRooms
numberPersons
rooms {
... on fieldcollection_PoiRoom {
name
rsize
height
blockSeating
roomAttributes
images {
image {
id
fullpath
modificationDate
}
}
}
}
}
}
}
}
3.5 Schneehöhen
3.5.1. Einleitung
Es gibt keine einheitliche Objektklasse für Schneedaten. Schneehöhen stehen bei folgenden Klassen zur Verfügung:
- Activity (Loipen, Rodelbahnen)
- Poi (Skigebiete, Eisplätze)
- Region (Orte)
3.5.2. Visualisierung
Demnach erfolgt die Visualisierung der Daten unter den jeweiligen zugeordneten Objektklassen unter folgendem Link mit dem Klick auf object_Activity
,object_ActivityRegion
, object_Poi
3.5.3. Beispiel-Query
Schneehöhe Ort
{
getActivityRegionListing(defaultLanguage: "de") {
edges {
node {
id
name
information
depthOfSnowMountain
depthOfSnowValley
freshSnow
streetCondition
}
}
}
}
3.6 Ski (Poi)
3.6.1. Einleitung
Es gibt keine eigene Objektklasse für Daten zu den Skigebieten,diese werden als untergeordneter Objektbaustein "poiType" zur Objektklasse "Poi" gespeichert. Zudem werden IMX Daten mit Daten aus der Intermaps Schnittstelle angereichert. Die Akualisierung erfolgt hier [in Arbeit].
3.6.2. Visualisierung
Die dynamische Visualisierung der Datahub-Daten ist unter folgendem Link erreichbar.
Alle Details zu Ski (Poi) werden mit Klick auf object_Poi
sichtbar.
3.6.3. Beispiel-Query
Abfrage Listung Lifte und Pisten eines Skigebiets inkl. Informationen
{
getPoiListing(first: 10, after: 0, defaultLanguage: "de", filter: "{\"o_path\": {\"$like\": \"%/Intermaps/%\"}}") {
edges {
node {
id
title
status
slopes {
... on object_Activity {
id
title
status
length
}
}
lifts {
... on object_Activity {
id
title
status
}
}
}
}
}
}
oder
{
getActivityListing(first: 10, after: 0, defaultLanguage: "de", filter: "{\"o_path\": {\"$like\": \"%/Slopes/%\"}}") {
edges {
node {
id
title
status
}
}
}
}
{
getActivityListing(first: 10, after: 0, defaultLanguage: "de", filter: "{\"o_path\": {\"$like\": \"%/Lifts/%\"}}") {
edges {
node {
id
title
status
}
}
}
}
3.7 Accomodation
3.7.1. Einleitung
Die Objektklasse "Accomodation" beinhaltet folgende Unterkassen
- AccommodationAmenity (ID: accommodationAmenity)
- AccommodationAudience (ID: accommodationAudience)
- AccommodationCategory (ID: accommodationAudience)
- AccommodationMainCategory (ID: accommodationMainCategory)
Sowie auch die Zimmer werden hierarchisch unterhalb als Objektklasse"AccommodationRoom" (ID: accommodationRoom) angezeigt und beinhalten folgende Unterklassen:
- AccommodationRoomAmenity (ID: accommodationRoomAmenity)
- AccommodationRoomCategory (ID: accommodationRoomCategory)
Daten werden aus Schnittstelle DS-Content API (DS Booking Solution) einmal täglich um 5:00 Uhr importiert. Verfügbare Daten liegen in Deutscher Sprache vor.
3.7.2. Visualisierung
Die dynamische Visualisierung der Datahub-Daten ist unter folgendem Link erreichbar.
Alle Details zu Accomodation werden mit Klick auf object_Accommodation
sichtbar.
3.7.3. Beispiel-Query
Listing mit Unterkünften - gleiche Abfrage gilt wie immer für Detail, mit getAccomodation(id: ….) { … }
{
getAccommodationListing(first: 10, after: 0, defaultLanguage: "de") {
edges {
node {
id
title
description
locationDescription
categories {
... on object_AccommodationCategory {
id
name
}
}
stars
amenities {
... on object_AccommodationAmenity {
id
name
}
}
availableLanguages
audiences {
... on object_AccommodationAudience {
id
name
}
}
homepage
priceFrom
yearBuilt
street
zipcode
city
country
images {
image {
id
fullpath
modificationDate
}
}
checkinTimeFrom
checkinTimeTill
checkoutTimeFrom
checkoutTimeTill
children {
... on object_AccommodationRoom {
id
name
categories {
... on object_AccommodationRoomCategory {
id
name
}
}
occupancyMin
occupancyMax
occupancyStd
amenities {
... on object_AccommodationRoomAmenity {
id
name
}
}
floorSize
numberOfBathrooms
numberOfBedrooms
images {
image {
id
fullpath
modificationDate
}
}
}
}
}
}
}
}
4. Kontakt/Ansprechpartner
4.1. Regionalentwicklung Oberland KU
Christian Greilinger - Datenmanagement und Digitalisierung
Tel: +49 8025 99372 14
christian.greilinger@regionalentwicklung-oberland.de
4.2. Tegernseer Tal Tourismus GmbH
Timm Jelitschek Projektmanager Digitalisierung
Tel: +49 8022 92738 16