OpenAPI reference
Buyer API v1: flow, rules, error catalogue and examples – every example runs as a test on every build.
TourAPI Kaeufer-API · 1.0.0-entwurf
The descriptions in the OpenAPI file are in German (authoritative); labels are in your language.
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.
- Authentication
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
Groups
- 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)
Machine-readable: openapi.yaml
Endpoints
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.
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited | price_timeout)
Request
application/json PriceRequestResponses
- Status
- 200
- Description
- Preis
- Content
application/jsonPriceResponse- Headers
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
- Description
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- 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
- Content
application/jsonError- Headers
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
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited | price_timeout)
Request
application/json PricesRequestResponses
- Status
- 200
- Description
- Preise je Zimmer und Verpflegung
- Content
application/jsonPricesResponse- Headers
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
- Description
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- 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
- Content
application/jsonError- Headers
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.
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited)
Responses
- Status
- 200
- Description
- Ziel-Codes
- Content
application/jsonDestinationsResponse- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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).
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited | search_busy)
Request
application/json SearchRequestResponses
- Status
- 200
- Description
- Treffer und Diagnose
- Content
application/jsonSearchResponse- Headers
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
- Description
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- 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
- Content
application/jsonError- Headers
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.
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
Request
application/json OpenSearchRequestResponses
- Status
- 200
- Description
- Treffer, Abdeckung, Stand
- Content
application/jsonOpenSearchResponse- Headers
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
- Description
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Content
application/jsonError- Headers
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
- Description
- 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
- Content
application/jsonError- Headers
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.
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
Request
application/json OpenDatesRequestResponses
- Status
- 200
- Description
- Zellen, Abdeckung, Stand
- Content
application/jsonOpenDatesResponse- Headers
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
- Description
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Content
application/jsonError- Headers
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
- Description
- 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
- Content
application/jsonError- Headers
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).
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited)
Responses
- Status
- 200
- Description
- Grenzen des Keys
- Content
application/jsonLimitsResponse- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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.
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited | booking_busy | price_drift | sold_out)
Request
application/json BookRequestResponses
- Status
- 200
- Description
- Gebucht oder idempotente Wiederholung (alreadyBooked)
- Content
application/jsonBookResponse- Headers
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
- Description
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Preis geaendert (ERR_PRICE_DRIFT) oder idemKey-Konflikt (ERR_IDEMPOTENCY_MISMATCH, ERR_IDEM_KEY_RELEASED)
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Content
application/jsonError- Headers
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
- Description
- 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
- Content
application/jsonError- Headers
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
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited)
- Name
ref- In
- query
- Required
- yes
- Type
string- Description
- Buchungsreferenz (TA-...) oder die eigene reference aus der Buchung. Die TourAPI-Referenz gewinnt; passt die eigene reference zu mehreren Buchungen: 409.
Responses
- Status
- 200
- Description
- Buchung
- Content
application/jsonBooking- Headers
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
- Description
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Die eigene reference passt zu mehreren Buchungen (ERR_REFERENCE_AMBIGUOUS); message nennt die TourAPI-Referenzen. Mit der TourAPI-Referenz (TA-...) lesen.
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Content
application/jsonError- Headers
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
- Description
- 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
- Content
application/jsonError- Headers
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).
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited | booking_busy)
Request
application/json CancelRequestResponses
- Status
- 200
- Description
- Storniert oder war schon storniert (alreadyReleased)
- Content
application/jsonCancelResponse- Headers
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
- Description
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Content
application/jsonError- Headers
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
- Description
- 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
- Content
application/jsonError- Headers
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).
Reachable without an API key.
Responses
- Status
- 200
- Description
- gesund (status ok)
- Content
application/jsonHealth- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- nicht gesund (status degraded oder down, reason nennt den Grund)
- Content
application/jsonHealth- Headers
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).
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited)
- Name
epoch- In
- query
- Required
- no
- Type
string- Description
- nur Folgeseiten - epoch der ersten Seite
- Name
since- In
- query
- Required
- no
- Type
string- Description
- 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- In
- query
- Required
- no
- Type
string- Description
- 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- In
- query
- Required
- no
- Type
integer- Description
- Seitengroesse in Bytes (mindestens eine Datei je Seite, mindestens 65536); ohne = nur die festen Grenzen (10.000 Dateien, 1 GiB entpackt) (minimum 65536)
Responses
- Status
- 200
- Description
- 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.
- Content
application/zipstring– Zip-Container; contentSchema beschreibt dessen ersten Eintrag manifest.json (ExportManifest)- Headers
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
- Description
- Stand-Parameter fehlt oder unlesbar (ERR_EXPORT_BAD_CURSOR) bzw. Body/Query unlesbar (ERR_BAD_REQUEST)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- Key ohne Export-Recht (ERR_EXPORT_NOT_ALLOWED), Veranstalter gesperrt (ERR_TENANT_SUSPENDED) oder Kundengruppe inaktiv (ERR_KEY_GROUP_INACTIVE)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- epoch passt nicht oder Stand (since, until, seq der Quittung) groesser als der aktuelle Lieferstand (ERR_EXPORT_EPOCH) - full abrufen
- Content
application/jsonError- Headers
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
- Description
- Stand aelter als die Aufbewahrung (ERR_EXPORT_CURSOR_EXPIRED) - full abrufen
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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.
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited)
- Name
epoch- In
- query
- Required
- yes
- Type
string- Description
- epoch aus dem letzten Manifest
- Name
since- In
- query
- Required
- yes
- Type
string- Description
- 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- In
- query
- Required
- no
- Type
string- Description
- 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- In
- query
- Required
- no
- Type
integer- Description
- Seitengroesse in Bytes (mindestens eine Datei je Seite, mindestens 65536); ohne = nur die festen Grenzen (10.000 Dateien, 1 GiB entpackt) (minimum 65536)
Responses
- Status
- 200
- Description
- 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.
- Content
application/zipstring– Zip-Container; contentSchema beschreibt dessen ersten Eintrag manifest.json (ExportManifest)- Headers
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
- Description
- nichts neu (since steht auf dem Ziel); ohne Kettenschluessel
- Headers
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
- Description
- Stand-Parameter fehlt oder unlesbar (ERR_EXPORT_BAD_CURSOR) bzw. Body/Query unlesbar (ERR_BAD_REQUEST)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- Key ohne Export-Recht (ERR_EXPORT_NOT_ALLOWED), Veranstalter gesperrt (ERR_TENANT_SUSPENDED) oder Kundengruppe inaktiv (ERR_KEY_GROUP_INACTIVE)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- epoch passt nicht oder Stand (since, until, seq der Quittung) groesser als der aktuelle Lieferstand (ERR_EXPORT_EPOCH) - full abrufen
- Content
application/jsonError- Headers
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
- Description
- Stand aelter als die Aufbewahrung (ERR_EXPORT_CURSOR_EXPIRED) - full abrufen
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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).
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited)
Request
application/json ExportAckRequestResponses
- Status
- 204
- Description
- quittiert
- Headers
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
- Description
- Stand-Parameter fehlt oder unlesbar (ERR_EXPORT_BAD_CURSOR) bzw. Body/Query unlesbar (ERR_BAD_REQUEST)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- Key ohne Export-Recht (ERR_EXPORT_NOT_ALLOWED), Veranstalter gesperrt (ERR_TENANT_SUSPENDED) oder Kundengruppe inaktiv (ERR_KEY_GROUP_INACTIVE)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- epoch passt nicht oder Stand (since, until, seq der Quittung) groesser als der aktuelle Lieferstand (ERR_EXPORT_EPOCH) - full abrufen
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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.
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited)
- Name
pageSize- In
- query
- Required
- no
- Type
integer- Description
- Seitengroesse 1-1000 (Standard 500) (minimum 1; maximum 1000; default 500)
- Name
cursor- In
- query
- Required
- no
- Type
string- Description
- nextCursor der Vorseite, unveraendert (versiegelt, an den Key gebunden) (pattern ^cv1\.[A-Za-z0-9_-]+$)
Responses
- Status
- 200
- Description
- Eine Seite des Verzeichnisses
- Content
application/jsonContentDirectoryResponse- Headers
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
- Description
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Content
application/jsonError- Headers
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
- Description
- Inhalte bzw. Bild-Adressen auf diesem Knoten nicht eingerichtet (ERR_CONTENT_NOT_READY)
- Content
application/jsonError- Headers
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.
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited)
- Name
code- In
- path
- Required
- yes
- Type
string- Description
- Hotel-Code aus dem Verzeichnis
- Name
lang- In
- query
- Required
- no
- Type
string- Description
- 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- In
- header
- Required
- no
- Type
string- Description
- ETag einer frueheren Antwort
Responses
- Status
- 200
- Description
- Inhalt des Hotels
- Content
application/jsonContentHotel- Headers
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
- Description
- unveraendert seit dem genannten ETag (kein Koerper)
- Headers
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
- Description
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Hotel, Zimmer oder Buchung fuer diesen Key nicht vorhanden
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Content
application/jsonError- Headers
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
- Description
- Inhalte bzw. Bild-Adressen auf diesem Knoten nicht eingerichtet (ERR_CONTENT_NOT_READY)
- Content
application/jsonError- Headers
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).
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited)
- Name
pageSize- In
- query
- Required
- no
- Type
integer- Description
- Seitengroesse 1-1000 (Standard 500) (minimum 1; maximum 1000; default 500)
- Name
since- In
- query
- Required
- yes
- Type
string- Description
- feedToken des Verzeichnisses oder next der Vorseite (versiegelt, an den Key gebunden) (pattern ^cf1\.[A-Za-z0-9_-]+$)
Responses
- Status
- 200
- Description
- Eine Seite der Aenderungen
- Content
application/jsonContentChangesResponse- Headers
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
- Description
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- since liegt vor dem Aufbewahrungshorizont des Feeds (ERR_CONTENT_CURSOR_EXPIRED) - Verzeichnis neu holen
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Content
application/jsonError- Headers
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
- Description
- Inhalte bzw. Bild-Adressen auf diesem Knoten nicht eingerichtet (ERR_CONTENT_NOT_READY)
- Content
application/jsonError- Headers
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).
Parameters
- Name
X-TourAPI-Require-Mode- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: test | live)
- Name
X-TourAPI-Sandbox-Scenario- In
- header
- Required
- no
- Type
string- Description
- 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. (Values: rate_limited)
- Name
lang- In
- query
- Required
- no
- Type
string- Description
- Beschriftungssprachen (de, en, tr), kommagetrennt; ohne = alle
- Name
If-None-Match- In
- header
- Required
- no
- Type
string- Description
- ETag einer frueheren Antwort
Responses
- Status
- 200
- Description
- Kataloge
- Content
application/jsonContentCatalogResponse- Headers
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
- Description
- unveraendert seit dem genannten ETag (kein Koerper)
- Headers
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
- Description
- Body kein JSON oder zu gross, Pflichtparameter fehlt (ERR_BAD_REQUEST, ERR_QUANTITY_INVALID, ERR_INVALID_IDEM_KEY, ...)
- Content
application/jsonError- Headers
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
- Description
- Key fehlt, unbekannt oder widerrufen (ERR_UNAUTHORIZED). Nach vielen Abweisungen von derselben Absender-IP kommt die Antwort verzoegert (hoechstens 1 s, Handbuch Abschnitt 8)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Anfrage fachlich nicht erfuellbar oder Feld ungueltig, u. a. Aufenthalt durch eine Verkaufsregel des Zimmers ausgeschlossen (Handbuch 3.4; Fehlerkatalog Abschnitt 7)
- Content
application/jsonError- Headers
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
- Description
- 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)
- Content
application/jsonError- Headers
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
- Description
- Interner Fehler (ERR_INTERNAL) oder Kontingent-Invariante verletzt (ERR_INVENTORY_DRIFT, ERR_RELEASE_DRIFT, ...)
- Content
application/jsonError- Headers
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
- Description
- Inhalte bzw. Bild-Adressen auf diesem Knoten nicht eingerichtet (ERR_CONTENT_NOT_READY)
- Content
application/jsonError- Headers
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
Schemas
Date
Kalendertag JJJJ-MM-TT
- Type
string (date)- Rules
- pattern ^[0-9]{4}-[0-9]{2}-[0-9]{2}$
Cents
Betrag in ganzen Cent der Vertragswaehrung
- Type
integer (int64)
Warnings
Hinweise zur Anfrage (ignorierte Felder, Waehrung, now). Bitte loggen.
- Type
- array<
string>
Traveller
| Field | Type | Required | Description |
|---|---|---|---|
age | integer | yes | Alter am Anreisetag (minimum 0; maximum 120) |
name | string | no | nur Anzeige, ohne Wirkung auf den Preis |
type | string | no | nur Anzeige (adult, child), ohne Wirkung auf den Preis |
Occupancy
| Field | Type | Required | Description |
|---|---|---|---|
travellers | array<Traveller> | yes | (minItems 1; maxItems 20) |
Availability
- Field
configured- Type
boolean- Required
- yes
- Description
- fuer das Zimmer ist Kontingent hinterlegt
- Field
available- Type
boolean- Required
- yes
- Description
- 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
- Field
minFree- Type
integer- Required
- yes
- Description
- 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
| Field | Type | Required | Description |
|---|---|---|---|
hotel | string | yes | |
room | string | no | leer = guenstigstes verfuegbares Zimmer, das die Belegung zulaesst |
board | string | yes | Verpflegungs-Code |
checkIn | Date | yes | |
checkOut | Date | yes | |
now | string | no | wird ignoriert (Stichtag = Serverdatum); abweichend -> Hinweis (deprecated) |
currency | string | no | Wunschwaehrung, nur Hinweis bei Abweichung |
occupancy | Occupancy | yes |
PricesRequest
| Field | Type | Required | Description |
|---|---|---|---|
hotel | string | yes | |
room | string | no | leer = alle Zimmer |
boards | array<string> | no | leer = alle Verpflegungen des Zimmers |
board | string | no | filtert hier nicht (Hinweis in warnings); boards benutzen (deprecated) |
checkIn | Date | yes | |
checkOut | Date | yes | |
now | string | no | wird ignoriert (Stichtag = Serverdatum) (deprecated) |
currency | string | no | |
occupancy | Occupancy | yes |
SearchRequest
- Field
destination- Type
string- Required
- no
- Description
- 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
- Field
includeUnavailable- Type
boolean- Required
- no
- Description
- nicht buchbare Hotels gekennzeichnet mitliefern (default false)
- Field
board- Type
string- Required
- yes
- Field
checkIn- Type
Date- Required
- yes
- Field
checkOut- Type
Date- Required
- yes
- Field
now- Type
string- Required
- no
- Description
- wird ignoriert (Stichtag = Serverdatum) (deprecated)
- Field
currency- Type
string- Required
- no
- Field
occupancy- Type
Occupancy- Required
- yes
- Field
pageSize- Type
integer- Required
- no
- Description
- Hotels je Seite (minimum 1; maximum 100; default 50)
- Field
cursor- Type
string- Required
- no
- Description
- nextCursor der Vorseite, unveraendert
PriceCheck
| Field | Type | Required | Description |
|---|---|---|---|
board | string | yes | |
now | string | no | leer lassen; abweichend vom Stichtag -> ERR_NOW_MISMATCH |
currency | string | no | muss zur Vertragswaehrung passen (ERR_CURRENCY_NOT_AVAILABLE) (maxLength 3) |
occupancy | Occupancy | yes | |
expectedCents | Cents | yes | |
tolerancePercent | number | yes | erlaubte Abweichung in Prozent (minimum 0) |
BookRequest
- Field
hotel- Type
string- Required
- yes
- Field
room- Type
string- Required
- yes
- Field
checkIn- Type
Date- Required
- yes
- Field
checkOut- Type
Date- Required
- yes
- Field
quantity- Type
integer- Required
- yes
- Description
- Anzahl Zimmer (minimum 1; maximum 1000000)
- Field
idemKey- Type
string- Required
- yes
- Description
- eigener eindeutiger Schluessel des Vorgangs (Idempotenz); laenger -> 422 ERR_VALIDATION (maxLength 128)
- Field
reference- Type
string- Required
- no
- Description
- eigene Buchungsreferenz; laenger -> 422 ERR_VALIDATION (maxLength 128)
- Field
leadPaxName- Type
string- Required
- no
- Description
- laenger -> 422 ERR_VALIDATION (maxLength 255)
- Field
metadata- Required
- no
- Description
- freies JSON (ueblich ein Objekt), gespeichert und zurueckgegeben, nicht ausgewertet; metadata.correlationId (bis 64 Zeichen, laenger -> 422 ERR_VALIDATION) wird uebernommen
- Field
priceCheck- Type
PriceCheck- Required
- no
CancelRequest
| Field | Type | Required | Description |
|---|---|---|---|
idemKey | string | yes | laenger -> 422 ERR_VALIDATION (maxLength 128) |
Rounding
Rundungsregel aller Cent-Betraege der Antwort (dieselbe, die der EDF-Export deklariert)
| Field | Type | Required | Description |
|---|---|---|---|
mode | string | yes | kaufmaennisch, 0,5 wird vom Nullpunkt weg gerundet (Values: Commercial) |
decimalPlaces | integer | yes | (Values: 2) |
scope | string | yes | je Reisendem wird die exakte Summe seiner Posten einmal gerundet (Values: 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.
- Field
chargeType- Type
string- Required
- no
- Description
- BaseCharge, PhantomBaseCharge, GuestCharge, BoardCharge oder Extra
- Field
code- Type
string- Required
- no
- Field
traveller- Type
integer- Required
- no
- Description
- Index des Reisenden in perTravellerCents (Alter absteigend, 0 = aeltester); Zimmerposten 0
- Field
night- Type
integer- Required
- no
- Description
- Index der Nacht ab 0; -1 = Posten je Aufenthalt
- Field
amountCents- Type
Cents- Required
- no
- Field
amountExact- Type
string- Required
- no
- Description
- 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,}$)
- Field
applianceCode- Type
string- Required
- no
- Description
- nur bei Extras
- Field
variant- Type
string- Required
- no
- Description
- nur bei Extras einer Extra-Familie (mehrere Extras mit demselben applianceCode): die Variante des Extras; erst applianceCode und variant zusammen nennen das Extra.
- Field
freeNight- Type
boolean- Required
- no
- Description
- 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.
- Field
code- Type
string- Required
- no
- Field
variant- Type
string- Required
- no
- Description
- nur bei Extras einer Extra-Familie (mehrere Extras mit demselben code): die Variante des Extras; erst code und variant zusammen nennen das Extra.
- Field
name- Type
string- Required
- no
- Field
amountCents- Type
Cents- Required
- no
- Field
mandatory- Type
boolean- Required
- no
- Field
inTotal- Type
boolean- Required
- no
- Description
- false = optionales Extra, nicht im Gesamtpreis
- Field
eventStart- Type
Date- Required
- no
- Field
eventEnd- Type
Date- Required
- no
PriceResponse
- Field
room- Type
string- Required
- yes
- Description
- 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
- Field
currency- Type
string- Required
- yes
- Description
- Vertragswaehrung; leer = am Vertrag nicht hinterlegt
- Field
totalCents- Type
Cents- Required
- yes
- Field
rounding- Type
Rounding- Required
- yes
- Field
perTravellerCents- Type
- array<
Cents> - Required
- yes
- Description
- je Reisendem (Alter absteigend) die exakte Summe seiner Posten, einmal gerundet; totalCents = Summe; Zimmerpreis steht beim ersten Reisenden
- Field
breakdown- Type
- array<
BreakdownLine> - Required
- yes
- Field
separateExtras- Type
- array<
SeparateExtra> - Required
- no
- Field
availability- Type
Availability- Required
- yes
- Field
warnings- Type
Warnings- Required
- no
BoardPrice
- Field
board- Type
string- Required
- no
- Field
globalType- Type
string- Required
- no
- Description
- 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
- Field
totalCents- Type
Cents- Required
- no
- Field
perTravellerCents- Type
- array<
Cents> - Required
- no
- Field
separateExtras- Type
- array<
SeparateExtra> - Required
- no
- Field
availability- Type
Availability- Required
- no
RoomPrices
- Field
room- Type
string- Required
- no
- Field
boards- Type
- array<
BoardPrice> - Required
- no
- Field
errors- Type
- array<
BoardError> - Required
- no
- Description
- 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
- Field
board- Type
string- Required
- yes
- Field
globalType- Type
string- Required
- no
- Description
- 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
- Field
errorCode- Type
string- Required
- yes
- Description
- 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)
- Field
message- Type
string- Required
- yes
PricesResponse
| Field | Type | Required | Description |
|---|---|---|---|
currency | string | yes | |
rounding | Rounding | yes | |
rooms | array<RoomPrices> | yes | |
warnings | Warnings | no |
SearchResult
- Field
hotel- Type
string- Required
- no
- Field
name- Type
string- Required
- no
- Field
room- Type
string- Required
- no
- Description
- Zimmer, auf das sich fromTotalCents bezieht (das guenstigste verfuegbare; bei bookable=false das guenstigste)
- Field
currency- Type
string- Required
- no
- Field
fromTotalCents- Type
Cents- Required
- no
- Field
availability- Type
Availability- Required
- no
- Field
bookable- Type
boolean- Required
- no
- Field
reason- Type
string- Required
- no
- Description
- 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)
- Field
priceInformational- Type
boolean- Required
- no
- Description
- true = nur Preisauskunft, kein buchbares Angebot
SearchSkip
| Field | Type | Required | Description |
|---|---|---|---|
reason | string | no | |
count | integer | no |
SearchDiagnostics
- Field
considered- Type
integer- Required
- no
- Description
- gepruefte Hotels = returned + skipped
- Field
returned- Type
integer- Required
- no
- Field
skipped- Type
integer- Required
- no
- Field
reasons- Type
- array<
SearchSkip> - Required
- no
- Field
timeBudgetExhausted- Type
boolean- Required
- no
- Description
- Seite wegen Zeitbudget kuerzer als pageSize
- Field
roomErrors- Type
- array<
SearchSkip> - Required
- no
- Description
- 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
| Field | Type | Required | Description |
|---|---|---|---|
results | array<SearchResult> | yes | |
diagnostics | SearchDiagnostics | yes | |
warnings | Warnings | no | |
nextCursor | string | no | gesetzt, solange weitere Hotels zu pruefen sind |
OpenSearchRequest
- Field
destinations- Type
- array<
string> - Required
- no
- Description
- Ziel-Codes wie GET /v1/destinations (Vereinigung); nicht zusammen mit hotels; hoechstens laut Suchprofil (minItems 1)
- Field
hotels- Type
- array<
string> - Required
- no
- Description
- Hotel-Codes des Keys; nicht zusammen mit destinations. Ohne beides der ganze Bestand des Keys (nur wenn das Suchprofil alle Ziele erlaubt) (minItems 1)
- Field
arrivalFrom- Type
Date- Required
- yes
- Field
arrivalTo- Type
Date- Required
- yes
- Field
nightsMin- Type
integer- Required
- yes
- Description
- (minimum 1; maximum 30)
- Field
nightsMax- Type
integer- Required
- yes
- Description
- (minimum 1; maximum 30)
- Field
occupancy- Type
Occupancy- Required
- yes
- Field
boards- Type
- array<
string> - Required
- no
- Description
- Verpflegungs-Codes genau wie im Vertrag; ohne = alle (minItems 1)
- Field
boardTypes- Type
- array<
string> - Required
- no
- Description
- Verpflegungsart wie im EDF-Export; mit boards zusammen muessen beide passen (minItems 1) (Values: AO | BB | HB | HB+ | FB | FB+ | SC | AI | AI+ | XX)
- Field
minTotalCents- Type
Cents- Required
- no
- Field
maxTotalCents- Type
Cents- Required
- no
- Field
currency- Type
string- Required
- no
- Description
- Filter auf die Vertragswaehrung (keine Umrechnung); Pflicht, wenn der Suchraum mehrere Waehrungen hat (ERR_CURRENCY_REQUIRED)
- Field
sort- Type
string- Required
- no
- Description
- (Values: price | pricePerNight | hotel; default price)
- Field
pageSize- Type
integer- Required
- no
- Description
- 1 bis Suchprofil; ohne Angabe min(20, Suchprofil) (minimum 1)
- Field
cursor- Type
string- Required
- no
- Description
- nextCursor der Vorseite, unveraendert (15 Minuten gueltig)
- Field
category- Type
OpenSearchCategoryFilter- Required
- no
- Field
regions- Type
- array<
string> - Required
- no
- Description
- 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)
- Field
geo- Type
OpenSearchGeoFilter- Required
- no
OpenSearchCategoryFilter
Offizielle Kategorie aus dem Hotelstamm; Grenzen eingeschlossen, 4 Superior zaehlt als 4. Hotels ohne offizielle Kategorie zaehlen mit Grund ERR_NO_CATEGORY
| Field | Type | Required | Description |
|---|---|---|---|
scheme | string | yes | (Values: stars | keys) |
min | number | no | ohne = 1; Nullen am Ende erlaubt (3.50 = 3.5) (minimum 1; maximum 5) |
max | number | no | 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
| Field | Type | Required | Description |
|---|---|---|---|
lat | number | yes | Dezimalgrad, hoechstens 6 Nachkommastellen (minimum -90; maximum 90) |
lon | number | yes | Dezimalgrad, hoechstens 6 Nachkommastellen (minimum -180; maximum 180) |
radiusKm | number | yes | Kilometer, hoechstens 3 Nachkommastellen (ganze Meter) (minimum 0.001; maximum 500) |
OpenSearchOffer
| Field | Type | Required | Description |
|---|---|---|---|
checkIn | Date | yes | |
checkOut | Date | yes | |
nights | integer | yes | |
room | string | yes | |
board | string | yes | |
boardType | string | yes | Verpflegungsart wie im EDF-Export |
currency | string | yes | |
totalCents | Cents | yes | |
perTravellerCents | array<Cents> | yes | |
availability | Availability | yes |
OpenSearchAlternatives
Vorpruefung ohne Preis (Obergrenze, keine Preis- oder Trefferaussage)
| Field | Type | Required | Description |
|---|---|---|---|
dates | integer | no | |
boards | array<string> | no | |
boardTypes | array<string> | no | |
rooms | integer | no |
OpenSearchResult
| Field | Type | Required | Description |
|---|---|---|---|
hotel | string | yes | |
best | OpenSearchOffer | yes | |
alternatives | OpenSearchAlternatives | yes |
OpenSearchCoverage
- Field
complete- Type
boolean- Required
- no
- Description
- false = das Zeitbudget hat die Seite gekuerzt; die Treffer sind trotzdem exakt und in bewiesener Reihenfolge
- Field
timeBudgetExhausted- Type
boolean- Required
- no
- Field
standChanged- Type
boolean- Required
- no
- Description
- Datenstand seit der Vorseite gewechselt; Folgeseite im neuen Stand ab derselben Stelle
- Field
hotelsInScope- Type
integer- Required
- no
- Field
hotelsFeasible- Type
integer- Required
- no
- Description
- Hotels mit mindestens einem Termin laut Vorpruefung (Obergrenze der Trefferzahl)
- Field
hotelsPriced- Type
integer- Required
- no
- Field
undecided- Type
integer- Required
- no
- Field
reasons- Type
- array<
SearchSkip> - Required
- no
- Field
priceReasons- Type
- array<
SearchSkip> - Required
- no
- Field
roomErrors- Type
- array<
SearchSkip> - Required
- no
OpenSearchResponse
| Field | Type | Required | Description |
|---|---|---|---|
results | array<OpenSearchResult> | yes | |
coverage | OpenSearchCoverage | yes | |
stand | string | yes | Kennung des Datenstands der Seite (undurchsichtig) |
nextCursor | string | no | gesetzt, solange weitere Treffer folgen koennen |
warnings | Warnings | no |
OpenDatesRequest
- Field
hotel- Type
string- Required
- yes
- Description
- Hotel-Code des Keys (z. B. aus der offenen Suche)
- Field
arrivalFrom- Type
Date- Required
- yes
- Field
arrivalTo- Type
Date- Required
- yes
- Field
nightsMin- Type
integer- Required
- yes
- Description
- (minimum 1; maximum 30)
- Field
nightsMax- Type
integer- Required
- yes
- Description
- (minimum 1; maximum 30)
- Field
occupancy- Type
Occupancy- Required
- yes
- Field
boards- Type
- array<
string> - Required
- no
- Description
- Verpflegungs-Codes genau wie im Vertrag; jeder muss im Hotel angeboten werden (ERR_BOARD_NOT_OFFERED); ohne = alle (minItems 1)
- Field
boardTypes- Type
- array<
string> - Required
- no
- Description
- Verpflegungsart wie im EDF-Export; mit boards zusammen muessen beide passen (minItems 1) (Values: AO | BB | HB | HB+ | FB | FB+ | SC | AI | AI+ | XX)
- Field
rooms- Type
- array<
string> - Required
- no
- Description
- Zimmer-Codes des Hotels (unbekannt -> 404 ERR_ROOM_NOT_FOUND); ohne = alle (minItems 1)
- Field
minTotalCents- Type
Cents- Required
- no
- Field
maxTotalCents- Type
Cents- Required
- no
- Field
currency- Type
string- Required
- no
- Description
- Filter auf die Vertragswaehrung; rechnet das Hotel anders oder ohne gueltige Waehrung -> 422 ERR_CURRENCY_NOT_AVAILABLE
- Field
perBoard- Type
boolean- Required
- no
- Description
- je Termin eine Zelle je Verpflegung (Reihenfolge in boards der Antwort) (default false)
- Field
category- Type
OpenSearchCategoryFilter- Required
- no
- Field
regions- Type
- array<
string> - Required
- no
- Description
- 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)
- Field
geo- Type
OpenSearchGeoFilter- Required
- no
OpenDatesCell
- Field
checkIn- Type
Date- Required
- yes
- Field
checkOut- Type
Date- Required
- yes
- Field
nights- Type
integer- Required
- yes
- Field
status- Type
string- Required
- yes
- Description
- offer = Angebot (exakt wie /v1/price), none = kein Angebot (reason), unchecked = Zeitbudget abgelaufen, nie als none (Values: offer | none | unchecked)
- Field
room- Type
string- Required
- no
- Field
board- Type
string- Required
- no
- Description
- Verpflegung des Angebots; mit perBoard die Verpflegung der Zelle (auch bei none/unchecked)
- Field
boardType- Type
string- Required
- no
- Field
totalCents- Type
Cents- Required
- no
- Field
perTravellerCents- Type
- array<
Cents> - Required
- no
- Field
availability- Type
Availability- Required
- no
- Field
reason- Type
string- Required
- no
- Description
- Fehlercode wie /v1/price (nur none); mit Filtern nach Hotelstamm auch ERR_NO_CATEGORY, ERR_NO_REGION, ERR_NO_GEO
OpenDatesCoverage
| Field | Type | Required | Description |
|---|---|---|---|
complete | boolean | no | false = Zellen sind unchecked (Zeitbudget) |
timeBudgetExhausted | boolean | no | |
cells | integer | no | |
offers | integer | no | |
none | integer | no | |
unchecked | integer | no | |
roomErrors | array<SearchSkip> | no |
OpenDatesResponse
- Field
hotel- Type
string- Required
- yes
- Field
currency- Type
string- Required
- yes
- Field
stand- Type
string- Required
- yes
- Description
- Kennung des Datenstands (undurchsichtig, wie in der offenen Suche)
- Field
boards- Type
- array<
string> - Required
- no
- Description
- nur mit perBoard - die Verpflegungen je Termin in Zellen-Reihenfolge = Vertragsreihenfolge (erstes Auftreten ueber die Zimmer, RO zuerst, wie /v1/prices)
- Field
cells- Type
- array<
OpenDatesCell> - Required
- yes
- Description
- dicht (checkIn, nights, mit perBoard Verpflegung); leer nur, wenn das Hotel ausserhalb der Filter nach Hotelstamm liegt
- Field
coverage- Type
OpenDatesCoverage- Required
- yes
- Field
warnings- Type
Warnings- Required
- no
LimitsRate
| Field | Type | Required | Description |
|---|---|---|---|
perSecond | number | no | |
burst | integer | no | |
scope | string | no | key = je Key und Knoten; testCircle = gemeinsamer Topf aller Test-Keys des Kreises (Values: key | testCircle) |
LimitsExport
| Field | Type | Required | Description |
|---|---|---|---|
allowed | boolean | no |
LimitsContent
Zugang zur Content-API (/v1/content/*) mit diesem Key - Freischaltung des Veranstalters und Inhalts-Recht des Keys; ohne Grund.
| Field | Type | Required | Description |
|---|---|---|---|
allowed | boolean | yes |
LimitsOpenSearch
Ohne Recht nur allowed=false; sonst alle Grenzen. destinations fehlt bei allDestinations=true.
| Field | Type | Required | Description |
|---|---|---|---|
allowed | boolean | yes | |
maxWindowDays | integer | no | |
nightsMin | integer | no | |
nightsMax | integer | no | |
maxNightsSpan | integer | no | |
maxDestinations | integer | no | |
maxHotels | integer | no | |
maxCandidates | integer | no | |
maxPageSize | integer | no | |
timeBudgetMs | integer | no | |
rate | integer | no | |
burst | integer | no | |
concurrency | integer | no | |
matrixMaxWindowDays | integer | no | |
matrixMaxCells | integer | no | |
allDestinations | boolean | no | |
destinations | array<string> | no |
LimitsResponse
| Field | Type | Required | Description |
|---|---|---|---|
rate | LimitsRate | yes | |
export | LimitsExport | yes | |
content | LimitsContent | yes | |
openSearch | LimitsOpenSearch | yes |
ContentDirectoryResponse
| Field | Type | Required | Description |
|---|---|---|---|
hotels | array<ContentDirectoryHotel> | yes | |
nextCursor | string | no | fehlt auf der letzten Seite |
feedToken | string | yes | Stand fuer /v1/content/changes (since) |
scopeHash | string | yes | wechselt mit der Hotelmenge des Keys |
warnings | Warnings | no |
ContentDirectoryHotel
- Field
code- Type
string- Required
- yes
- Field
name- Type
string- Required
- yes
- Field
destination- Type
string- Required
- no
- Field
contentVersion- Type
integer- Required
- yes
- Description
- zaehlt jede Aenderung der Auslieferung; 0 = noch kein Inhalt
- Field
updatedAt- Type
string (date-time)- Required
- no
- Description
- letzte Aenderung (UTC); fehlt bei contentVersion 0
- Field
category- Type
ContentCategory- Required
- no
- Field
geo- Type
ContentGeo- Required
- no
- Field
websiteReady- Type
boolean- Required
- yes
- Description
- Reifegrad webseitenbereit (Handbuch 12.3); Kennzahl, beeinflusst weder Verkauf noch Auslieferung
- Field
missing- Type
- array<
string> - Required
- yes
- Description
- fehlende Kriterien des Reifegrads in fester Reihenfolge, leer = webseitenbereit; unbekannte Werte ignorieren (Values: general_text | geo | category | images | amenities)
ContentCategory
| Field | Type | Required | Description |
|---|---|---|---|
kind | string | yes | (Values: official | operator) |
scheme | string | yes | (Values: stars | keys) |
value | number | yes | 1 bis 5 in halben Schritten |
superior | boolean | no | nur bei stars; fehlt = false |
ContentGeo
| Field | Type | Required | Description |
|---|---|---|---|
lat | number | yes | |
lon | number | yes | |
precision | string | no | (Values: address | street | locality | unknown) |
ContentAddress
| Field | Type | Required | Description |
|---|---|---|---|
street | string | no | |
postalCode | string | no | |
city | string | no | |
region | string | no | |
country | string | no | ISO 3166-1 alpha-2 |
ContentFacts
| Field | Type | Required | Description |
|---|---|---|---|
rooms | integer | no | |
floors | integer | no | |
built | integer | no | |
renovated | integer | no | |
checkInFrom | string | no | HH:MM |
checkOutUntil | string | no | HH:MM |
minAge | integer | no |
ContentText
| Field | Type | Required | Description |
|---|---|---|---|
type | string | yes | Texttyp aus dem Katalog (GENERAL, LOCATION, ...) |
lang | string | yes | gelieferte Sprache |
fallbackFrom | string | no | angefragte Sprache, fuer die dieser Text einspringt |
html | string | yes | nur p, br, b, strong, i, em, ul, ol, li ohne Attribute |
machineTranslated | boolean | no | |
updatedAt | string (date-time) | yes |
ContentLabel
| Field | Type | Required | Description |
|---|---|---|---|
lang | string | yes | |
fallbackFrom | string | no | |
text | string | yes |
ContentFocus
| Field | Type | Required | Description |
|---|---|---|---|
x | integer | yes | (minimum 0; maximum 100) |
y | integer | yes | (minimum 0; maximum 100) |
ContentVariant
| Field | Type | Required | Description |
|---|---|---|---|
name | string | yes | (Values: w320 | w640 | w1024 | w1600 | w2048) |
width | integer | yes | |
height | integer | yes | |
bytes | integer | yes | |
url | string (uri) | yes |
ContentMedium
| Field | Type | Required | Description |
|---|---|---|---|
id | string | yes | stabil, solange das Bild im Hotel bleibt |
type | string | yes | Bildtyp aus dem Katalog |
order | integer | yes | 1 = Hauptbild |
roomCode | string | no | |
width | integer | yes | |
height | integer | yes | |
focus | ContentFocus | no | |
titles | array<ContentLabel> | yes | |
alts | array<ContentLabel> | yes | |
credit | string | no | |
attributionRequired | boolean | yes | true = credit muss neben dem Bild stehen |
variants | array<ContentVariant> | yes |
ContentAmenity
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | |
available | boolean | yes | false = ausdruecklich nicht vorhanden (fehlendes Merkmal = unbekannt) |
count | integer | no | |
distanceM | integer | no | |
areaM2 | integer | no | |
ref | string | no | Bezug der Entfernung (IATA-Code des Flughafens) |
charge | string | no | (Values: included | extra | unknown) |
ContentHotel
Inhalt eines Hotels. Kein Feld fuer Kontaktdaten.
- Field
code- Type
string- Required
- yes
- Field
name- Type
string- Required
- yes
- Field
destination- Type
string- Required
- no
- Field
giataCode- Type
string- Required
- no
- Field
contentVersion- Type
integer- Required
- yes
- Field
updatedAt- Type
string (date-time)- Required
- no
- Description
- fehlt bei contentVersion 0
- Field
accommodationType- Type
string- Required
- no
- Field
chain- Type
string- Required
- no
- Field
categories- Type
- array<
ContentCategory> - Required
- yes
- Field
address- Type
ContentAddress- Required
- no
- Field
geo- Type
ContentGeo- Required
- no
- Field
facts- Type
ContentFacts- Required
- no
- Field
texts- Type
- array<
ContentText> - Required
- yes
- Field
media- Type
- array<
ContentMedium> - Required
- yes
- Field
amenities- Type
- array<
ContentAmenity> - Required
- yes
- Field
websiteReady- Type
boolean- Required
- yes
- Description
- Reifegrad webseitenbereit (Handbuch 12.3); Kennzahl, beeinflusst weder Verkauf noch Auslieferung
- Field
missing- Type
- array<
string> - Required
- yes
- Description
- fehlende Kriterien des Reifegrads in fester Reihenfolge, leer = webseitenbereit; unbekannte Werte ignorieren (Values: general_text | geo | category | images | amenities)
- Field
warnings- Type
Warnings- Required
- no
ContentChangesResponse
| Field | Type | Required | Description |
|---|---|---|---|
changes | array<ContentChange> | yes | |
next | string | yes | Stand fuer den naechsten Aufruf (since) |
more | boolean | yes | |
scopeHash | string | yes | |
warnings | Warnings | no |
ContentChange
- Field
code- Type
string- Required
- yes
- Field
change- Type
string- Required
- yes
- Description
- (Values: upsert | removed)
- Field
contentVersion- Type
integer- Required
- no
- Description
- aktuelle Version (nur bei upsert)
- Field
reason- Type
string- Required
- no
- Description
- optional - languages, media_ready, contract (name, destination oder giataCode aus dem Vertrag geaendert), deleted; unbekannte Werte ignorieren
ContentCatalogResponse
| Field | Type | Required | Description |
|---|---|---|---|
version | string | yes | |
languages | array<string> | yes | Inhaltssprachen des Veranstalters |
defaultLanguage | string | no | |
labelLanguages | array<string> | yes | |
accommodationTypes | array<ContentCatalogEntry> | yes | |
categorySchemes | array<ContentCatalogEntry> | yes | |
textTypes | array<ContentCatalogEntry> | yes | |
mediaTypes | array<ContentCatalogEntry> | yes | |
amenityGroups | array<ContentCatalogEntry> | yes | |
amenities | array<ContentCatalogAmenity> | yes | |
warnings | Warnings | no |
ContentCatalogEntry
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | |
sort | integer | yes | |
labels | object | no | |
locked | boolean | no | entfallen (bleibt lesbar, nie umgedeutet) |
ContentCatalogAmenity
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | |
group | string | yes | |
sort | integer | yes | |
valueType | string | yes | (Values: flag | anzahl | meter | flaeche_m2 | meter_mit_bezug) |
unit | string | no | |
chargeable | boolean | yes | |
labels | object | yes | |
locked | boolean | no |
DestinationsResponse
| Field | Type | Required | Description |
|---|---|---|---|
destinations | array<Destination> | yes | |
warnings | Warnings | no |
Destination
| Field | Type | Required | Description |
|---|---|---|---|
code | string | yes | Code, genau so in destination zu uebergeben (Gross-/Kleinschreibung zaehlt) (pattern ^[A-Za-z0-9._-]{1,64}$) |
name | string | no | Klartext zur Anzeige; fehlt, wenn TourAPI den Code nicht kennt |
BookResponse
- Field
booked- Type
boolean- Required
- yes
- Field
alreadyBooked- Type
boolean- Required
- yes
- Description
- true = idempotente Wiederholung, nichts neu verkauft
- Field
reference- Type
string- Required
- yes
- Description
- TourAPI-Buchungsreferenz (TA-...; Testbuchung SB-...)
- Field
correlationId- Type
string- Required
- no
- Description
- metadata.correlationId der Anfrage; fehlt sie, eine vom Server vergebene UUID. Bei alreadyBooked die am Beleg gespeicherte ID des ersten Aufrufs.
- Field
sandbox- Type
boolean- Required
- no
- Description
- true = Testbuchung eines Test-Keys (Sandbox, nie beim Veranstalter); fehlt live
CancelResponse
| Field | Type | Required | Description |
|---|---|---|---|
released | boolean | yes | |
alreadyReleased | boolean | yes | true = war schon storniert |
sandbox | boolean | no | true = Storno einer Testbuchung (Test-Key); fehlt live |
Booking
| Field | Type | Required | Description |
|---|---|---|---|
reference | string | no | |
customerReference | string | no | eigene reference aus der Buchung; fehlt ohne reference |
hotel | string | no | |
room | string | no | |
group | string | no | Kundengruppe, nur bei Gruppen-Buchungen (pattern ^[A-Za-z0-9._-]{1,64}$) |
checkIn | Date | no | |
checkOut | Date | no | |
quantity | integer | no | |
status | string | no | (Values: confirmed | released) |
bookedAt | string (date-time) | no | Buchungszeitpunkt, RFC 3339 in UTC (z. B. 2026-09-26T08:15:03Z) |
updatedAt | string (date-time) | no | letzte Aenderung, bei Storno die Stornozeit; RFC 3339 in UTC |
metadata | no | metadata aus der Buchung, unveraendert; fehlt ohne metadata | |
totalCents | integer | null (int64) | no | Preis aus priceCheck; null = ohne priceCheck gebucht |
currency | string | no | Vertragswaehrung aus priceCheck; leer ohne priceCheck |
board | string | no | Verpflegung aus priceCheck; leer ohne priceCheck |
sandbox | boolean | no | true = Testbuchung aus der Sandbox (Test-Key); fehlt live |
Error
| Field | Type | Required | Description |
|---|---|---|---|
errorCode | string | yes | stabiler Code, siehe Fehlerkatalog (Handbuch Abschnitt 7) |
message | string | yes | Text fuer Menschen, kann sich aendern |
warnings | Warnings | no |
Health
- Field
status- Type
string- Required
- yes
- Description
- (Values: ok | degraded | down)
- Field
reason- Type
string- Required
- no
- Description
- nur bei degraded/down (Values: sync_stale | replica_lag | replica_lag_unknown | view_not_loaded | health_not_configured)
- Field
detail- Type
string- Required
- no
- Description
- Text fuer Menschen zum Grund, kann sich aendern
- Field
replica_lag_s- Type
integer- Required
- no
- Description
- nur wenn der Knoten ueber eine Lese-Replica liest und deren Verzug messbar ist, in Sekunden (minimum 0)
- Field
warnings- Type
- array<
string> - Required
- no
- Description
- 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) (Values: replica_lag | db_error | capacity_overlap)
- Field
db- Type
string- Required
- no
- Description
- Ergebnis der letzten DB-Messung (im Abgleich-Takt, nicht je Aufruf); fehlt, solange nicht gemessen (Values: ok | error)
- Field
db_latency_ms- Type
integer- Required
- no
- Description
- Dauer der letzten DB-Rundreise in Millisekunden, nur bei db ok (minimum 0)
- Field
uptime_s- Type
integer- Required
- yes
- Description
- Laufzeit des Prozesses in Sekunden (minimum 0)
- Field
version- Type
string- Required
- yes
- Description
- Build-Stand (Commit, "+" = ungesicherte Aenderungen); leer bei einem Build ohne Stand
ExportAckRequest
| Field | Type | Required | Description |
|---|---|---|---|
epoch | string | yes | epoch des verarbeiteten Stands |
seq | integer | yes | 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.
| Field | Type | Required | Description |
|---|---|---|---|
format | string | yes | (const tourapi-edf-feed/1) |
tenant | string | yes | Veranstalter-Code (TOC im Dateinamen) |
scope | string | yes | Kundengruppe des Keys, leer = Basisvertrag |
epoch | string | yes | |
type | string | yes | (Values: full | changes) |
from_seq | integer | yes | Stand, ab dem die Seite liefert (0 = erste Seite eines full) |
from_after | string | no | nur bei einer Seite, die mitten in einem Stand beginnt |
to_seq | integer | yes | |
to_after | string | no | nur bei einer Seite, die mitten in einem Stand endet (Folgeseite mit since=to_seq:to_after) |
more | boolean | yes | |
generated_at | string (date-time) | yes | |
rules | ExportRules | yes | |
objects | array<ExportObject> | yes | |
removed | array<ExportRemoval> | yes |
ExportRules
| Field | Type | Required | Description |
|---|---|---|---|
edf | string | yes | |
allotment | string | yes | |
spec | string | yes |
ExportObject
| Field | Type | Required | Description |
|---|---|---|---|
path | string | yes | |
kind | string | yes | (Values: hotel | allotment) |
hotel | string | yes | |
seq | integer | yes | |
sha256 | string | yes | |
bytes | integer | yes | |
source_rev | integer | yes |
ExportRemoval
- Field
kind- Type
string- Required
- yes
- Description
- (Values: hotel | allotment)
- Field
hotel- Type
string- Required
- yes
- Field
seq- Type
integer- Required
- yes
- Field
reason- Type
string- Required
- yes
- Description
- (Values: withdrawn:deleted | withdrawn:variant_error | withdrawn:not_exportable | withdrawn:no_currency | withdrawn:not_in_universe)