Zum Inhalt

OTA_HotelBookingRuleRQ

Methode zum Lesen von Restriktionen/ Buchungsregeln auf Zimmer- und Angebotsebene (RoomType/RatePlan Kombination) von Kurzurlaub.de.

Siehe auch Entwicklerhandbuch - Restrictionen Push API

LengthOfStay - Mindestaufenthalte MinLOS / MaxLOS

Normalerweise ignorieren wir LengthOfStay-Attribute, können sie aber bei Bedarf verarbeiten. Da wir auf der Basis von Angebote arbeiten, welche eine feste Laufzeit haben, sind diese Werte vorrangig durch das Angebot selbst bestimmt.

  • LengthOfStay (normalerweise SetMinLOS oder SetMaxLOS genannt) kann optional als minimumStay oder maximumStay gesendet werden

Restriktionen Close, CTA, CTD

Wir verwenden das Attribut Restriction im RestrictionStatus mit Open / Close bspw.

  • Master <RestrictionStatus Status="Close"/> oder <RestrictionStatus Status="Open"/>
  • Close to arrival - CTA <RestrictionStatus Status="Close" Restriction="Arrival"/>
  • Close to departure - CTD <RestrictionStatus Status="Close" Restriction="Departure"/>

Wir beschreiben den OTA_HotelBookingRuleRQ Request (RQ) und Response (RS) am Beispiel des Testhotels. Das Senden der Daten erfolgt immer POST Request.

OTA_HotelBookingRuleRQ - Anfrage per POST

Endpunkt für POST Request:

POST /ota/api/HotelBookingRule

Verwendete Parameter

Parameter für Authentifizierung und Hotel:

  • Source@AgentDutyCode - Agent-ID: 1
  • Source@HotelCode - Hotel-ID: 1234

Parameter für Verfügbarkeiten:

Erwartet wird eine Angebots-ID und Zimmer-ID und ein Zeitraum (Datum von/bis) im DateFormat als StatusApplication

  • StatusApplication@Start - Datum (DateFormat YYYY-MM-DD)
  • StatusApplication@End - Datum (DateFormat YYYY-MM-DD)
  • StatusApplication@InvTypeCode - Zimmer-ID
  • StatusApplication@RatePlanCode - Angebots-ID

Parameter für Restriktionen:

  • RuleCategory@Name - Restriktionen (Werte: Arrival, Departure, Master, MinLOS, MaxLOS)

Validierung eingehender Daten

Validierung der eingehenden Parameter für Datumsbereich (Datum von/bis):

  • eine gültige DatumsPeriode (@Start - @End)
  • ein gültiges DatumsFormat (YYYY-MM-DD)
  • nicht in der Vergangenheit
  • nicht mehr als 2 Jahre im Vorraus
  • nicht mehr als 3 Monate als zusammenhängender Zeitraum

Validierung sonstiger Parameter

  • Hotel-ID gültig und Hotel ist online / aktiv
  • Zimmer-ID gültig und Zimmer ist online / aktiv
  • Angebots-ID gültig und Angebot ist online / aktiv

Hinweis:

Die vom OTA-Partner gesendeten Daten werden nur für Zimmer akzeptiert, die *aktiv und online* sind, alternativ werden Warnungen als Antwort gesendet.

Generell werden Zeilen mit Regeln einzeln betrachtet, d.h. ein Fehler im RoomTypeCode oder im Datumsformat, Datumsbreich wird nur für diese eine Zeile als Warnung gesendet. Alle weiteren Zeilen werden unabhängig davon bearbeitet.

Beispiel für Anfrage

Beispiel OTA_HotelBookingRuleRQ Request

<?xml version="1.0" encoding="utf-8"?>
<OTA_HotelBookingRuleNotifRQ Version="1.0" xmlns:ota="http://www.opentravel.org/OTA/2003/05"
                             TimeStamp="2023-10-25T16:34:23" Target="Production" PrimaryLangID="de">
    <POS>
        <Source AgentDutyCode="1" HotelCode="1234">
            <RequestorID ID="1234" Name="TestHotel" MessagePassword="12swdedas"/>
        </Source>
    </POS>
    <RuleMessage HotelCode="1234">
        <StatusApplication Start="2024-05-17" End="2024-05-22" RatePlanCode="TEST-BAR-2N-MAI" RatePlanID="352547" InvTypeCode="16712"/>
        <RuleCategories>
            <RuleCategory Name="Arrival"/>
            <RuleCategory Name="Departure"/>
            <RuleCategory Name="Master"/>
            <RuleCategory Name="MinLOS"/>
            <RuleCategory Name="MaxLOS"/>
        </RuleCategories>
    </RuleMessage>
</RuleMessages>
</OTA_HotelBookingRuleRQ>

OTA_HotelBookingRuleRS - Versionen der Response

