Zum Inhalt

OTA_HotelInvCountRQ

Methode zum Lesen von Verfügbarkeiten auf Zimmerebene (RoomType only) und optional auch auf Angebotsebene (RoomType/RatePlan Kombination) von Kurzurlaub.de.

Siehe auch Entwicklerhandbuch - Verfügbarkeiten Push API

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

Je nach gesendeten Parametern gibt es 2 unterstützte Varianten

  1. Verfügbarkeiten auf Zimmerebene
  2. Verfügbarkeiten auf Zimmer- und Angebotsebene in Kombination (nach Absprache mit dem Support)

OTA_HotelInvCountRQ - Anfrage per POST

Endpunkt für POST Request:

POST /ota/api/HotelInvCount

Verwendete Parameter

Parameter für Authentifizierung und Hotel:

  • @AgentDutyCode - Agent-ID: 1
  • HotelRef@HotelCode - Hotel-ID: 4

Parameter für Verfügbarkeiten:

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

  • DateRange@Start - Datum (DateFormat YYYY-MM-DD)
  • DateRange@End - Datum (DateFormat YYYY-MM-DD)
  • RoomTypeCandidate@RoomTypeCode - Zimmer-ID

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

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 Verfügbarkeiten 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_HotelInvCountRQ Request

<OTA_HotelInvCountRQ TimeStamp="2024-03-22T10:52:54+01:00" Version="1.000">
    <HotelInvCountRequests>
        <HotelInvCountRequest>
            <DateRange Start="2024-07-23" End="2024-07-25"/>
            <RoomTypeCandidates>
                <RoomTypeCandidate RoomTypeCode="2625"/>
                <RoomTypeCandidate RoomTypeCode="16712"/>
                <RoomTypeCandidate RoomTypeCode="15816"/>
                <RoomTypeCandidate RoomTypeCode="DZ1"/>
            </RoomTypeCandidates>
            <HotelRef HotelCode="4"/>
        </HotelInvCountRequest>
    </HotelInvCountRequests>
</OTA_HotelInvCountRQ>

Alernative als SOAP Request mit auth im Header

<?xml version="1.0" encoding="UTF-8"?>
<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
                   xmlns:ns1="http://www.opentravel.org/OTA/2003/05"
                   xmlns:ns2="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd">
    <SOAP-ENV:Header>
        <ns2:Security SOAP-ENV:mustUnderstand="1">
            <ns2:UsernameToken>
                <ns2:Username>my-test-user</ns2:Username>
                <ns2:Password>abcd1234</ns2:Password>
            </ns2:UsernameToken>
        </ns2:Security>
    </SOAP-ENV:Header>
    <SOAP-ENV:Body>
        <ns1:OTA_HotelInvCountRQ TimeStamp="2024-03-22T10:52:54+01:00" Version="1.000">
            <ns1:HotelInvCountRequests>
                <ns1:HotelInvCountRequest>
                    <ns1:DateRange Start="2024-07-23" End="2024-07-25"/>
                    <ns1:RoomTypeCandidates>
                        <ns1:RoomTypeCandidate RoomTypeCode="2625"/>
                        <ns1:RoomTypeCandidate RoomTypeCode="15815"/>
                    </ns1:RoomTypeCandidates>
                    <ns1:HotelRef HotelCode="4"/>
                </ns1:HotelInvCountRequest>
            </ns1:HotelInvCountRequests>
        </ns1:OTA_HotelInvCountRQ>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

OTA_HotelInvCountRS - Versionen der Response

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

Beispiel OTA_HotelInvCountRS Response

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelInvCountRS xmlns="http://www.opentravel.org/OTA/2003/05"
                     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                     EchoToken="aeefeef224d939e19a6a6d1252d639eb" TimeStamp="2024-07-10T12:49:18+02:00"
                     Version="2.064">
    <Success/>
    <Inventories HotelCode="2805">
        <Inventory>
            <StatusApplicationControl Start="2024-07-23" End="2024-07-25" InvTypeCode="2625" RatePlanCode="KU-TEST" RatePlanId="27173" IsRoom="true"/>
            <InvCounts>
                <InvCount CountType="2" Count="0"/>
            </InvCounts>
        </Inventory>
        <Inventory>
            <StatusApplicationControl Start="2024-07-23" End="2024-07-24" InvTypeCode="15815" RatePlanCode="KU-TEST" RatePlanId="27173" IsRoom="true"/>
            <InvCounts>
                <InvCount CountType="2" Count="4"/>
            </InvCounts>
        </Inventory>
        <Inventory>
            <StatusApplicationControl Start="2024-07-24" End="2024-07-25" InvTypeCode="15815" RatePlanCode="KU-TEST" RatePlanId="27173" IsRoom="true"/>
            <InvCounts>
                <InvCount CountType="2" Count="2"/>
            </InvCounts>
        </Inventory>
    </Inventories>
</OTA_HotelInvCountRS>

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_HotelInvCountRS Response mit Fehler

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

<?xml version="1.0" encoding="UTF-8"?>
<OTA_HotelInvCountRS 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_HotelInvCountRS>

Variant 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"/>