CST Channel XML-Feed
- Roger Wesemann
- Clemens Gutweiler
- bs@vioma.de (Unlicensed)
Oft ist es wichtig, auf die in der Clearing Station gepflegten Daten zugreifen zu können, um sie anderweitig zu verarbeiten. Hier bietet vioma die Daten auch als "XML-Feed" an, welcher häufig verwendete Informationen des gewünschten Channels enthält.
Abfragbar sind die
Hotel Stammdaten
Hotel Pauschalen
- Hotel Zimmerkategorien
Hotel Zusatzleistungen
Hotel Discounts (Bonusprogramm)
Bitte beachten Sie:
Diese Dokumentation behandelt den XML-Feed für die CST 7. Die Dokumentation für den XML-Feed der alten Clearing Station (CST 5) finden Sie hier.
Migration von CST 5 auf CST 7
Das Preissystem der CST 7 wurde komplett neu entwickelt wodurch sich auch die Preiskalkulation geändert hat. Entsprechend wurde der XML-Feed an das neue Preissystem angepasst.
Folgende Inhalte haben sich geändert:
Saisonzeiten (Seasons)
Saisonzeiten stehen im Ratenkalender noch zur visuellen Orientierung zur Verfügung, haben aber keinen Einfluss mehr auf die Berechnung der Preise. Die Saisonzeiten sind aktuell noch im Feed enthalten, die Informationen der in der Clearingstation 5 angelegten Saisons sind auch noch vorhanden, sind aber als "deprecated" (veraltet) anzusehen. Das bedeutet auch, dass der komplette Seasons-Node in einem der nächsten Updates entfernt werden könnte. In der Vergangenheit wurden die Saisonzeiten gerne dazu verwendet, Preislisten auf den Zimmerdetailseiten darzustellen. Das ist jetzt nicht mehr möglich, da es sich in der CST 7 nur noch um Tagespreise handelt.Preise der Zimmertypen (roomtypes/roomtype/prices)
In der CST 7 wurden die Zimmertypen in Zimmerkategorien umbenannt. Im XML-Feed wird der Node aktuell aber immer noch als "roomtypes"/"roomtype" aufgrund der Rückwärtskompatibilität dargestellt. Die Preise innerhalb einer Zimmerkategorie gibt es aber mit dem neuen Preissystem nicht mehr. In der Vergangenheit wurden die Preise der Zimmertypen gerne dazu verwendet, Preislisten auf den Zimmerdetailseiten darzustellen. Das ist jetzt nicht mehr möglich, da es sich in der CST 7 nur noch um Tagespreise handelt.- Zimmerkontingente (rooms)
In der CST 7 werden Zimmerkontingente je nach angebundener Schnittstelle nicht mehr genutzt, und sind daher im XML-Feed nicht mehr enthalten. - Belegungen von Zimmerkontingenten (rooms-alloc)
In der CST 7 werden Belegungen der Zimmerkontingente je nach angebundener Schnittstelle nicht mehr genutzt, und sind daher im XML-Feed nicht mehr enthalten. - Gepflegte Pensionspreise (roomtype/pension-prices)
In der CST 7 wurden die Pensionen in Raten umbenannt. Im XML-Feed wird der Node aktuell aber immer noch als "pension-types"/"pension-type"/"pension-prices" aufgrund der Rückwärtskompatibilität dargestellt. In der CST 7 werden die Preise nicht mehr pro Raten (Pension) gepflegt, sondern pro Produkt und Tag. Somit sind diese Informationen im XML-Feed nicht mehr enthalten. - Informationen zu verfügbaren Zimmertypen je Pauschale (package/roomtypes)
Dieser Node stellt Informationen der Zimmerkategorien zur Verfügung, die mit der Pauschale buchbar sind (Publizierung). Dieser Bereich ist noch in Entwicklung. Aktuell werden die Pauschalen mit allen Zimmern publiziert. Man kann das aktuell im Preiskalender beschränken, bspw. in dem man keine Preise für die nicht gewünschten Zimmer pflegt oder auf "Closed" setzt.
IN PROGRESS - Gepflegte Pauschalenpreise (package/prices)
Pauschalenpreise werden nicht mehr pro Pauschale gepflegt sondern pro Tag und Produkt im Pauschalenkalender eingegeben. Somit sind diese Informationen im XML-Feed nicht mehr enthalten.
Bitte beachten Sie:
Wenn Sie die beschriebenen Daten/Nodes verwenden, müssen Sie bei der Migration darauf achten, dass Sie Ihre Templates und/oder Scripte anpassen bzw. von Ihrem Webmaster anpassen lassen, da die Daten nach der Migration nicht mehr zur Verfügung stehen. Ansonsten kommt es bei der Ausgabe zu Fehlern. Gegebenenfalls müssen Sie auch Ihr Layout ändern, da die Ausgabe von Preistabellen z. B. so nicht mehr möglich ist.
Bitte beachten Sie:
Im XML-Feed gibt es in den Nodes aktuell noch viele Elemente, die in Zukunft nicht mehr verwendet werden (z. B. "hpt_guarantee" unter hotels/hotel/pension-types/pension-type/data), aber noch Daten (aus der CST 5) enthalten. Vioma löscht diese Daten nicht. In Zukunft werden diese Daten in der CST aber nicht mehr verwendet. Wenn Sie unsicher sind, ob Ihre verwendeten Daten in Zukunft noch zur Verfügung stehen, klären Sie bitte die Verwendung zuvor mit Ihrem Kundenberater oder mit dem vioma-Kundenservice ab.
Aktivierung
Aktuell ist das XML nur auf Anfrage verfügbar und wird explizit von vioma bei Bedarf aktiviert.
Wenn Sie Interesse am XML-Feed haben, wenden Sie sich bitte an Ihren Kundenberater oder an unseren vioma-Kundenservice.
Aufruf
Das XML kann über eine URL aufgerufen werden. Es ist ratsam, das Ergebnis mit (GET-) Parametern einzuschränken um ein schnell zu verarbeitendes Ergebnis zu erhalten.
https:// [ Client Subdomain des Hotels ] . [ SSL-Domain ] /xml.php? [ gewünschte Parameter ]
Das XML ist nur über SSL verfügbar. Wird ein eigenes SSL-Zertifikat werwendet, wird die SSL-Domain mit der Domain ersetzt, bei allen anderen Hotels ist das "viomassl.com".
Beispiel
Aufbau
Wenn die "xml.php"-Datei ohne Parameter aufgerufen wird, werden alle Hotels, die auf dem Channel publiziert sind, ausgegeben. Bitte beachten Sie, dass je nach Anzahl der Hotels/Pauschalen und Zusatzleistungen das XML sehr groß werden kann (>100MB). Pro Hotel sind die Inhalte in folgender Struktur vorhanden:
<hotels> <hotel> <!-- Hotel node --> <data>...</data> <!-- Hotel Stammdaten --> <packages>...</packages> <!-- Pauschalen des Hotels --> <indicators>...</indicators> <!-- Indikatoren des Hotels --> <children>...</children> <!-- Kinderaltersgruppen des Hotels --> <pension-types>...</pension-types> <!-- Raten des Hotels --> <programs>...</programs> <!-- Zusatzleistungen des Hotels --> <roomtypes>...</roomtypes> <!-- Zimmerkategorien des Hotels --> <discounts>...</discounts> <!-- Discounts des Hotels --> </hotel> </hotels>
Beschreibung der einzelnen Nodes:
Packages
Der Packages-Node erhält alle Informationen über die Pauschalen. Es werden hier nicht alle Nodes beschrieben, viele sind aber selbst erklärend. Benötigen Sie weitere Informationen oder sind Ihnen Nodes unklar, wenden Sie sich bitte an den vioma-Kundenservice.
<package id="1234" url="angebot-1234-time-out-mit-ayurveda.html"> <info>...</info> <timeframe_from>0000-00-00</timeframe_from> <timeframe_to>0000-00-00</timeframe_to> <avail_from>0000-00-00</avail_from> <avail_to>0000-00-00</avail_to> <package_name>Time out mit Ayurveda</package_name> <package_teaser>Machen Sie doch mal "Time out" und lassen sich mit Ayurveda verwöhnen. Genießen Sie Ihre Zeit im Wellnessbereich mit Badanwendungen und Massagen.</package_teaser> <package_description>Machen Sie doch mal "Time out" und lassen sich mit Ayurveda verwöhnen. Genießen Sie Ihre Zeit im Wellnessbereich mit Badanwendungen und Massagen.</package_description> <package_image>https://cst-media3.viomassl.com/3353/12345</package_image> <package_price>100</package_price> <package_default_room_type>12345</package_default_room_type> <timeframes-avail>...</timeframes-avail> <timeframes-public>...</timeframes-public> <indicators/> <roomtypes>...</roomtypes> <media/> </package>
Auszug aus dem Packages-Node
info/hpa_type | Pauschalentyp: 1 = Normale Pauschale, 2 = Last-Minute, 3 = Intranet, 4 = Gutscheine, 5 = Day Spa |
---|---|
package_name | Pauschalenname |
package_teaser | Kurze Beschreibung |
package_description | Detailbeschreibung |
package_image | URL zum Bild |
package_default_room_type | Standard Zimmertyp |
timeframes-avail | ht_from, ht_to: Buchbare Zeiträume |
timeframes-public | ht_from, ht_to: Anzeigenzeitraum |
Roomtypes
Der Roomtypes-Node erhält alle Informationen über die Zimmertypen eines Hotels. Es werden hier nicht alle Nodes beschrieben, viele sind aber selbst erklärend. Benötigen Sie weitere Informationen oder sind Ihnen Nodes unklar, wenden Sie sich bitte an den vioma-Kundenservice.
<roomtypes> <roomtype id="12345"> <data> <hrt_alloc_min>1</hrt_alloc_min> <hrt_image_panorama>0</hrt_image_panorama> <hrt_alloc_max>4</hrt_alloc_max> <hrt_alloc_max_childs>6</hrt_alloc_max_childs> <hrt_name>Juniorsuite Birke</hrt_name> <hrt_hotel>3353</hrt_hotel> <hrt_room_allocate>0</hrt_room_allocate> <hrt_desc_cms>Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht - ein geradezu unorthographi...</hrt_desc_cms> <hrt_bookable>1</hrt_bookable> <hrt_pms_reference>JSBIRK</hrt_pms_reference> <hrt_weekdays_arrival>127</hrt_weekdays_arrival> <hrt_group>956</hrt_group> <hrt_alloc_min_persons>0</hrt_alloc_min_persons> <hrt_room_size>0</hrt_room_size> <hrt_catering>20</hrt_catering> <hrt_price_from>0</hrt_price_from> <hrt_desc_teaser_str>Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtext...</hrt_desc_teaser_str> <hrt_public_to>0000-00-00 00:00:00</hrt_public_to> <indicators/> <hrt_id>14138</hrt_id> <hrt_image>https://cst-media2.viomassl.com/3353/12345</hrt_image> <hrt_desc_teaser>Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtext...</hrt_desc_teaser> <hrt_price_type>1</hrt_price_type> <hrt_desc_cms_str>Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht - ein geradezu unorthographi...</hrt_desc_cms_str> <hrt_group_name>Suiten</hrt_group_name> <hrt_children_prices>2</hrt_children_prices> <hrt_image_plan>0</hrt_image_plan> <hrt_price_deposit>0</hrt_price_deposit> <hrt_usage_includes_children>0</hrt_usage_includes_children> <hrt_quota>1</hrt_quota> <hrt_name_str>Juniorsuite Birke</hrt_name_str> <hrt_price_cleaning>0</hrt_price_cleaning> <hrt_alloc_def>2</hrt_alloc_def> <hrt_pms_sync_avail_last_updated>0000-00-00 00:00:00</hrt_pms_sync_avail_last_updated> <hrt_rooms>1</hrt_rooms> <hrt_shard>1</hrt_shard> <hrt_alt_reference/> <hrt_least_stays>0</hrt_least_stays> <hrt_beds>0</hrt_beds> <hrt_public_from>0000-00-00 00:00:00</hrt_public_from> <hrt_estate_size>0</hrt_estate_size> <hrt_order>0</hrt_order> <hrt_pms_sync_rate_last_updated>0000-00-00 00:00:00</hrt_pms_sync_rate_last_updated> </data> <media>...</media> ... </roomtype> </roomtypes>
Auszug aus dem Roomtype-Node
data/hrt_name | Zimmername |
---|---|
data/hrt_desc_teaser | Kurze Beschreibung |
data/hrt_desc_cms | Detailbeschreibung |
data/hrt_image | URL zum Bild |
Programs
Der Programs-Node erhält alle Informationen über die Zusatzleistungen eines Hotels. Es werden hier nicht alle Nodes beschrieben, viele sind aber selbst erklärend. Benötigen Sie weitere Informationen oder sind Ihnen Nodes unklar, wenden Sie sich bitte an den vioma-Kundenservice.
<programs> <program id="12345"> <hp_price_type>0</hp_price_type> <hp_desc_teaser>Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtext...</hp_desc_teaser> <hp_desc_cms>Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht - ein geradezu unorthographi...</hp_desc_cms> <hp_name_str>Rückenmassage | 70 min</hp_name_str> <hp_pms_reference/> <hp_duration>0</hp_duration> <hp_order>3</hp_order> <hp_price>70</hp_price> <indicator_id>24253</indicator_id> <hp_name>Rückenmassage | 70 min</hp_name> <indicators>...</indicators> <hp_roomless>0</hp_roomless> <hp_bookable>1</hp_bookable> <hp_quota_active>0</hp_quota_active> <hp_id>45329</hp_id> <hp_hotel>3353</hp_hotel> <hp_image_alt/> <indicator_name>Massagen</indicator_name> <hp_quota>0</hp_quota> <hp_treatment_length>70</hp_treatment_length> <hp_desc_cms_str>Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtexte. Abgeschieden wohnen Sie in Buchstabhausen an der Küste des Semantik, eines großen Sprachozeans. Ein kleines Bächlein namens Duden fließt durch ihren Ort und versorgt sie mit den nötigen Regelialien. Es ist ein paradiesmatisches Land, in dem einem gebratene Satzteile in den Mund fliegen. Nicht einmal von der allmächtigen Interpunktion werden die Blindtexte beherrscht - ein geradezu unorthographi...</hp_desc_cms_str> <hp_image>https://cst-media3.viomassl.com/3353/104002</hp_image> <hp_pms_reference_block/> <hp_desc_teaser_str>Weit hinten, hinter den Wortbergen, fern der Länder Vokalien und Konsonantien leben die Blindtext...</hp_desc_teaser_str> <hp_bookable_package>0</hp_bookable_package> </program> </programs>
Auszug aus dem Program-Node
data/hp_name | Programmname |
---|---|
data/hp_desc_teaser | Kurze Beschreibung |
data/hp_desc_cms | Lange Beschreibung |
data/hp_image | URL zum Bild |
Discounts
Wird das Modul "Bonusprogramm" verwendet, können durch den Parameter "data_discount=1" die Produkte mit hinterlegten Discount-Punkten ausgegeben werden. Zusätzlich erscheint ein weiterer Node mit Informationen zum Bonusprogramm:
<discounts> <discount_providers> <int-0> <cdp_name>vioma-Discount</cdp_name> <cdp_company>5</cdp_company> <cdp_points_name>vioma-Punkte</cdp_points_name> <cdp_points_max>0</cdp_points_max> <cdp_points_calculation>0</cdp_points_calculation> <cdp_id>1</cdp_id> <cdp_points_lifetime_value>0</cdp_points_lifetime_value> <cdp_points_lifetime_unit>0</cdp_points_lifetime_unit> </int-0> </discount_providers> <discount_products> <int-0> <hpdp_action>0</hpdp_action> <hpdp_value>0</hpdp_value> <hpdp_hotel>3353</hpdp_hotel> <hpdp_provider>0</hpdp_provider> <hpdp_type>0</hpdp_type> <hpdp_id>6</hpdp_id> <hpdp_reference>14143</hpdp_reference> </int-0> <int-1>...</int-1> </discounts_products> </discounts/>
Discount-Providers
Ein Discount-Provider ist ein Anbieter eines Bonusprogramm
cdp_name | Der Name des Bonusprogramm |
---|---|
cdp_company | Die ID des Anbieters |
cdp_points_name | Der Name der Punkte |
cdp_points_max | Maximal möglicher Punktestand |
cdp_points_calculation | Gleichzeitiges Einlösen und Gutschreiben von Punkten ermöglichen (1) |
cdp_id | Die ID des Bonusprogramm |
cdp_points_lifetime_value | Verfallzeit der Punkte |
cdp_points_lifetime_unit | Einheit der Verfallszeit (Tage (0) / Wochen (1) / Monate (2) ) |
Discount-Products
Ein Discount-Product ist ein Discount für ein bestimmtes Produkt
hpdp_action | Der Aktionstyp: Legt fest, ob Rabatte, bzw. Punkte beim Buchen abgezogen (0) oder gutgeschrieben (1) werden |
---|---|
hpdp_value | Anzahl der Punkte |
hpdp_hotel | Hotel ID des ausgebenden Discount-Produktes |
hpdp_provider | ID des Discount-Providers |
hpdp_type | Produkttyp: 0 = Zimmer (<roomtypes>), 1 = Zusatzleistungen (<programs>), 2 = Pauschalen (<packages>) |
hpdp_id | Die ID des Discount-Products |
hpdp_reference | Die dem Produkttyp zugehörige ID (hrt_id, hp_id, hpa_id) |
Parameter
Sie können durch Übergabe von Parametern, die Ausgabe filtern.
Hotel
Mit dem Parameter "hotel" können Sie ein bestimmtes Hotel auswählen. Als Wert müssen Sie die Hotel-ID angeben.
Children
Mit dem Parameter "data_childrens" erhalten Sie den data-children-Node, der Informationen über die Kinderalter enthält.
- "data_childrens=1" fügt den Kinder-Node hinzu
- "data_childrens=0" entfernt den Kinder-Node aus dem Feed
Gallery
Mit dem Parameter "data_gallery" erhalten Sie den data-gallery-Node. Dieser Node enthält URLs zu Impressionen des Hotels.
- "data_gallery=1" fügt den Galerie-Node hinzu
- "data_gallery=0" entfernt den Galerie-Node aus dem Feed
Pension types
Mit dem Parameter "data_pension_types" erhalten Sie die im Hotel verfügbaren Raten.
- "data_pension_types=1" fügt den Raten-Node hinzu
- "data_pension_types=0" entfernt den Raten-Node aus dem Feed
Room types
Mit dem Parameter "data_roomtypes" erhalten Sie alle Informationen zu den im Hotel verfügbaren Zimmertypen.
- "data_roomtypes=1" fügt den Zimmerkategorien-Node hinzu
- "data_roomtypes=0" entfernt den Zimmerkategorien-Node aus dem Feed
Programs
Mit dem Parameter "data_programs" erhalten Sie Zusatzleistungen des Hotels.
- "data_programs=1" fügt den Zusatzleistungen-Node hinzu
- "data_programs=0" entfernt den Zusatzleistungen-Node aus dem Feed
Packages
Mit dem Parameter "data_packages" erhalten Sie Pauschalen des Hotels.
- "data_packages=1" fügt den Pauschalen-Node hinzu
- "data_packages=0" entfernt den Pauschalen-Node aus dem Feed
Info texts
TODO
- data_info_texts=1
Facts
TODO
- data_facts=1
Discount
Mit dem Parameter "data_discount" erhalten Sie Informationen und Produkte zum Bonusprogramm. Bitte beachten Sie, das dass Bonusprogramm ein Zusatzmodul ist und eine gesonderte Lizenz erforderlich ist.
- "data_discount=1" fügt den Discount-Node hinzu
- "data_discount=0" entfernt den Discount-Node aus dem Feed
Sprachen
Abhängig von den gepflegten Sprachen in Ihrem Channel können Sie den Feed auch in anderen Sprachen erhalten. Hierzu wird der Parameter "set_language" verwendet. Als Wert wird hier ein zweistelliger String nach ISO 639-1 gesetzt. Nicht unterstützte Sprachen werden ignoriert. Bitte beachten Sie, dass alle Inhalte auch in den gewünschten Sprachen gepflegt sein müssen.
Ausgabe von Bildern und anderen statische Dateien
Bilder und andere statische Dateien werden im XML-Feed als "arbitrary binary data" ausgeliefert.
Für die Verwendung der Dateien gibt es einen eigenen Artikel
Best Practice
Aus Performancegründen möchten wir Sie bitten die Daten serverseitig abzurufen, zu verarbeiten und z. B. in einem Content-Management-System zu cachen.
Das Abrufen der Daten in Echtzeit oder das clientseitige parsen der Daten (bspw. mit JavaScript) ist nicht sinnvoll. Ein Abruf der Daten einmal am Tag ist in der Regel ausreichend.
Je nach Anzahl der Hotels/Pauschalen und Zusatzleistungen kann das XML sehr groß werden (>100MB).
Um ein schnell zu verarbeitendes Ergebnis zu erhalten, empfehlen wir zuerst eine Liste von Hotels ohne Daten abzufragen:
https://cst-client-hotel-blaue-linde.viomassl.com/xml.php?data_childrens=0&data_gallery=0&data_pension_types=0&data_roomtypes=0&data_roomtype_prices=0&data_rooms=0&data_rooms_alloc=0&data_seasons=0&data_programs=0&data_packages=0&data_info_texts=0&data_facts=0&data_discount=0
Anschließend kann man je Hotel die Hotel-Details gesondert abfragen. Hierzu übergibt man die Hotel-Id als Parameter (hotel=xxx):
https://cst-client-hotel-blaue-linde.viomassl.com/xml.php?hotel=3353&data_childrens=1&data_gallery=1&data_pension_types=1&data_roomtypes=1&data_roomtype_prices=1&data_rooms=1&data_rooms_alloc=1&data_seasons=1&data_programs=1&data_packages=1&data_info_texts=1&data_facts=1&data_discount=1
Sie erhalten ein schnelleres Ergebnis, wenn Sie die Daten, die Sie nicht benötigen durch die Filter ausschließen.