OpenAPI-Referenz
Käufer-API v1: Ablauf, Regeln, Fehlerkatalog und Beispiele – jedes Beispiel läuft bei jedem Build als Test.
TourAPI Kaeufer-API · 1.0.0-entwurf
Verfuegbarkeit, Preis, Suche, Buchung, Buchungsinfo und Storno fuer Abnehmer eines Veranstalters.
Maschinenlesbarer Vertrag zum API-Handbuch (HANDBUCH.md, liegt neben dieser Datei). Das Handbuch erklaert Ablauf, Regeln, Fehlerkatalog und Beispiele; jedes Beispiel dort laeuft bei jedem Build als Test gegen eine echte Instanz.
- Alle Betraege sind ganze Cent in der Vertragswaehrung des Hotels (keine Umrechnung).
- Datumsfelder sind Kalendertage JJJJ-MM-TT; ein Aufenthalt ist [checkIn, checkOut).
- Stichtag ist das Serverdatum (Europe/Berlin); das Feld now wird ignoriert.
- Kompatibilitaet innerhalb v1 nur additiv (neue optionale Felder, neue Endpunkte, neue ERR_*-Codes); unbekannte Antwortfelder ignorieren. Details: Handbuch Abschnitt 1.9.
- Authentifizierung
X-Api-Key(header)
API-Key aus dem Zugangspaket; bestimmt Veranstalter und Kundengruppe. Test-Keys (tk_test_...) lesen wie ihr Live-Key und buchen nur in der Sandbox; jede Antwort auf einen angenommenen Key traegt den Kopf X-TourAPI-Mode (test|live), Handbuch Abschnitt 11.
- Server
{baseUrl}– Basis-URL aus dem Zugangspaket{baseUrl}- Basis-URL aus dem Zugangspaket
Gruppen
- Auskunft
- Verfuegbarkeit und Preis (BA)
- Buchung
- Buchung (B), Buchungsinfo, Storno (S)
- Betrieb
- Gesundheit des Knotens
- Lieferung
- EDF-Lieferung (Cache-Export) fuer Abnehmer mit Export-Recht
- Inhalte
- Hotelinhalte (Content-API) fuer Abnehmer mit Inhalts-Recht (Handbuch Abschnitt 12)
Maschinenlesbar: openapi.yaml
Endpunkte
POST /v1/pricePOST /v1/pricesGET /v1/destinationsPOST /v1/searchPOST /v1/search/openPOST /v1/search/open/datesGET /v1/limitsPOST /v1/bookGET /v1/bookingPOST /v1/cancelGET /v1/healthGET /v1/export/edf/fullGET /v1/export/edf/changesPOST /v1/export/edf/ackGET /v1/content/hotelsGET /v1/content/hotels/{code}GET /v1/content/changesGET /v1/content/catalog
POST /v1/price
Preis fuer ein Zimmer, eine Verpflegung, eine Belegung
Ohne room wird das guenstigste VERFUEGBARE Zimmer bepreist, das die Belegung zulaesst und das board anbietet (ist keines verfuegbar, das guenstigste davon mit availability.available=false); room in der Antwort nennt es. Nicht angebotenes board -> 422 ERR_BOARD_NOT_OFFERED.
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited | price_timeout)
Anfrage
application/json PriceRequestAntworten
- Status
- 200
- Beschreibung
- Preis
- Inhalt
application/jsonPriceResponse- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).
- Status
- 400
- Beschreibung
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Veranstalter des Keys gesperrt (ERR_TENANT_SUSPENDED), Kundengruppe des Keys inaktiv (ERR_KEY_GROUP_INACTIVE) oder X-TourAPI-Require-Mode passt nicht zum Key (ERR_MODE_MISMATCH). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 404
- Beschreibung
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 503
- Beschreibung
- Verkauf auf dem Knoten aus (ERR_BOOKING_DISABLED), Buchung/Storno wegen gleichzeitiger Vorgaenge am selben Hotel nicht durchgekommen (ERR_BOOKING_BUSY, mit Retry-After; mit demselben idemKey wiederholen), Suche zu lang (ERR_SEARCH_TIMEOUT) oder Preisrechnung zu lang (ERR_PRICE_TIMEOUT, /v1/price ohne room und /v1/prices, auch mit room und boards; /v1/price mit room hat keine eigene Frist). Nie eine Teilantwort; bei Zeitlimit eingrenzen, dann wiederholen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Nur bei ERR_BOOKING_BUSY - frueheste Wiederholung in ganzen Sekunden
POST /v1/prices
Preise aller Verpflegungen (und Zimmer) in einer Antwort
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited | price_timeout)
Anfrage
application/json PricesRequestAntworten
- Status
- 200
- Beschreibung
- Preise je Zimmer und Verpflegung
- Inhalt
application/jsonPricesResponse- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).
- Status
- 400
- Beschreibung
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Veranstalter des Keys gesperrt (ERR_TENANT_SUSPENDED), Kundengruppe des Keys inaktiv (ERR_KEY_GROUP_INACTIVE) oder X-TourAPI-Require-Mode passt nicht zum Key (ERR_MODE_MISMATCH). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 404
- Beschreibung
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 503
- Beschreibung
- Verkauf auf dem Knoten aus (ERR_BOOKING_DISABLED), Buchung/Storno wegen gleichzeitiger Vorgaenge am selben Hotel nicht durchgekommen (ERR_BOOKING_BUSY, mit Retry-After; mit demselben idemKey wiederholen), Suche zu lang (ERR_SEARCH_TIMEOUT) oder Preisrechnung zu lang (ERR_PRICE_TIMEOUT, /v1/price ohne room und /v1/prices, auch mit room und boards; /v1/price mit room hat keine eigene Frist). Nie eine Teilantwort; bei Zeitlimit eingrenzen, dann wiederholen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Nur bei ERR_BOOKING_BUSY - frueheste Wiederholung in ganzen Sekunden
GET /v1/destinations
Gueltige destination-Codes des Keys
Zielgebiet- und Flughafen-Codes der Hotels dieses Keys (Hotels des Veranstalters; beim Key einer Kundengruppe mit Zuteilung nur Hotels mit Zuteilung), aufsteigend, je Code einmal - genau die Codes, auf die /v1/search filtern kann (Handbuch Abschnitt 4.5). Keine Parameter.
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). An diesem Endpunkt wirkt nur rate_limited. Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited)
Antworten
- Status
- 200
- Beschreibung
- Ziel-Codes
- Inhalt
application/jsonDestinationsResponse- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Veranstalter des Keys gesperrt (ERR_TENANT_SUSPENDED), Kundengruppe des Keys inaktiv (ERR_KEY_GROUP_INACTIVE) oder X-TourAPI-Require-Mode passt nicht zum Key (ERR_MODE_MISMATCH). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
POST /v1/search
Buchbare Hotels mit Ab-Preis suchen
Seitenweise (pageSize, Standard 50, hoechstens 100) in Hotel-Code-Reihenfolge; Preis-Sortierung je Seite. Weitere Seiten mit cursor = nextCursor der Vorseite (Handbuch Abschnitt 4.3). destination ohne Hotel fuer diesen Key (erste Seite, ohne cursor) -> 422 ERR_UNKNOWN_DESTINATION (gueltige Codes: GET /v1/destinations).
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited | search_busy)
Anfrage
application/json SearchRequestAntworten
- Status
- 200
- Beschreibung
- Treffer und Diagnose
- Inhalt
application/jsonSearchResponse- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).
- Status
- 400
- Beschreibung
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Veranstalter des Keys gesperrt (ERR_TENANT_SUSPENDED), Kundengruppe des Keys inaktiv (ERR_KEY_GROUP_INACTIVE) oder X-TourAPI-Require-Mode passt nicht zum Key (ERR_MODE_MISMATCH). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 503
- Beschreibung
- Verkauf auf dem Knoten aus (ERR_BOOKING_DISABLED), Buchung/Storno wegen gleichzeitiger Vorgaenge am selben Hotel nicht durchgekommen (ERR_BOOKING_BUSY, mit Retry-After; mit demselben idemKey wiederholen), Suche zu lang (ERR_SEARCH_TIMEOUT) oder Preisrechnung zu lang (ERR_PRICE_TIMEOUT, /v1/price ohne room und /v1/prices, auch mit room und boards; /v1/price mit room hat keine eigene Frist). Nie eine Teilantwort; bei Zeitlimit eingrenzen, dann wiederholen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Nur bei ERR_BOOKING_BUSY - frueheste Wiederholung in ganzen Sekunden
POST /v1/search/open
Offene Suche - bestes Angebot je Hotel ueber Anreisefenster und Dauer-Spanne
Ohne Hotelcode und festen Termin: je Hotel das beste Angebot (Preis exakt wie /v1/price mit demselben Tupel, Reihenfolge bewiesen), global sortiert, Seiten per cursor = nextCursor (Handbuch Abschnitt 4a). Recht je Key (sonst 403 ERR_OPEN_SEARCH_NOT_ALLOWED), Grenzen aus dem Suchprofil des Keys (422 am Feld). Jedes unbekannte Feld -> 422 ERR_UNKNOWN_FIELD. Unter Last wird nur die Seite kuerzer (coverage.complete=false), nie der Preis ungenauer; kann die Suche ein Ergebnis nicht beweisen, 500 ERR_INTERNAL.
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
Anfrage
application/json OpenSearchRequestAntworten
- Status
- 200
- Beschreibung
- Treffer, Abdeckung, Stand
- Inhalt
application/jsonOpenSearchResponse- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).
- Status
- 400
- Beschreibung
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Kein Recht fuer die offene Suche (ERR_OPEN_SEARCH_NOT_ALLOWED), Ziel oder Hotel ausserhalb der erlaubten Ziele (ERR_DESTINATION_NOT_ALLOWED) oder wie bei allen Endpunkten (Forbidden)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 404
- Beschreibung
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 500
- Beschreibung
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 503
- Beschreibung
- Verkauf auf dem Knoten aus (ERR_BOOKING_DISABLED), Buchung/Storno wegen gleichzeitiger Vorgaenge am selben Hotel nicht durchgekommen (ERR_BOOKING_BUSY, mit Retry-After; mit demselben idemKey wiederholen), Suche zu lang (ERR_SEARCH_TIMEOUT) oder Preisrechnung zu lang (ERR_PRICE_TIMEOUT, /v1/price ohne room und /v1/prices, auch mit room und boards; /v1/price mit room hat keine eigene Frist). Nie eine Teilantwort; bei Zeitlimit eingrenzen, dann wiederholen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Nur bei ERR_BOOKING_BUSY - frueheste Wiederholung in ganzen Sekunden
POST /v1/search/open/dates
Termin-Matrix eines Hotels - Anreise x Dauer ueber dasselbe Fenster wie die offene Suche
Stufe 2 der offenen Suche (Handbuch Abschnitt 4b): ein Hotel, Zellen dicht in der Ordnung checkIn, nights (mit perBoard zusaetzlich je Verpflegung). Zelle offer = guenstigstes verkaufbares Zimmer/Verpflegung, Preis exakt wie /v1/price mit diesem Tupel; none mit reason; unchecked nur, wenn das Zeitbudget ablief (nie als none). Das beste Angebot der offenen Suche ist bei gleichem Filter und Stand die erste offer-Zelle mit minimalem Kriterium. Recht und Grenzen aus dem Suchprofil des Keys (Fenster matrixMaxWindowDays, Zellen matrixMaxCells). Jedes unbekannte Feld -> 422 ERR_UNKNOWN_FIELD; nicht beweisbar -> 500 ERR_INTERNAL.
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
Anfrage
application/json OpenDatesRequestAntworten
- Status
- 200
- Beschreibung
- Zellen, Abdeckung, Stand
- Inhalt
application/jsonOpenDatesResponse- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).
- Status
- 400
- Beschreibung
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Kein Recht fuer die offene Suche (ERR_OPEN_SEARCH_NOT_ALLOWED), Hotel ausserhalb der erlaubten Ziele (ERR_DESTINATION_NOT_ALLOWED) oder wie bei allen Endpunkten (Forbidden)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 404
- Beschreibung
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 500
- Beschreibung
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 503
- Beschreibung
- Verkauf auf dem Knoten aus (ERR_BOOKING_DISABLED), Buchung/Storno wegen gleichzeitiger Vorgaenge am selben Hotel nicht durchgekommen (ERR_BOOKING_BUSY, mit Retry-After; mit demselben idemKey wiederholen), Suche zu lang (ERR_SEARCH_TIMEOUT) oder Preisrechnung zu lang (ERR_PRICE_TIMEOUT, /v1/price ohne room und /v1/prices, auch mit room und boards; /v1/price mit room hat keine eigene Frist). Nie eine Teilantwort; bei Zeitlimit eingrenzen, dann wiederholen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Nur bei ERR_BOOKING_BUSY - frueheste Wiederholung in ganzen Sekunden
GET /v1/limits
Wirksame Grenzen des eigenen Keys (Takt, Export-Recht, Inhalts-Zugang, Suchprofil)
Das effektive Suchprofil des Keys (Minimum aus Plattform-Deckel, Veranstalter-Obergrenze und Key-Profil) - dieselben Werte, die /v1/search/open und /v1/search/open/dates anwenden; ohne Recht nur openSearch.allowed=false. Keine Interna (weder Ebene noch Grund); Ziele nur im Bestand des Keys. Dazu der Takt aller Anfragen des Keys, das Export-Recht und der Zugang zur Content-API (content.allowed, dieselbe Regel wie /v1/content/*; Handbuch Abschnitt 4c). Keine Parameter (jeder -> 422 ERR_UNKNOWN_FIELD).
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). An diesem Endpunkt wirkt nur rate_limited. Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited)
Antworten
- Status
- 200
- Beschreibung
- Grenzen des Keys
- Inhalt
application/jsonLimitsResponse- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Veranstalter des Keys gesperrt (ERR_TENANT_SUSPENDED), Kundengruppe des Keys inaktiv (ERR_KEY_GROUP_INACTIVE) oder X-TourAPI-Require-Mode passt nicht zum Key (ERR_MODE_MISMATCH). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
POST /v1/book
Buchen (idempotent ueber idemKey)
Lehnt jedes unbekannte Feld ab (ERR_UNKNOWN_FIELD). Ein schon verbuchter idemKey wird vor Stichtag, Grenzen und priceCheck beantwortet (alreadyBooked), nur ein neuer idemKey durchlaeuft diese Pruefungen.
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited | booking_busy | price_drift | sold_out)
Anfrage
application/json BookRequestAntworten
- Status
- 200
- Beschreibung
- Gebucht oder idempotente Wiederholung (alreadyBooked)
- Inhalt
application/jsonBookResponse- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).
- Status
- 400
- Beschreibung
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Veranstalter des Keys gesperrt (ERR_TENANT_SUSPENDED), Kundengruppe des Keys inaktiv (ERR_KEY_GROUP_INACTIVE) oder X-TourAPI-Require-Mode passt nicht zum Key (ERR_MODE_MISMATCH). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 404
- Beschreibung
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 409
- Beschreibung
- Preis geaendert (ERR_PRICE_DRIFT) oder idemKey-Konflikt (ERR_IDEMPOTENCY_MISMATCH, ERR_IDEM_KEY_RELEASED)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 500
- Beschreibung
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 503
- Beschreibung
- Verkauf auf dem Knoten aus (ERR_BOOKING_DISABLED), Buchung/Storno wegen gleichzeitiger Vorgaenge am selben Hotel nicht durchgekommen (ERR_BOOKING_BUSY, mit Retry-After; mit demselben idemKey wiederholen), Suche zu lang (ERR_SEARCH_TIMEOUT) oder Preisrechnung zu lang (ERR_PRICE_TIMEOUT, /v1/price ohne room und /v1/prices, auch mit room und boards; /v1/price mit room hat keine eigene Frist). Nie eine Teilantwort; bei Zeitlimit eingrenzen, dann wiederholen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Nur bei ERR_BOOKING_BUSY - frueheste Wiederholung in ganzen Sekunden
GET /v1/booking
Buchung ueber TourAPI-Referenz oder eigene Referenz lesen
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). An diesem Endpunkt wirkt nur rate_limited. Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited)
- Name
ref- Ort
- query
- Pflicht
- ja
- Typ
string- Beschreibung
- Buchungsreferenz (TA-...) oder die eigene reference aus der Buchung. Die TourAPI-Referenz gewinnt; passt die eigene reference zu mehreren Buchungen: 409.
Antworten
- Status
- 200
- Beschreibung
- Buchung
- Inhalt
application/jsonBooking- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).
- Status
- 400
- Beschreibung
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Veranstalter des Keys gesperrt (ERR_TENANT_SUSPENDED), Kundengruppe des Keys inaktiv (ERR_KEY_GROUP_INACTIVE) oder X-TourAPI-Require-Mode passt nicht zum Key (ERR_MODE_MISMATCH). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 404
- Beschreibung
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 409
- Beschreibung
- Die eigene reference passt zu mehreren Buchungen (ERR_REFERENCE_AMBIGUOUS); message nennt die TourAPI-Referenzen. Mit der TourAPI-Referenz (TA-...) lesen.
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 500
- Beschreibung
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 503
- Beschreibung
- Verkauf auf dem Knoten aus (ERR_BOOKING_DISABLED), Buchung/Storno wegen gleichzeitiger Vorgaenge am selben Hotel nicht durchgekommen (ERR_BOOKING_BUSY, mit Retry-After; mit demselben idemKey wiederholen), Suche zu lang (ERR_SEARCH_TIMEOUT) oder Preisrechnung zu lang (ERR_PRICE_TIMEOUT, /v1/price ohne room und /v1/prices, auch mit room und boards; /v1/price mit room hat keine eigene Frist). Nie eine Teilantwort; bei Zeitlimit eingrenzen, dann wiederholen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Nur bei ERR_BOOKING_BUSY - frueheste Wiederholung in ganzen Sekunden
POST /v1/cancel
Stornieren (idempotent)
Lehnt jedes unbekannte Feld ab (ERR_UNKNOWN_FIELD). Der Storno wird beim Veranstalter mit Zeitpunkt und key_id des Keys protokolliert (Wiederholung ohne zweiten Eintrag).
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited | booking_busy)
Anfrage
application/json CancelRequestAntworten
- Status
- 200
- Beschreibung
- Storniert oder war schon storniert (alreadyReleased)
- Inhalt
application/jsonCancelResponse- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).
- Status
- 400
- Beschreibung
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Veranstalter des Keys gesperrt (ERR_TENANT_SUSPENDED), Kundengruppe des Keys inaktiv (ERR_KEY_GROUP_INACTIVE) oder X-TourAPI-Require-Mode passt nicht zum Key (ERR_MODE_MISMATCH). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 404
- Beschreibung
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 500
- Beschreibung
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 503
- Beschreibung
- Verkauf auf dem Knoten aus (ERR_BOOKING_DISABLED), Buchung/Storno wegen gleichzeitiger Vorgaenge am selben Hotel nicht durchgekommen (ERR_BOOKING_BUSY, mit Retry-After; mit demselben idemKey wiederholen), Suche zu lang (ERR_SEARCH_TIMEOUT) oder Preisrechnung zu lang (ERR_PRICE_TIMEOUT, /v1/price ohne room und /v1/prices, auch mit room und boards; /v1/price mit room hat keine eigene Frist). Nie eine Teilantwort; bei Zeitlimit eingrenzen, dann wiederholen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Nur bei ERR_BOOKING_BUSY - frueheste Wiederholung in ganzen Sekunden
GET /v1/health
Gesundheit des Knotens (ohne Key)
200 nur, wenn die Lese-Sicht geladen und der letzte Abgleich mit der Datenbank frisch ist; sonst 503 mit Grund. Keine Mandanten- oder Bestandsdaten. Mehr als 10 Aufrufe je Sekunde (Burst 50) von einer Absender-IP werden verzoegert beantwortet (hoechstens 1 s).
Ohne API-Key erreichbar.
Antworten
- Status
- 200
- Beschreibung
- gesund (status ok)
- Inhalt
application/jsonHealth- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 503
- Beschreibung
- nicht gesund (status degraded oder down, reason nennt den Grund)
- Inhalt
application/jsonHealth- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
GET /v1/export/edf/full
EDF-Lieferung, Vollstand zum aktuellen Stand (Zip, Seitenkette)
Zuschnitt nur ueber den Key (Veranstalter, Kundengruppe), kein Parameter dafuer. Braucht das Export-Recht am Key. Ohne epoch/since/until beginnt eine Kette (hoechstens einmal je Stunde und Key; 400, 422 und 503 ERR_EXPORT_NOT_READY zaehlen nicht, Handbuch 10.3) - passt der Vollstand auf eine Seite (10.000 Dateien, 1 GiB entpackt, max_bytes), ist sie der ganze Vollstand (more false); sonst traegt sie more true und den Kettenschluessel in X-Export-Until. Folgeseiten mit epoch, since (to der Vorseite) und until (X-Export-Until der Vorseite) laufen im Seiten-Takt; nach kurzem Fehler dieselbe Folgeseite wiederholen statt neu beginnen. Angewendet wird am Kettenende. Scheitert das Paket nach dem ersten Byte, bricht der Server die Verbindung ab (Transportfehler); jedes Paket vor dem Anwenden gegen das Manifest pruefen (Dateien vollstaendig, bytes, sha256). Das Zip enthaelt manifest.json (Schema ExportManifest) und je Hotel eine Preis- und eine Allotment-Datei (Handbuch Abschnitt 10).
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). An diesem Endpunkt wirkt nur rate_limited. Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited)
- Name
epoch- Ort
- query
- Pflicht
- nein
- Typ
string- Beschreibung
- nur Folgeseiten - epoch der ersten Seite
- Name
since- Ort
- query
- Pflicht
- nein
- Typ
string- Beschreibung
- nur Folgeseiten - to der Vorseite (to_seq bzw. to_seq:to_after) (pattern ^[1-9][0-9]*(:(hotel|allotment)/[A-Za-z0-9._-]{1,64})?$)
- Name
until- Ort
- query
- Pflicht
- nein
- Typ
string- Beschreibung
- nur Folgeseiten - Kettenschluessel (X-Export-Until der Vorseite, unveraendert). Versiegelt, gebunden an Key, epoch und genau den Stand since, 15 min gueltig nach der letzten Seite; sonst 400. (pattern ^f1\.[A-Za-z0-9_-]+$)
- Name
max_bytes- Ort
- query
- Pflicht
- nein
- Typ
integer- Beschreibung
- Seitengroesse in Bytes (mindestens eine Datei je Seite, mindestens 65536); ohne = nur die festen Grenzen (10.000 Dateien, 1 GiB entpackt) (minimum 65536)
Antworten
- Status
- 200
- Beschreibung
- Zip mit manifest.json (Schema ExportManifest) als erstem Eintrag, danach die Dateien in Manifest-Reihenfolge. Jede Datei hat sha256 und Laenge im Manifest; ganz oder gar nicht anwenden.
- Inhalt
application/zipstring– Zip-Container; contentSchema beschreibt dessen ersten Eintrag manifest.json (ExportManifest)- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).X-Export-Epoch– Aufbau des Feeds (ULID); wechselt nur bei Neuaufbau (dann 409)X-Export-Seq– letzter vollstaendiger Stand dieser Antwort; endet die Seite mitten in einem Stand (to_after), der Stand davor (erste full-Seiten 0) - massgeblich ist to_seq im ManifestX-Export-From– Stand, ab dem geliefert wurde (0 bei der ersten Seite eines full)X-Export-More– true = weitere Seiten der Kette folgenX-Export-Until– Kettenschluessel (bei jedem changes-Paket, bei einer full-Seite nur mit more true), versiegelt und undurchsichtig; unveraendert als until der Folgeseite schicken
- Status
- 400
- Beschreibung
- Stand-Parameter fehlt oder unlesbar (ERR_EXPORT_BAD_CURSOR) bzw. Body/Query unlesbar (ERR_BAD_REQUEST)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Key ohne Export-Recht (ERR_EXPORT_NOT_ALLOWED), Veranstalter gesperrt (ERR_TENANT_SUSPENDED) oder Kundengruppe inaktiv (ERR_KEY_GROUP_INACTIVE)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 409
- Beschreibung
- epoch passt nicht oder Stand (since, until, seq der Quittung) groesser als der aktuelle Lieferstand (ERR_EXPORT_EPOCH) - full abrufen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 410
- Beschreibung
- Stand aelter als die Aufbewahrung (ERR_EXPORT_CURSOR_EXPIRED) - full abrufen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 500
- Beschreibung
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 503
- Beschreibung
- Lieferung fuer diesen Key noch nicht gebaut, voruebergehend nicht aktuell (Lieferwerk mehr als 2 min hinterher) bzw. auf dem Knoten nicht eingerichtet (ERR_EXPORT_NOT_READY)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden
GET /v1/export/edf/changes
EDF-Lieferung, Aenderungen nach einem Stand (Zip, 204 wenn nichts neu)
Objekte und Tombstones nach since bis zum Ziel der Kette. Ohne until beginnt eine Kette (hoechstens einmal je Minute und Key; 400, 422 und 503 ERR_EXPORT_NOT_READY zaehlen nicht, 200, 204 und 409 zaehlen; die Takt-Pruefung kommt vor der epoch-Pruefung, Handbuch 10.3) und der Server gibt ihren versiegelten Kettenschluessel in X-Export-Until aus; nur Folgeseiten mit diesem Schluessel als until laufen im Seiten-Takt (nach kurzem Fehler dieselbe Folgeseite wiederholen). Angewendet wird am Kettenende (more false). Scheitert das Paket nach dem ersten Byte, bricht der Server die Verbindung ab; jedes Paket vor dem Anwenden gegen das Manifest pruefen.
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). An diesem Endpunkt wirkt nur rate_limited. Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited)
- Name
epoch- Ort
- query
- Pflicht
- ja
- Typ
string- Beschreibung
- epoch aus dem letzten Manifest
- Name
since- Ort
- query
- Pflicht
- ja
- Typ
string- Beschreibung
- to_seq des letzten Pakets, bei einer Seite mitten in einem Stand to_seq:to_after (pattern ^(0|[1-9][0-9]*)(:(hotel|allotment)/[A-Za-z0-9._-]{1,64})?$)
- Name
until- Ort
- query
- Pflicht
- nein
- Typ
string- Beschreibung
- Kettenschluessel (X-Export-Until der Vorseite, unveraendert), nur fuer Folgeseiten. Versiegelt, gebunden an Key und epoch, 15 min gueltig nach der letzten Seite; eine Zahl, ein fremder oder abgelaufener Schluessel -> 400. (pattern ^u1\.[A-Za-z0-9_-]+$)
- Name
max_bytes- Ort
- query
- Pflicht
- nein
- Typ
integer- Beschreibung
- Seitengroesse in Bytes (mindestens eine Datei je Seite, mindestens 65536); ohne = nur die festen Grenzen (10.000 Dateien, 1 GiB entpackt) (minimum 65536)
Antworten
- Status
- 200
- Beschreibung
- Zip mit manifest.json (Schema ExportManifest) als erstem Eintrag, danach die Dateien in Manifest-Reihenfolge. Jede Datei hat sha256 und Laenge im Manifest; ganz oder gar nicht anwenden.
- Inhalt
application/zipstring– Zip-Container; contentSchema beschreibt dessen ersten Eintrag manifest.json (ExportManifest)- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).X-Export-Epoch– Aufbau des Feeds (ULID); wechselt nur bei Neuaufbau (dann 409)X-Export-Seq– letzter vollstaendiger Stand dieser Antwort; endet die Seite mitten in einem Stand (to_after), der Stand davor (erste full-Seiten 0) - massgeblich ist to_seq im ManifestX-Export-From– Stand, ab dem geliefert wurde (0 bei der ersten Seite eines full)X-Export-More– true = weitere Seiten der Kette folgenX-Export-Until– Kettenschluessel (bei jedem changes-Paket, bei einer full-Seite nur mit more true), versiegelt und undurchsichtig; unveraendert als until der Folgeseite schicken
- Status
- 204
- Beschreibung
- nichts neu (since steht auf dem Ziel); ohne Kettenschluessel
- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).X-Export-Epoch– Aufbau des Feeds (ULID); wechselt nur bei Neuaufbau (dann 409)X-Export-Seq– letzter vollstaendiger Stand dieser Antwort; endet die Seite mitten in einem Stand (to_after), der Stand davor (erste full-Seiten 0) - massgeblich ist to_seq im ManifestX-Export-From– Stand, ab dem geliefert wurde (0 bei der ersten Seite eines full)X-Export-More– true = weitere Seiten der Kette folgen
- Status
- 400
- Beschreibung
- Stand-Parameter fehlt oder unlesbar (ERR_EXPORT_BAD_CURSOR) bzw. Body/Query unlesbar (ERR_BAD_REQUEST)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Key ohne Export-Recht (ERR_EXPORT_NOT_ALLOWED), Veranstalter gesperrt (ERR_TENANT_SUSPENDED) oder Kundengruppe inaktiv (ERR_KEY_GROUP_INACTIVE)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 409
- Beschreibung
- epoch passt nicht oder Stand (since, until, seq der Quittung) groesser als der aktuelle Lieferstand (ERR_EXPORT_EPOCH) - full abrufen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 410
- Beschreibung
- Stand aelter als die Aufbewahrung (ERR_EXPORT_CURSOR_EXPIRED) - full abrufen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 500
- Beschreibung
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 503
- Beschreibung
- Lieferung fuer diesen Key noch nicht gebaut, voruebergehend nicht aktuell (Lieferwerk mehr als 2 min hinterher) bzw. auf dem Knoten nicht eingerichtet (ERR_EXPORT_NOT_READY)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden
POST /v1/export/edf/ack
EDF-Lieferung, Stand als verarbeitet quittieren
Nur fuer die Ueberwachung beim Veranstalter; aendert nichts an der Lieferung. Lehnt jedes unbekannte Feld ab (ERR_UNKNOWN_FIELD).
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). An diesem Endpunkt wirkt nur rate_limited. Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited)
Anfrage
application/json ExportAckRequestAntworten
- Status
- 204
- Beschreibung
- quittiert
- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).X-Export-Epoch– Aufbau des Feeds (ULID); wechselt nur bei Neuaufbau (dann 409)X-Export-Seq– letzter vollstaendiger Stand dieser Antwort; endet die Seite mitten in einem Stand (to_after), der Stand davor (erste full-Seiten 0) - massgeblich ist to_seq im ManifestX-Export-From– Stand, ab dem geliefert wurde (0 bei der ersten Seite eines full)X-Export-More– true = weitere Seiten der Kette folgen
- Status
- 400
- Beschreibung
- Stand-Parameter fehlt oder unlesbar (ERR_EXPORT_BAD_CURSOR) bzw. Body/Query unlesbar (ERR_BAD_REQUEST)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Key ohne Export-Recht (ERR_EXPORT_NOT_ALLOWED), Veranstalter gesperrt (ERR_TENANT_SUSPENDED) oder Kundengruppe inaktiv (ERR_KEY_GROUP_INACTIVE)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 409
- Beschreibung
- epoch passt nicht oder Stand (since, until, seq der Quittung) groesser als der aktuelle Lieferstand (ERR_EXPORT_EPOCH) - full abrufen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 500
- Beschreibung
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 503
- Beschreibung
- Lieferung fuer diesen Key noch nicht gebaut, voruebergehend nicht aktuell (Lieferwerk mehr als 2 min hinterher) bzw. auf dem Knoten nicht eingerichtet (ERR_EXPORT_NOT_READY)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden
GET /v1/content/hotels
Verzeichnis der Hotels des Keys (Content-API)
Hotels des Keys aufsteigend nach code, seitenweise (dasselbe Universum wie /v1/destinations, unabhaengig von der Verfuegbarkeit). feedToken = Stand fuer /v1/content/changes (alle Seiten eines Durchlaufs tragen den Stand der ersten Seite); scopeHash wechselt mit der Hotelmenge des Keys (Handbuch 12.2). Unbekannte Parameter -> warnings.
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). An diesem Endpunkt wirkt nur rate_limited. Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited)
- Name
pageSize- Ort
- query
- Pflicht
- nein
- Typ
integer- Beschreibung
- Seitengroesse 1-1000 (Standard 500) (minimum 1; maximum 1000; default 500)
- Name
cursor- Ort
- query
- Pflicht
- nein
- Typ
string- Beschreibung
- nextCursor der Vorseite, unveraendert (versiegelt, an den Key gebunden) (pattern ^cv1\.[A-Za-z0-9_-]+$)
Antworten
- Status
- 200
- Beschreibung
- Eine Seite des Verzeichnisses
- Inhalt
application/jsonContentDirectoryResponse- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).
- Status
- 400
- Beschreibung
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Inhalte fuer den Veranstalter nicht freigeschaltet (auch Testumgebung auf dieser Installation nicht beliefert) oder Key ohne Inhalts-Recht (ERR_CONTENT_NOT_ALLOWED); ausserdem wie Forbidden (ERR_TENANT_SUSPENDED, ERR_KEY_GROUP_INACTIVE, ERR_MODE_MISMATCH)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 500
- Beschreibung
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 503
- Beschreibung
- Inhalte bzw. Bild-Adressen auf diesem Knoten nicht eingerichtet (ERR_CONTENT_NOT_READY)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden
GET /v1/content/hotels/{code}
Inhalt eines Hotels (Content-API)
Stamm, Lage, Kategorien, Fakten, sichtbare Texte, fertige sichtbare Bilder und Ausstattung eines Hotels des Keys. Nie Kontaktdaten. Ohne lang alle Inhaltssprachen ohne Rueckfall; mit lang je Texttyp genau ein Eintrag je Sprache, fehlend ueber die Rueckfallkette (Standardsprache des Veranstalters, dann en) mit fallbackFrom (Handbuch 12.3). ETag; mit If-None-Match 304 ohne Koerper.
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). An diesem Endpunkt wirkt nur rate_limited. Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited)
- Name
code- Ort
- path
- Pflicht
- ja
- Typ
string- Beschreibung
- Hotel-Code aus dem Verzeichnis
- Name
lang- Ort
- query
- Pflicht
- nein
- Typ
string- Beschreibung
- 1-5 Sprachen (ISO 639-1, klein), kommagetrennt, je eine Inhaltssprache des Veranstalters (pattern ^[a-z]{2}(,[a-z]{2}){0,4}$)
- Name
If-None-Match- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- ETag einer frueheren Antwort
Antworten
- Status
- 200
- Beschreibung
- Inhalt des Hotels
- Inhalt
application/jsonContentHotel- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).ETag– Undurchsichtiger Stand der Antwort (aendert sich mit Inhalt, Sprachwahl und Darstellung); als If-None-Match zurueckschicken
- Status
- 304
- Beschreibung
- unveraendert seit dem genannten ETag (kein Koerper)
- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).ETag– Undurchsichtiger Stand der Antwort (aendert sich mit Inhalt, Sprachwahl und Darstellung); als If-None-Match zurueckschicken
- Status
- 400
- Beschreibung
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Inhalte fuer den Veranstalter nicht freigeschaltet (auch Testumgebung auf dieser Installation nicht beliefert) oder Key ohne Inhalts-Recht (ERR_CONTENT_NOT_ALLOWED); ausserdem wie Forbidden (ERR_TENANT_SUSPENDED, ERR_KEY_GROUP_INACTIVE, ERR_MODE_MISMATCH)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 404
- Beschreibung
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 500
- Beschreibung
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 503
- Beschreibung
- Inhalte bzw. Bild-Adressen auf diesem Knoten nicht eingerichtet (ERR_CONTENT_NOT_READY)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden
GET /v1/content/changes
Aenderungen der Hotelinhalte nach einem Stand
Aenderungen nach since in der Reihenfolge, in der sie gespeichert wurden, lueckenlos, je Hotel hoechstens einmal je Seite (mit seinem letzten Stand), nur Hotels des Keys. more true = sofort mit next weiterlesen. Stand vor dem Horizont (30 Tage) -> 410, dann Verzeichnis neu holen (Handbuch 12.4).
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). An diesem Endpunkt wirkt nur rate_limited. Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited)
- Name
pageSize- Ort
- query
- Pflicht
- nein
- Typ
integer- Beschreibung
- Seitengroesse 1-1000 (Standard 500) (minimum 1; maximum 1000; default 500)
- Name
since- Ort
- query
- Pflicht
- ja
- Typ
string- Beschreibung
- feedToken des Verzeichnisses oder next der Vorseite (versiegelt, an den Key gebunden) (pattern ^cf1\.[A-Za-z0-9_-]+$)
Antworten
- Status
- 200
- Beschreibung
- Eine Seite der Aenderungen
- Inhalt
application/jsonContentChangesResponse- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).
- Status
- 400
- Beschreibung
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Inhalte fuer den Veranstalter nicht freigeschaltet (auch Testumgebung auf dieser Installation nicht beliefert) oder Key ohne Inhalts-Recht (ERR_CONTENT_NOT_ALLOWED); ausserdem wie Forbidden (ERR_TENANT_SUSPENDED, ERR_KEY_GROUP_INACTIVE, ERR_MODE_MISMATCH)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 410
- Beschreibung
- since liegt vor dem Aufbewahrungshorizont des Feeds (ERR_CONTENT_CURSOR_EXPIRED) - Verzeichnis neu holen
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 500
- Beschreibung
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 503
- Beschreibung
- Inhalte bzw. Bild-Adressen auf diesem Knoten nicht eingerichtet (ERR_CONTENT_NOT_READY)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden
GET /v1/content/catalog
Kataloge der Hotelinhalte mit Beschriftungen
Objektarten, Kategorieskalen, Text- und Bildtypen, Ausstattungsgruppen und -merkmale mit Beschriftungen; languages = Inhaltssprachen des Veranstalters. ETag; mit If-None-Match 304 (Handbuch 12.5).
Parameter
- Name
X-TourAPI-Require-Mode- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- test = jede Anfrage eines Live-Keys wird mit 403 ERR_MODE_MISMATCH abgelehnt, nichts ausgefuehrt (Test-Umgebungen, Agenten, CI); live = umgekehrt. Handbuch Abschnitt 11.1. (Werte: test | live)
- Name
X-TourAPI-Sandbox-Scenario- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- Nur Test-Key (Sandbox): erzwingt einen Fehlerfall zum Testen der Wiederhol-Logik (Handbuch Abschnitt 11.3). An diesem Endpunkt wirkt nur rate_limited. Mit Live-Key, unbekanntem Wert oder einem Szenario, das an diesem Endpunkt nicht wirkt: 422 ERR_SCENARIO_NOT_ALLOWED. (Werte: rate_limited)
- Name
lang- Ort
- query
- Pflicht
- nein
- Typ
string- Beschreibung
- Beschriftungssprachen (de, en, tr), kommagetrennt; ohne = alle
- Name
If-None-Match- Ort
- header
- Pflicht
- nein
- Typ
string- Beschreibung
- ETag einer frueheren Antwort
Antworten
- Status
- 200
- Beschreibung
- Kataloge
- Inhalt
application/jsonContentCatalogResponse- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).X-TourAPI-Mode– Modus des angenommenen API-Keys - test (Test-Key, Buchungen nur in der Sandbox) oder live. Steht auf jeder Antwort, sobald der Key angenommen ist, auch auf Fehlerantworten danach (Handbuch Abschnitt 11.1).ETag– Undurchsichtiger Stand der Antwort (aendert sich mit Inhalt, Sprachwahl und Darstellung); als If-None-Match zurueckschicken
- Status
- 304
- Beschreibung
- unveraendert seit dem genannten ETag (kein Koerper)
- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).ETag– Undurchsichtiger Stand der Antwort (aendert sich mit Inhalt, Sprachwahl und Darstellung); als If-None-Match zurueckschicken
- Status
- 400
- Beschreibung
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 401
- Beschreibung
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 403
- Beschreibung
- Inhalte fuer den Veranstalter nicht freigeschaltet (auch Testumgebung auf dieser Installation nicht beliefert) oder Key ohne Inhalts-Recht (ERR_CONTENT_NOT_ALLOWED); ausserdem wie Forbidden (ERR_TENANT_SUSPENDED, ERR_KEY_GROUP_INACTIVE, ERR_MODE_MISMATCH)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 405
- Beschreibung
- Falsche HTTP-Methode (ERR_METHOD_NOT_ALLOWED). Nach vielen Fehl-Anfragen (401/403/404/405) von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 422
- Beschreibung
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 429
- Beschreibung
- Rate-Limit je Key (ERR_RATE_LIMITED) oder Such-Gate (ERR_SEARCH_BUSY). Wer Retry-After missachtet, bekommt die 429 verzoegert (hoechstens 1 s, je API-Key), bei sehr vielen verzoegerten Anfragen sofort (Handbuch, Abschnitt 8)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden (mindestens 1)
- Status
- 500
- Beschreibung
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).
- Status
- 503
- Beschreibung
- Inhalte bzw. Bild-Adressen auf diesem Knoten nicht eingerichtet (ERR_CONTENT_NOT_READY)
- Inhalt
application/jsonError- Köpfe
Server-Timing– Rechenzeit der API (W3C Server Timing), genau ein Wert tourapi;dur=<ms>, z. B. tourapi;dur=12.4 - Millisekunden vom Eingang der Anfrage am Endpunkt bis zum Beginn der Antwort, inkl. Lesen des Anfrage-Koerpers und Warten an Takt/Such-Gate, ohne Uebertragung der Antwort. Steht auf jeder Antwort eines Endpunkts, auch auf Fehlerantworten (Handbuch Abschnitt 1.6).Retry-After– Frueheste Wiederholung in ganzen Sekunden
Schemata
Date
Kalendertag JJJJ-MM-TT
- Typ
string (date)- Regeln
- pattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
Cents
Betrag in ganzen Cent der Vertragswaehrung
- Typ
integer (int64)
Warnings
Hinweise zur Anfrage (ignorierte Felder, Waehrung, now). Bitte loggen.
- Typ
- array<
string>
Traveller
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
age | integer | ja | Alter am Anreisetag (minimum 0; maximum 120) |
name | string | nein | nur Anzeige, ohne Wirkung auf den Preis |
type | string | nein | nur Anzeige (adult, child), ohne Wirkung auf den Preis |
Occupancy
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
travellers | array<Traveller> | ja | (minItems 1; maxItems 20) |
Availability
- Feld
configured- Typ
boolean- Pflicht
- ja
- Beschreibung
- fuer das Zimmer ist Kontingent hinterlegt
- Feld
available- Typ
boolean- Pflicht
- ja
- Beschreibung
- jede Nacht des Aufenthalts ist fuer diesen Key buchbar (freie Kapazitaet, Tagesstatus, beim Key einer Kontingent-Gruppe deren Zuteilung; eine Preisgruppe zaehlt wie der Basis-Key) - genau das, was /v1/book verkauft
- Feld
minFree- Typ
integer- Pflicht
- ja
- Beschreibung
- kleinste freie Anzahl ueber die Naechte fuer diesen Key, exakt bis 99 (wie das EDF-Allotment der Lieferung, PatternLength 2); 0 = mindestens eine Nacht Stop-Sale, auf Anfrage, ausgebucht oder ohne Kapazitaet; -1 = jede Nacht mehr als 99 frei oder Freiverkauf
PriceRequest
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
hotel | string | ja | |
room | string | nein | leer = guenstigstes verfuegbares Zimmer, das die Belegung zulaesst |
board | string | ja | Verpflegungs-Code |
checkIn | Date | ja | |
checkOut | Date | ja | |
now | string | nein | wird ignoriert (Stichtag = Serverdatum); abweichend -> Hinweis (veraltet) |
currency | string | nein | Wunschwaehrung, nur Hinweis bei Abweichung |
occupancy | Occupancy | ja |
PricesRequest
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
hotel | string | ja | |
room | string | nein | leer = alle Zimmer |
boards | array<string> | nein | leer = alle Verpflegungen des Zimmers |
board | string | nein | filtert hier nicht (Hinweis in warnings); boards benutzen (veraltet) |
checkIn | Date | ja | |
checkOut | Date | ja | |
now | string | nein | wird ignoriert (Stichtag = Serverdatum) (veraltet) |
currency | string | nein | |
occupancy | Occupancy | ja |
SearchRequest
- Feld
destination- Typ
string- Pflicht
- nein
- Beschreibung
- Zielgebiet- oder Flughafen-Code des Hotels, exakter Vergleich (Gross-/Kleinschreibung zaehlt); ein Code ohne Hotel fuer diesen Key -> 422 ERR_UNKNOWN_DESTINATION (gueltige Codes GET /v1/destinations); leer = alle Hotels
- Feld
includeUnavailable- Typ
boolean- Pflicht
- nein
- Beschreibung
- nicht buchbare Hotels gekennzeichnet mitliefern (default false)
- Feld
board- Typ
string- Pflicht
- ja
- Feld
checkIn- Typ
Date- Pflicht
- ja
- Feld
checkOut- Typ
Date- Pflicht
- ja
- Feld
now- Typ
string- Pflicht
- nein
- Beschreibung
- wird ignoriert (Stichtag = Serverdatum) (veraltet)
- Feld
currency- Typ
string- Pflicht
- nein
- Feld
occupancy- Typ
Occupancy- Pflicht
- ja
- Feld
pageSize- Typ
integer- Pflicht
- nein
- Beschreibung
- Hotels je Seite (minimum 1; maximum 100; default 50)
- Feld
cursor- Typ
string- Pflicht
- nein
- Beschreibung
- nextCursor der Vorseite, unveraendert
PriceCheck
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
board | string | ja | |
now | string | nein | leer lassen; abweichend vom Stichtag -> ERR_NOW_MISMATCH |
currency | string | nein | muss zur Vertragswaehrung passen (ERR_CURRENCY_NOT_AVAILABLE) (maxLength 3) |
occupancy | Occupancy | ja | |
expectedCents | Cents | ja | |
tolerancePercent | number | ja | erlaubte Abweichung in Prozent (minimum 0) |
BookRequest
- Feld
hotel- Typ
string- Pflicht
- ja
- Feld
room- Typ
string- Pflicht
- ja
- Feld
checkIn- Typ
Date- Pflicht
- ja
- Feld
checkOut- Typ
Date- Pflicht
- ja
- Feld
quantity- Typ
integer- Pflicht
- ja
- Beschreibung
- Anzahl Zimmer (minimum 1; maximum 1000000)
- Feld
idemKey- Typ
string- Pflicht
- ja
- Beschreibung
- eigener eindeutiger Schluessel des Vorgangs (Idempotenz); laenger -> 422 ERR_VALIDATION (maxLength 128)
- Feld
reference- Typ
string- Pflicht
- nein
- Beschreibung
- eigene Buchungsreferenz; laenger -> 422 ERR_VALIDATION (maxLength 128)
- Feld
leadPaxName- Typ
string- Pflicht
- nein
- Beschreibung
- laenger -> 422 ERR_VALIDATION (maxLength 255)
- Feld
metadata- Pflicht
- nein
- Beschreibung
- freies JSON (ueblich ein Objekt), gespeichert und zurueckgegeben, nicht ausgewertet; metadata.correlationId (bis 64 Zeichen, laenger -> 422 ERR_VALIDATION) wird uebernommen
- Feld
priceCheck- Typ
PriceCheck- Pflicht
- nein
CancelRequest
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
idemKey | string | ja | laenger -> 422 ERR_VALIDATION (maxLength 128) |
Rounding
Rundungsregel aller Cent-Betraege der Antwort (dieselbe, die der EDF-Export deklariert)
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
mode | string | ja | kaufmaennisch, 0,5 wird vom Nullpunkt weg gerundet (Werte: Commercial) |
decimalPlaces | integer | ja | (Werte: 2) |
scope | string | ja | je Reisendem wird die exakte Summe seiner Posten einmal gerundet (Werte: Person) |
BreakdownLine
Ein Posten. Reihenfolge: Nacht aufsteigend (Posten je Aufenthalt, night -1, zuletzt), darin Reisender aufsteigend, darin Rechenschritt (BaseCharge/PhantomBaseCharge, GuestCharge, BoardCharge - jeweils direkt gefolgt von ihrer ApplyToBoard-GuestCharge -, Extra nach SortIndex). Die amountCents eines Reisenden summieren sich exakt zu seinem perTravellerCents.
- Feld
chargeType- Typ
string- Pflicht
- nein
- Beschreibung
- BaseCharge, PhantomBaseCharge, GuestCharge, BoardCharge oder Extra
- Feld
code- Typ
string- Pflicht
- nein
- Feld
traveller- Typ
integer- Pflicht
- nein
- Beschreibung
- Index des Reisenden in perTravellerCents (Alter absteigend, 0 = aeltester); Zimmerposten 0
- Feld
night- Typ
integer- Pflicht
- nein
- Beschreibung
- Index der Nacht ab 0; -1 = Posten je Aufenthalt
- Feld
amountCents- Typ
Cents- Pflicht
- nein
- Feld
amountExact- Typ
string- Pflicht
- nein
- Beschreibung
- exakter, ungerundeter Betrag des Postens in der Vertragswaehrung als Dezimalzahl (z.B. "-13.485"). amountCents ist der daraus summentreu verteilte Anzeige-Cent: gerundete laufende Summe des Reisenden bis zu dieser Zeile minus die bis zur Vorzeile. (pattern ^-?[0-9]+\.[0-9]{2,}$)
- Feld
applianceCode- Typ
string- Pflicht
- nein
- Beschreibung
- nur bei Extras
- Feld
variant- Typ
string- Pflicht
- nein
- Beschreibung
- nur bei Extras einer Extra-Familie (mehrere Extras mit demselben applianceCode): die Variante des Extras; erst applianceCode und variant zusammen nennen das Extra.
- Feld
freeNight- Typ
boolean- Pflicht
- nein
- Beschreibung
- nur gesetzt (true) bei den Posten einer Freinacht ("7=6"): diese Nacht ist ganz oder anteilig erlassen. Die Freinacht wird vor den uebrigen Extras angewandt; Prozent-Extras rechnen nur auf den nicht erlassenen Rest der Nacht (eine Freinacht verteuert nie).
SeparateExtra
Einzeln ausgewiesenes Extra. amountCents ist die exakte Summe seiner Posten, einmal gerundet; bei inTotal=true kann sie von der Summe seiner breakdown-Zeilen abweichen, auch um mehrere Cent je Reisendem (die Anzeige-Cent der Zeilen verteilen die Rundung des ganzen Personen-Topfs, nicht die des Extras). Massgeblich fuer den Preis sind totalCents, perTravellerCents und breakdown; exakter Wert des Extras = Summe der amountExact seiner Zeilen.
- Feld
code- Typ
string- Pflicht
- nein
- Feld
variant- Typ
string- Pflicht
- nein
- Beschreibung
- nur bei Extras einer Extra-Familie (mehrere Extras mit demselben code): die Variante des Extras; erst code und variant zusammen nennen das Extra.
- Feld
name- Typ
string- Pflicht
- nein
- Feld
amountCents- Typ
Cents- Pflicht
- nein
- Feld
mandatory- Typ
boolean- Pflicht
- nein
- Feld
inTotal- Typ
boolean- Pflicht
- nein
- Beschreibung
- false = optionales Extra, nicht im Gesamtpreis
- Feld
eventStart- Typ
Date- Pflicht
- nein
- Feld
eventEnd- Typ
Date- Pflicht
- nein
PriceResponse
- Feld
room- Typ
string- Pflicht
- ja
- Beschreibung
- das bepreiste Zimmer (ohne room in der Anfrage das guenstigste verfuegbare; Zimmer mit Vertragsfehler werden ausgelassen und in warnings genannt); so in /v1/book verwendbar
- Feld
currency- Typ
string- Pflicht
- ja
- Beschreibung
- Vertragswaehrung; leer = am Vertrag nicht hinterlegt
- Feld
totalCents- Typ
Cents- Pflicht
- ja
- Feld
rounding- Typ
Rounding- Pflicht
- ja
- Feld
perTravellerCents- Typ
- array<
Cents> - Pflicht
- ja
- Beschreibung
- je Reisendem (Alter absteigend) die exakte Summe seiner Posten, einmal gerundet; totalCents = Summe; Zimmerpreis steht beim ersten Reisenden
- Feld
breakdown- Typ
- array<
BreakdownLine> - Pflicht
- ja
- Feld
separateExtras- Typ
- array<
SeparateExtra> - Pflicht
- nein
- Feld
availability- Typ
Availability- Pflicht
- ja
- Feld
warnings- Typ
Warnings- Pflicht
- nein
BoardPrice
- Feld
board- Typ
string- Pflicht
- nein
- Feld
globalType- Typ
string- Pflicht
- nein
- Beschreibung
- Verpflegungsart wie im EDF-Export und in der offenen Suche (boardType) - AO fuer RO, sonst die Zuordnung des Veranstalters, sonst der Code selbst, wenn er eine Verpflegungsart ist, sonst XX (nicht zuordenbar); Handbuch 3.2
- Feld
totalCents- Typ
Cents- Pflicht
- nein
- Feld
perTravellerCents- Typ
- array<
Cents> - Pflicht
- nein
- Feld
separateExtras- Typ
- array<
SeparateExtra> - Pflicht
- nein
- Feld
availability- Typ
Availability- Pflicht
- nein
RoomPrices
- Feld
room- Typ
string- Pflicht
- nein
- Feld
boards- Typ
- array<
BoardPrice> - Pflicht
- nein
- Feld
errors- Typ
- array<
BoardError> - Pflicht
- nein
- Beschreibung
- Verpflegungen dieses Zimmers, die fuer die angefragte Belegung nicht rechnen oder an einem Vertragsfehler des Zimmers scheitern, z. B. ERR_NO_SECTION (ohne Preis; die uebrigen Zimmer bleiben bepreist; Handbuch 3.2, 3.5, 7.5)
BoardError
- Feld
board- Typ
string- Pflicht
- ja
- Feld
globalType- Typ
string- Pflicht
- nein
- Beschreibung
- Verpflegungsart wie im EDF-Export und in der offenen Suche (boardType) - AO fuer RO, sonst die Zuordnung des Veranstalters, sonst der Code selbst, wenn er eine Verpflegungsart ist, sonst XX (nicht zuordenbar); Handbuch 3.2
- Feld
errorCode- Typ
string- Pflicht
- ja
- Beschreibung
- ein Vertragsfehler-Code (Handbuch 7.5, z. B. ERR_NO_SECTION, ERR_INVALID_AMOUNT, ERR_NEGATIVE_TRAVELLER_PRICE, ERR_NEGATIVE_PERCENT_BASE) oder ERR_BOARD_NOT_AVAILABLE (Verpflegung fuer diese Reisegruppe nicht buchbar, Handbuch 3.5)
- Feld
message- Typ
string- Pflicht
- ja
PricesResponse
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
currency | string | ja | |
rounding | Rounding | ja | |
rooms | array<RoomPrices> | ja | |
warnings | Warnings | nein |
SearchResult
- Feld
hotel- Typ
string- Pflicht
- nein
- Feld
name- Typ
string- Pflicht
- nein
- Feld
room- Typ
string- Pflicht
- nein
- Beschreibung
- Zimmer, auf das sich fromTotalCents bezieht (das guenstigste verfuegbare; bei bookable=false das guenstigste)
- Feld
currency- Typ
string- Pflicht
- nein
- Feld
fromTotalCents- Typ
Cents- Pflicht
- nein
- Feld
availability- Typ
Availability- Pflicht
- nein
- Feld
bookable- Typ
boolean- Pflicht
- nein
- Feld
reason- Typ
string- Pflicht
- nein
- Beschreibung
- nur bei bookable=false. ERR_NO_INVENTORY = mindestens eine Nacht ohne Kontingent (wie /v1/book), ERR_NOT_AVAILABLE = jede Nacht hat Kontingent, nicht jede ist offen (auch Zuteilung der Kundengruppe erschoepft oder fuer Zimmer/Nacht nicht vorhanden)
- Feld
priceInformational- Typ
boolean- Pflicht
- nein
- Beschreibung
- true = nur Preisauskunft, kein buchbares Angebot
SearchSkip
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
reason | string | nein | |
count | integer | nein |
SearchDiagnostics
- Feld
considered- Typ
integer- Pflicht
- nein
- Beschreibung
- gepruefte Hotels = returned + skipped
- Feld
returned- Typ
integer- Pflicht
- nein
- Feld
skipped- Typ
integer- Pflicht
- nein
- Feld
reasons- Typ
- array<
SearchSkip> - Pflicht
- nein
- Feld
timeBudgetExhausted- Typ
boolean- Pflicht
- nein
- Beschreibung
- Seite wegen Zeitbudget kuerzer als pageSize
- Feld
roomErrors- Typ
- array<
SearchSkip> - Pflicht
- nein
- Beschreibung
- Zimmer der geprueften Hotels, die wegen eines Vertragsfehlers (Rechenkern, z.B. ERR_INVALID_AMOUNT) ausgelassen wurden, je Code mit Anzahl (reason = Code, count = Zimmer); auch wenn das Hotel mit einem anderen Zimmer trifft
SearchResponse
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
results | array<SearchResult> | ja | |
diagnostics | SearchDiagnostics | ja | |
warnings | Warnings | nein | |
nextCursor | string | nein | gesetzt, solange weitere Hotels zu pruefen sind |
OpenSearchRequest
- Feld
destinations- Typ
- array<
string> - Pflicht
- nein
- Beschreibung
- Ziel-Codes wie GET /v1/destinations (Vereinigung); nicht zusammen mit hotels; hoechstens laut Suchprofil (minItems 1)
- Feld
hotels- Typ
- array<
string> - Pflicht
- nein
- Beschreibung
- Hotel-Codes des Keys; nicht zusammen mit destinations. Ohne beides der ganze Bestand des Keys (nur wenn das Suchprofil alle Ziele erlaubt) (minItems 1)
- Feld
arrivalFrom- Typ
Date- Pflicht
- ja
- Feld
arrivalTo- Typ
Date- Pflicht
- ja
- Feld
nightsMin- Typ
integer- Pflicht
- ja
- Beschreibung
- (minimum 1; maximum 30)
- Feld
nightsMax- Typ
integer- Pflicht
- ja
- Beschreibung
- (minimum 1; maximum 30)
- Feld
occupancy- Typ
Occupancy- Pflicht
- ja
- Feld
boards- Typ
- array<
string> - Pflicht
- nein
- Beschreibung
- Verpflegungs-Codes genau wie im Vertrag; ohne = alle (minItems 1)
- Feld
boardTypes- Typ
- array<
string> - Pflicht
- nein
- Beschreibung
- Verpflegungsart wie im EDF-Export; mit boards zusammen muessen beide passen (minItems 1) (Werte: AO | BB | HB | HB+ | FB | FB+ | SC | AI | AI+ | XX)
- Feld
minTotalCents- Typ
Cents- Pflicht
- nein
- Feld
maxTotalCents- Typ
Cents- Pflicht
- nein
- Feld
currency- Typ
string- Pflicht
- nein
- Beschreibung
- Filter auf die Vertragswaehrung (keine Umrechnung); Pflicht, wenn der Suchraum mehrere Waehrungen hat (ERR_CURRENCY_REQUIRED)
- Feld
sort- Typ
string- Pflicht
- nein
- Beschreibung
- (Werte: price | pricePerNight | hotel; default price)
- Feld
pageSize- Typ
integer- Pflicht
- nein
- Beschreibung
- 1 bis Suchprofil; ohne Angabe min(20, Suchprofil) (minimum 1)
- Feld
cursor- Typ
string- Pflicht
- nein
- Beschreibung
- nextCursor der Vorseite, unveraendert (15 Minuten gueltig)
- Feld
category- Typ
OpenSearchCategoryFilter- Pflicht
- nein
- Feld
regions- Typ
- array<
string> - Pflicht
- nein
- Beschreibung
- Regionen aus dem Hotelstamm (Adresse), eine davon, exakt verglichen. Hotels ohne Region zaehlen mit Grund ERR_NO_REGION (minItems 1; maxItems 50) (minLength 1; maxLength 80)
- Feld
geo- Typ
OpenSearchGeoFilter- Pflicht
- nein
OpenSearchCategoryFilter
Offizielle Kategorie aus dem Hotelstamm; Grenzen eingeschlossen, 4 Superior zaehlt als 4. Hotels ohne offizielle Kategorie zaehlen mit Grund ERR_NO_CATEGORY
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
scheme | string | ja | (Werte: stars | keys) |
min | number | nein | ohne = 1; Nullen am Ende erlaubt (3.50 = 3.5) (minimum 1; maximum 5) |
max | number | nein | ohne = 5; Nullen am Ende erlaubt (4.0 = 4) (minimum 1; maximum 5) |
OpenSearchGeoFilter
Umkreis (Haversine, Erdradius 6371 km, Abstand auf ganze Meter gerundet, Rand eingeschlossen). Hotels ohne Koordinaten zaehlen mit Grund ERR_NO_GEO
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
lat | number | ja | Dezimalgrad, hoechstens 6 Nachkommastellen (minimum -90; maximum 90) |
lon | number | ja | Dezimalgrad, hoechstens 6 Nachkommastellen (minimum -180; maximum 180) |
radiusKm | number | ja | Kilometer, hoechstens 3 Nachkommastellen (ganze Meter) (minimum 0.001; maximum 500) |
OpenSearchOffer
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
checkIn | Date | ja | |
checkOut | Date | ja | |
nights | integer | ja | |
room | string | ja | |
board | string | ja | |
boardType | string | ja | Verpflegungsart wie im EDF-Export |
currency | string | ja | |
totalCents | Cents | ja | |
perTravellerCents | array<Cents> | ja | |
availability | Availability | ja |
OpenSearchAlternatives
Vorpruefung ohne Preis (Obergrenze, keine Preis- oder Trefferaussage)
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
dates | integer | nein | |
boards | array<string> | nein | |
boardTypes | array<string> | nein | |
rooms | integer | nein |
OpenSearchResult
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
hotel | string | ja | |
best | OpenSearchOffer | ja | |
alternatives | OpenSearchAlternatives | ja |
OpenSearchCoverage
- Feld
complete- Typ
boolean- Pflicht
- nein
- Beschreibung
- false = das Zeitbudget hat die Seite gekuerzt; die Treffer sind trotzdem exakt und in bewiesener Reihenfolge
- Feld
timeBudgetExhausted- Typ
boolean- Pflicht
- nein
- Feld
standChanged- Typ
boolean- Pflicht
- nein
- Beschreibung
- Datenstand seit der Vorseite gewechselt; Folgeseite im neuen Stand ab derselben Stelle
- Feld
hotelsInScope- Typ
integer- Pflicht
- nein
- Feld
hotelsFeasible- Typ
integer- Pflicht
- nein
- Beschreibung
- Hotels mit mindestens einem Termin laut Vorpruefung (Obergrenze der Trefferzahl)
- Feld
hotelsPriced- Typ
integer- Pflicht
- nein
- Feld
undecided- Typ
integer- Pflicht
- nein
- Feld
reasons- Typ
- array<
SearchSkip> - Pflicht
- nein
- Feld
priceReasons- Typ
- array<
SearchSkip> - Pflicht
- nein
- Feld
roomErrors- Typ
- array<
SearchSkip> - Pflicht
- nein
OpenSearchResponse
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
results | array<OpenSearchResult> | ja | |
coverage | OpenSearchCoverage | ja | |
stand | string | ja | Kennung des Datenstands der Seite (undurchsichtig) |
nextCursor | string | nein | gesetzt, solange weitere Treffer folgen koennen |
warnings | Warnings | nein |
OpenDatesRequest
- Feld
hotel- Typ
string- Pflicht
- ja
- Beschreibung
- Hotel-Code des Keys (z. B. aus der offenen Suche)
- Feld
arrivalFrom- Typ
Date- Pflicht
- ja
- Feld
arrivalTo- Typ
Date- Pflicht
- ja
- Feld
nightsMin- Typ
integer- Pflicht
- ja
- Beschreibung
- (minimum 1; maximum 30)
- Feld
nightsMax- Typ
integer- Pflicht
- ja
- Beschreibung
- (minimum 1; maximum 30)
- Feld
occupancy- Typ
Occupancy- Pflicht
- ja
- Feld
boards- Typ
- array<
string> - Pflicht
- nein
- Beschreibung
- Verpflegungs-Codes genau wie im Vertrag; jeder muss im Hotel angeboten werden (ERR_BOARD_NOT_OFFERED); ohne = alle (minItems 1)
- Feld
boardTypes- Typ
- array<
string> - Pflicht
- nein
- Beschreibung
- Verpflegungsart wie im EDF-Export; mit boards zusammen muessen beide passen (minItems 1) (Werte: AO | BB | HB | HB+ | FB | FB+ | SC | AI | AI+ | XX)
- Feld
rooms- Typ
- array<
string> - Pflicht
- nein
- Beschreibung
- Zimmer-Codes des Hotels (unbekannt -> 404 ERR_ROOM_NOT_FOUND); ohne = alle (minItems 1)
- Feld
minTotalCents- Typ
Cents- Pflicht
- nein
- Feld
maxTotalCents- Typ
Cents- Pflicht
- nein
- Feld
currency- Typ
string- Pflicht
- nein
- Beschreibung
- Filter auf die Vertragswaehrung; rechnet das Hotel anders oder ohne gueltige Waehrung -> 422 ERR_CURRENCY_NOT_AVAILABLE
- Feld
perBoard- Typ
boolean- Pflicht
- nein
- Beschreibung
- je Termin eine Zelle je Verpflegung (Reihenfolge in boards der Antwort) (default false)
- Feld
category- Typ
OpenSearchCategoryFilter- Pflicht
- nein
- Feld
regions- Typ
- array<
string> - Pflicht
- nein
- Beschreibung
- Regionen aus dem Hotelstamm wie in /v1/search/open. Hotel ausserhalb = keine Zelle (cells leer), ohne Region = jede Zelle none mit ERR_NO_REGION (minItems 1; maxItems 50) (minLength 1; maxLength 80)
- Feld
geo- Typ
OpenSearchGeoFilter- Pflicht
- nein
OpenDatesCell
- Feld
checkIn- Typ
Date- Pflicht
- ja
- Feld
checkOut- Typ
Date- Pflicht
- ja
- Feld
nights- Typ
integer- Pflicht
- ja
- Feld
status- Typ
string- Pflicht
- ja
- Beschreibung
- offer = Angebot (exakt wie /v1/price), none = kein Angebot (reason), unchecked = Zeitbudget abgelaufen, nie als none (Werte: offer | none | unchecked)
- Feld
room- Typ
string- Pflicht
- nein
- Feld
board- Typ
string- Pflicht
- nein
- Beschreibung
- Verpflegung des Angebots; mit perBoard die Verpflegung der Zelle (auch bei none/unchecked)
- Feld
boardType- Typ
string- Pflicht
- nein
- Feld
totalCents- Typ
Cents- Pflicht
- nein
- Feld
perTravellerCents- Typ
- array<
Cents> - Pflicht
- nein
- Feld
availability- Typ
Availability- Pflicht
- nein
- Feld
reason- Typ
string- Pflicht
- nein
- Beschreibung
- Fehlercode wie /v1/price (nur none); mit Filtern nach Hotelstamm auch ERR_NO_CATEGORY, ERR_NO_REGION, ERR_NO_GEO
OpenDatesCoverage
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
complete | boolean | nein | false = Zellen sind unchecked (Zeitbudget) |
timeBudgetExhausted | boolean | nein | |
cells | integer | nein | |
offers | integer | nein | |
none | integer | nein | |
unchecked | integer | nein | |
roomErrors | array<SearchSkip> | nein |
OpenDatesResponse
- Feld
hotel- Typ
string- Pflicht
- ja
- Feld
currency- Typ
string- Pflicht
- ja
- Feld
stand- Typ
string- Pflicht
- ja
- Beschreibung
- Kennung des Datenstands (undurchsichtig, wie in der offenen Suche)
- Feld
boards- Typ
- array<
string> - Pflicht
- nein
- Beschreibung
- nur mit perBoard - die Verpflegungen je Termin in Zellen-Reihenfolge = Vertragsreihenfolge (erstes Auftreten ueber die Zimmer, RO zuerst, wie /v1/prices)
- Feld
cells- Typ
- array<
OpenDatesCell> - Pflicht
- ja
- Beschreibung
- dicht (checkIn, nights, mit perBoard Verpflegung); leer nur, wenn das Hotel ausserhalb der Filter nach Hotelstamm liegt
- Feld
coverage- Typ
OpenDatesCoverage- Pflicht
- ja
- Feld
warnings- Typ
Warnings- Pflicht
- nein
LimitsRate
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
perSecond | number | nein | |
burst | integer | nein | |
scope | string | nein | key = je Key und Knoten; testCircle = gemeinsamer Topf aller Test-Keys des Kreises (Werte: key | testCircle) |
LimitsExport
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
allowed | boolean | nein |
LimitsContent
Zugang zur Content-API (/v1/content/*) mit diesem Key - Freischaltung des Veranstalters und Inhalts-Recht des Keys; ohne Grund.
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
allowed | boolean | ja |
LimitsOpenSearch
Ohne Recht nur allowed=false; sonst alle Grenzen. destinations fehlt bei allDestinations=true.
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
allowed | boolean | ja | |
maxWindowDays | integer | nein | |
nightsMin | integer | nein | |
nightsMax | integer | nein | |
maxNightsSpan | integer | nein | |
maxDestinations | integer | nein | |
maxHotels | integer | nein | |
maxCandidates | integer | nein | |
maxPageSize | integer | nein | |
timeBudgetMs | integer | nein | |
rate | integer | nein | |
burst | integer | nein | |
concurrency | integer | nein | |
matrixMaxWindowDays | integer | nein | |
matrixMaxCells | integer | nein | |
allDestinations | boolean | nein | |
destinations | array<string> | nein |
LimitsResponse
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
rate | LimitsRate | ja | |
export | LimitsExport | ja | |
content | LimitsContent | ja | |
openSearch | LimitsOpenSearch | ja |
ContentDirectoryResponse
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
hotels | array<ContentDirectoryHotel> | ja | |
nextCursor | string | nein | fehlt auf der letzten Seite |
feedToken | string | ja | Stand fuer /v1/content/changes (since) |
scopeHash | string | ja | wechselt mit der Hotelmenge des Keys |
warnings | Warnings | nein |
ContentDirectoryHotel
- Feld
code- Typ
string- Pflicht
- ja
- Feld
name- Typ
string- Pflicht
- ja
- Feld
destination- Typ
string- Pflicht
- nein
- Feld
contentVersion- Typ
integer- Pflicht
- ja
- Beschreibung
- zaehlt jede Aenderung der Auslieferung; 0 = noch kein Inhalt
- Feld
updatedAt- Typ
string (date-time)- Pflicht
- nein
- Beschreibung
- letzte Aenderung (UTC); fehlt bei contentVersion 0
- Feld
category- Typ
ContentCategory- Pflicht
- nein
- Feld
geo- Typ
ContentGeo- Pflicht
- nein
- Feld
websiteReady- Typ
boolean- Pflicht
- ja
- Beschreibung
- Reifegrad webseitenbereit (Handbuch 12.3); Kennzahl, beeinflusst weder Verkauf noch Auslieferung
- Feld
missing- Typ
- array<
string> - Pflicht
- ja
- Beschreibung
- fehlende Kriterien des Reifegrads in fester Reihenfolge, leer = webseitenbereit; unbekannte Werte ignorieren (Werte: general_text | geo | category | images | amenities)
ContentCategory
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
kind | string | ja | (Werte: official | operator) |
scheme | string | ja | (Werte: stars | keys) |
value | number | ja | 1 bis 5 in halben Schritten |
superior | boolean | nein | nur bei stars; fehlt = false |
ContentGeo
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
lat | number | ja | |
lon | number | ja | |
precision | string | nein | (Werte: address | street | locality | unknown) |
ContentAddress
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
street | string | nein | |
postalCode | string | nein | |
city | string | nein | |
region | string | nein | |
country | string | nein | ISO 3166-1 alpha-2 |
ContentFacts
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
rooms | integer | nein | |
floors | integer | nein | |
built | integer | nein | |
renovated | integer | nein | |
checkInFrom | string | nein | HH:MM |
checkOutUntil | string | nein | HH:MM |
minAge | integer | nein |
ContentText
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
type | string | ja | Texttyp aus dem Katalog (GENERAL, LOCATION, ...) |
lang | string | ja | gelieferte Sprache |
fallbackFrom | string | nein | angefragte Sprache, fuer die dieser Text einspringt |
html | string | ja | nur p, br, b, strong, i, em, ul, ol, li ohne Attribute |
machineTranslated | boolean | nein | |
updatedAt | string (date-time) | ja |
ContentLabel
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
lang | string | ja | |
fallbackFrom | string | nein | |
text | string | ja |
ContentFocus
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
x | integer | ja | (minimum 0; maximum 100) |
y | integer | ja | (minimum 0; maximum 100) |
ContentVariant
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
name | string | ja | (Werte: w320 | w640 | w1024 | w1600 | w2048) |
width | integer | ja | |
height | integer | ja | |
bytes | integer | ja | |
url | string (uri) | ja |
ContentMedium
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
id | string | ja | stabil, solange das Bild im Hotel bleibt |
type | string | ja | Bildtyp aus dem Katalog |
order | integer | ja | 1 = Hauptbild |
roomCode | string | nein | |
width | integer | ja | |
height | integer | ja | |
focus | ContentFocus | nein | |
titles | array<ContentLabel> | ja | |
alts | array<ContentLabel> | ja | |
credit | string | nein | |
attributionRequired | boolean | ja | true = credit muss neben dem Bild stehen |
variants | array<ContentVariant> | ja |
ContentAmenity
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
code | string | ja | |
available | boolean | ja | false = ausdruecklich nicht vorhanden (fehlendes Merkmal = unbekannt) |
count | integer | nein | |
distanceM | integer | nein | |
areaM2 | integer | nein | |
ref | string | nein | Bezug der Entfernung (IATA-Code des Flughafens) |
charge | string | nein | (Werte: included | extra | unknown) |
ContentHotel
Inhalt eines Hotels. Kein Feld fuer Kontaktdaten.
- Feld
code- Typ
string- Pflicht
- ja
- Feld
name- Typ
string- Pflicht
- ja
- Feld
destination- Typ
string- Pflicht
- nein
- Feld
giataCode- Typ
string- Pflicht
- nein
- Feld
contentVersion- Typ
integer- Pflicht
- ja
- Feld
updatedAt- Typ
string (date-time)- Pflicht
- nein
- Beschreibung
- fehlt bei contentVersion 0
- Feld
accommodationType- Typ
string- Pflicht
- nein
- Feld
chain- Typ
string- Pflicht
- nein
- Feld
categories- Typ
- array<
ContentCategory> - Pflicht
- ja
- Feld
address- Typ
ContentAddress- Pflicht
- nein
- Feld
geo- Typ
ContentGeo- Pflicht
- nein
- Feld
facts- Typ
ContentFacts- Pflicht
- nein
- Feld
texts- Typ
- array<
ContentText> - Pflicht
- ja
- Feld
media- Typ
- array<
ContentMedium> - Pflicht
- ja
- Feld
amenities- Typ
- array<
ContentAmenity> - Pflicht
- ja
- Feld
websiteReady- Typ
boolean- Pflicht
- ja
- Beschreibung
- Reifegrad webseitenbereit (Handbuch 12.3); Kennzahl, beeinflusst weder Verkauf noch Auslieferung
- Feld
missing- Typ
- array<
string> - Pflicht
- ja
- Beschreibung
- fehlende Kriterien des Reifegrads in fester Reihenfolge, leer = webseitenbereit; unbekannte Werte ignorieren (Werte: general_text | geo | category | images | amenities)
- Feld
warnings- Typ
Warnings- Pflicht
- nein
ContentChangesResponse
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
changes | array<ContentChange> | ja | |
next | string | ja | Stand fuer den naechsten Aufruf (since) |
more | boolean | ja | |
scopeHash | string | ja | |
warnings | Warnings | nein |
ContentChange
- Feld
code- Typ
string- Pflicht
- ja
- Feld
change- Typ
string- Pflicht
- ja
- Beschreibung
- (Werte: upsert | removed)
- Feld
contentVersion- Typ
integer- Pflicht
- nein
- Beschreibung
- aktuelle Version (nur bei upsert)
- Feld
reason- Typ
string- Pflicht
- nein
- Beschreibung
- optional - languages, media_ready, contract (name, destination oder giataCode aus dem Vertrag geaendert), deleted; unbekannte Werte ignorieren
ContentCatalogResponse
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
version | string | ja | |
languages | array<string> | ja | Inhaltssprachen des Veranstalters |
defaultLanguage | string | nein | |
labelLanguages | array<string> | ja | |
accommodationTypes | array<ContentCatalogEntry> | ja | |
categorySchemes | array<ContentCatalogEntry> | ja | |
textTypes | array<ContentCatalogEntry> | ja | |
mediaTypes | array<ContentCatalogEntry> | ja | |
amenityGroups | array<ContentCatalogEntry> | ja | |
amenities | array<ContentCatalogAmenity> | ja | |
warnings | Warnings | nein |
ContentCatalogEntry
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
code | string | ja | |
sort | integer | ja | |
labels | object | nein | |
locked | boolean | nein | entfallen (bleibt lesbar, nie umgedeutet) |
ContentCatalogAmenity
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
code | string | ja | |
group | string | ja | |
sort | integer | ja | |
valueType | string | ja | (Werte: flag | anzahl | meter | flaeche_m2 | meter_mit_bezug) |
unit | string | nein | |
chargeable | boolean | ja | |
labels | object | ja | |
locked | boolean | nein |
DestinationsResponse
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
destinations | array<Destination> | ja | |
warnings | Warnings | nein |
Destination
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
code | string | ja | Code, genau so in destination zu uebergeben (Gross-/Kleinschreibung zaehlt) (pattern ^[A-Za-z0-9._-]{1,64}$) |
name | string | nein | Klartext zur Anzeige; fehlt, wenn TourAPI den Code nicht kennt |
BookResponse
- Feld
booked- Typ
boolean- Pflicht
- ja
- Feld
alreadyBooked- Typ
boolean- Pflicht
- ja
- Beschreibung
- true = idempotente Wiederholung, nichts neu verkauft
- Feld
reference- Typ
string- Pflicht
- ja
- Beschreibung
- TourAPI-Buchungsreferenz (TA-...; Testbuchung SB-...)
- Feld
correlationId- Typ
string- Pflicht
- nein
- Beschreibung
- metadata.correlationId der Anfrage; fehlt sie, eine vom Server vergebene UUID. Bei alreadyBooked die am Beleg gespeicherte ID des ersten Aufrufs.
- Feld
sandbox- Typ
boolean- Pflicht
- nein
- Beschreibung
- true = Testbuchung eines Test-Keys (Sandbox, nie beim Veranstalter); fehlt live
CancelResponse
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
released | boolean | ja | |
alreadyReleased | boolean | ja | true = war schon storniert |
sandbox | boolean | nein | true = Storno einer Testbuchung (Test-Key); fehlt live |
Booking
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
reference | string | nein | |
customerReference | string | nein | eigene reference aus der Buchung; fehlt ohne reference |
hotel | string | nein | |
room | string | nein | |
group | string | nein | Kundengruppe, nur bei Gruppen-Buchungen (pattern ^[A-Za-z0-9._-]{1,64}$) |
checkIn | Date | nein | |
checkOut | Date | nein | |
quantity | integer | nein | |
status | string | nein | (Werte: confirmed | released) |
bookedAt | string (date-time) | nein | Buchungszeitpunkt, RFC 3339 in UTC (z. B. 2026-09-26T08:15:03Z) |
updatedAt | string (date-time) | nein | letzte Aenderung, bei Storno die Stornozeit; RFC 3339 in UTC |
metadata | nein | metadata aus der Buchung, unveraendert; fehlt ohne metadata | |
totalCents | integer | null (int64) | nein | Preis aus priceCheck; null = ohne priceCheck gebucht |
currency | string | nein | Vertragswaehrung aus priceCheck; leer ohne priceCheck |
board | string | nein | Verpflegung aus priceCheck; leer ohne priceCheck |
sandbox | boolean | nein | true = Testbuchung aus der Sandbox (Test-Key); fehlt live |
Error
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
errorCode | string | ja | stabiler Code, siehe Fehlerkatalog (Handbuch Abschnitt 7) |
message | string | ja | Text fuer Menschen, kann sich aendern |
warnings | Warnings | nein |
Health
- Feld
status- Typ
string- Pflicht
- ja
- Beschreibung
- (Werte: ok | degraded | down)
- Feld
reason- Typ
string- Pflicht
- nein
- Beschreibung
- nur bei degraded/down (Werte: sync_stale | replica_lag | replica_lag_unknown | view_not_loaded | health_not_configured)
- Feld
detail- Typ
string- Pflicht
- nein
- Beschreibung
- Text fuer Menschen zum Grund, kann sich aendern
- Feld
replica_lag_s- Typ
integer- Pflicht
- nein
- Beschreibung
- nur wenn der Knoten ueber eine Lese-Replica liest und deren Verzug messbar ist, in Sekunden (minimum 0)
- Feld
warnings- Typ
- array<
string> - Pflicht
- nein
- Beschreibung
- Hinweise, die den Status nicht kippen (replica_lag = Verzug der Lese-Replica ueber 5 s; db_error = letzte DB-Messung gescheitert; capacity_overlap = Bestandspruefung fand ueberlappende Kapazitaets-Zeitraeume) (Werte: replica_lag | db_error | capacity_overlap)
- Feld
db- Typ
string- Pflicht
- nein
- Beschreibung
- Ergebnis der letzten DB-Messung (im Abgleich-Takt, nicht je Aufruf); fehlt, solange nicht gemessen (Werte: ok | error)
- Feld
db_latency_ms- Typ
integer- Pflicht
- nein
- Beschreibung
- Dauer der letzten DB-Rundreise in Millisekunden, nur bei db ok (minimum 0)
- Feld
uptime_s- Typ
integer- Pflicht
- ja
- Beschreibung
- Laufzeit des Prozesses in Sekunden (minimum 0)
- Feld
version- Typ
string- Pflicht
- ja
- Beschreibung
- Build-Stand (Commit, "+" = ungesicherte Aenderungen); leer bei einem Build ohne Stand
ExportAckRequest
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
epoch | string | ja | epoch des verarbeiteten Stands |
seq | integer | ja | to_seq des verarbeiteten Stands (hoechstens der aktuelle) (minimum 0) |
ExportManifest
Inhalt von manifest.json im Paket. Kanonische Form (Reihenfolge, Einrueckung) und Grenzen im Liefervertrag (auf Anfrage beim Betreiber); der Referenz-Empfaenger lehnt jede andere Form ab.
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
format | string | ja | (const tourapi-edf-feed/1) |
tenant | string | ja | Veranstalter-Code (TOC im Dateinamen) |
scope | string | ja | Kundengruppe des Keys, leer = Basisvertrag |
epoch | string | ja | |
type | string | ja | (Werte: full | changes) |
from_seq | integer | ja | Stand, ab dem die Seite liefert (0 = erste Seite eines full) |
from_after | string | nein | nur bei einer Seite, die mitten in einem Stand beginnt |
to_seq | integer | ja | |
to_after | string | nein | nur bei einer Seite, die mitten in einem Stand endet (Folgeseite mit since=to_seq:to_after) |
more | boolean | ja | |
generated_at | string (date-time) | ja | |
rules | ExportRules | ja | |
objects | array<ExportObject> | ja | |
removed | array<ExportRemoval> | ja |
ExportRules
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
edf | string | ja | |
allotment | string | ja | |
spec | string | ja |
ExportObject
| Feld | Typ | Pflicht | Beschreibung |
|---|---|---|---|
path | string | ja | |
kind | string | ja | (Werte: hotel | allotment) |
hotel | string | ja | |
seq | integer | ja | |
sha256 | string | ja | |
bytes | integer | ja | |
source_rev | integer | ja |
ExportRemoval
- Feld
kind- Typ
string- Pflicht
- ja
- Beschreibung
- (Werte: hotel | allotment)
- Feld
hotel- Typ
string- Pflicht
- ja
- Feld
seq- Typ
integer- Pflicht
- ja
- Feld
reason- Typ
string- Pflicht
- ja
- Beschreibung
- (Werte: withdrawn:deleted | withdrawn:variant_error | withdrawn:not_exportable | withdrawn:no_currency | withdrawn:not_in_universe)