Normalerweise wird ein <Success/> als Antwort gesendet oder entsprechende Fehlermeldungen (keine Warnungen)

Beispiel OTA_HotelBookingRuleRS Response - nur eine Restriktion angefragt

<?xml version="1.0" encoding="utf-8"?>
<OTA_HotelBookingRuleRS xmlns="http://www.opentravel.org/OTA/2003/05"
                        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                        EchoToken="aecb76dd4cea4ea9d72b4b3d17443139" PrimaryLangID="de"
                        TimeStamp="2024-07-11T13:00:01+02:00" Target="Production" Version="2.051">
    <Success/>
    <RuleMessage HotelCode="1234">
        <StatusApplication RatePlanCode="KU-TEST" InvTypeCode="15815"/>
        <BookingRules>
            <BookingRule Start="2024-07-17" End="2024-07-22">
                <RestrictionStatus Restriction="Master" Status="Open"/>
            </BookingRule>
        </BookingRules>
    </RuleMessage>
</OTA_HotelBookingRuleRS>
Beispiel OTA_HotelBookingRuleRS Response - alle Restriktionen angefragt

Für jede Restriktion wir eine BookingRule Zeile mit Zeitraum und Wert ausgebenen.

<OTA_HotelBookingRuleRS xmlns="http://www.opentravel.org/OTA/2003/05"
                                xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                                EchoToken="5ac5c533f86a902a9b0016be8997c0cb" PrimaryLangID="de"
                                TimeStamp="2024-07-11T13:02:52+02:00" Target="Production" Version="2.051">
            <Success/>
            <RuleMessage HotelCode="2805">
                <StatusApplication RatePlanCode="KU-TEST" InvTypeCode="15815"/>
                <BookingRules>
                    <BookingRule Start="2024-07-17" End="2024-07-22">
                        <RestrictionStatus Restriction="Arrival" Status="Open"/>
                    </BookingRule>
                    <BookingRule Start="2024-07-17" End="2024-07-22">
                        <RestrictionStatus Restriction="Departure" Status="Open"/>
                    </BookingRule>
                    <BookingRule Start="2024-07-17" End="2024-07-22">
                        <RestrictionStatus Restriction="Master" Status="Open"/>
                    </BookingRule>
                    <BookingRule Start="2024-07-17" End="2024-07-22">
                        <RestrictionStatus Restriction="MinLOS" Status="Open"/>
                    </BookingRule>
                    <BookingRule Start="2024-07-17" End="2024-07-22">
                        <RestrictionStatus Restriction="MaxLOS" Status="Open"/>
                    </BookingRule>
                </BookingRules>
            </RuleMessage>
        </OTA_HotelBookingRuleRS>

Warnungen

Es werden keine Warungen gesendet, alle Ausgaben bspw. der Validieurng werden als Fehler gesendet

Fehlermeldungen

Wenn schwere Fehler bspw. in der Authentifizierung oder Validierung der Daten auftreten, senden wird diese in einer OTA_ErrorRS Response mit @ErrorCode und @ErrorMessage

Hier eine Liste gängiger Fehlermeldungen beim Senden von Verfügbarkeiten

ErrorCode ErrorMessage
210 HotelNotLinked - Hotel linked to another channel manager
211 HotelNotActivated - Hotel not found
104 InternalError - Empty HotelCode (HotelId) in accepted params (agentdutycode, hotelcode, ...)
220 RoomMappingError - Hotel does not have rooms created or configured
221 RoomMappingError - Hotel does not have rates created or configured
230 RoomMappingError - Invalid room code
232 RoomMappingError - Invalid rate code (bei Room/Rate Kombinationen)
240 DateRangeError - Invalid date range
448 DateRangeError - Invalid start date
448 InternalError - unknown internal error

Beispiel OTA_HotelBookingRuleRS Response mit Fehler

Variante 1: im Kontext der Anfrage mit OTA_HotelBookingRuleRS Response und <Errors>

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelBookingRuleRS xmlns="http://www.opentravel.org/OTA/2003/05"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                     EchoToken="eef8223c1e2468da575e2ce7d85eef9e" TimeStamp="2024-07-10T10:45:49+02:00"
                     Version="2.064">
    <Errors>
        <Error Code="448" Type="12">Invalid start date (2024-05-23) is in past</Error>
    </Errors>
</OTA_HotelBookingRuleRS>

Variante 2: Alternativ als OTA_ErrorRS Response und Attributen ErrorCode und ErrorMessage

<?xml version="1.0" encoding="UTF-8"?>
<OTA_ErrorRS xmlns="http://www.opentravel.org/OTA/2003/05" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             EchoToken="eef8223c1e2468da575e2ce7d85eef9e" PrimaryLangID="de" TimeStamp="2022-03-08T15:57:43+01:00"
             Target="Production" Version="2.064" 
             ErrorCode="448"
             ErrorMessage="Invalid start date (2024-05-23) is in past"/>