Preise je nach Aufenthaltsdauer

Travel Partner Prices API

Die Travel Partner Prices API bietet Ihnen eine RESTful-Schnittstelle zum Senden von Unterkunftspreisen an Google.

Dienst: travelpartnerprices.googleapis.com

Wir empfehlen, diesen Dienst mit den von Google bereitgestellten Clientbibliotheken aufzurufen. Wenn Ihre Anwendung diesen Dienst mit Ihren eigenen Bibliotheken aufrufen muss, wenden Sie sich an Ihren Technical Account Manager (TAM), um das Discovery-Dokument für diesen Dienst zu erhalten.

Dienstendpunkt

Ein Dienstendpunkt ist eine Basis-URL, die die Netzwerkadresse eines API-Dienstes angibt. Ein Dienst kann mehrere Dienstendpunkte haben. Dieser Dienst hat den folgenden Dienstendpunkt und alle aufgeführten URIs beziehen sich auf ihn:

https://travelpartnerprices.googleapis.com
Methoden
ingestLosPropertyPrices POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices

Laden Sie die angegebenen Preise für die Aufenthaltsdauer für eine bestimmte Unterkunft hoch.

Erfordert eine JSON-codierte LoS-Preismitteilung (siehe unten) als HTTP-Nachrichtentext.

account_id: Dieser Stringwert ist der Wert „Konto-ID“, der im Hotel Center auf der Seite „Kontoeinstellungen“ aufgeführt ist.

property_id: Der Wert dieses Elements muss ein String sein, der mit der Eintrag-ID in Ihrem Hotellistenfeed übereinstimmt.

API-Authentifizierung

Die Travel Partner Prices API verwendet OAuth 2.0 zur Authentifizierung Ihrer Anwendung, damit Sie auf die APIs zugreifen können.

Folgen Sie der OAUTH 2.0-Einrichtung, um die Autorisierung für Ihre Travel Partner Prices API zu erhalten.

Wenn Sie ein neues Projekt für die Travel Partners Prices API erstellen, müssen Sie den Zugriff auf Ihr neues Google Cloud Console-Projekt aktivieren. Das funktioniert ähnlich wie in der Anleitung für die Travel Partner API beschrieben.

Folgen Sie den Schritten in der Travel Partner API und ersetzen Sie alle Instanzen von „Travel Partner API“ durch „Travel Partner Prices API“, um Ihr Projekt zu aktivieren.

Der Umfang der Travel Partner Prices API ist: "https://travelpartnerprices.googleapis.com"

Der Uploadpfad für die Travel Partner Prices API lautet: "/travel/lodging/uploads/accounts/<account_id>/property_data"

Anfragen

Syntax

Die Nachricht LoS Prices verwendet die folgende Syntax:

{
  "requestTime": YYYY-MM-DDTHH:mm:ss.SSSZ,
  "propertyPrices": {
    "arrivalDatePrices": [{
      "startDate": {
        "year": int
        "month": int
        "day": int
      }
      "endDate": {
        "year": int
        "month": int
        "day": int
      }
      "productPrices": [{
        "roomTypeId": "string"
        "ratePlanId": "string"
        "occupancyPrices": [{
          "adults": int
          "prices": [{
            "rateRuleId": "string"
            "currencyCode": "string"
            "rates": [night_1,night_2,...]
            "taxes": [night_1,night_2,...]
            "fees": [night_1,night_2,...]
          }]
        }]
      }]
    }]
  }
}

Elemente und Attribute

Die Nachricht „Preise für Aufenthaltsdauer“ enthält die folgenden Elemente und Attribute:

Element Häufigkeit Typ Beschreibung
requestTime 1 string

Der Zeitpunkt, zu dem die LoS-Preismitteilung gesendet wurde, ausgedrückt als RFC 3339-formatierter String.

Alle Nachrichten, die innerhalb der vergangenen 24 Stunden mit einem requestTime gesendet wurden, werden verarbeitet. Alle anderen werden verworfen.

Nachrichten werden in der requestTime-Reihenfolge verarbeitet, unabhängig von der Reihenfolge ihres Eingangs. Beispiel: Eine Preisaktualisierung mit dem requestTime 2019-05-03T14:09:00Z, die nach einer Nachricht für dieselben Reisepläne mit dem requestTime 2019-05-03T14:10:00Z empfangen wird, wird zugunsten der Nachricht mit dem späteren Zeitstempel verworfen.

Gemäß RFC 3339 müssen Datums- und Zeitangaben vollständig angegeben werden, z. B. YYYY-MM-DDThh:mm:ss.SSZ. Die Zeitzone ist erforderlich und muss als positive oder negative hh:mm-Abweichung von UTC oder als Z als Abkürzung für UTC angegeben werden.

Sekundenbruchteile sind optional und können bis auf die Nanosekunde genau angegeben werden. Beispiel: 2017-01-15T01:30:15.01-08:00 codiert 15,01 Sekunden nach 01:30 Uhr PST am 15.Januar 2017.

propertyPrices 1 Object Preise für eine Unterkunft. Alle Preise in diesem propertyPrices beziehen sich auf dieselbe Unterkunft.

Dieses Element wird nicht wiederholt. Wenn Sie Preise für mehrere Unterkünfte senden möchten, müssen Sie mehrere HTTP-Anfragen stellen (mindestens eine pro Unterkunft).

arrivalDayPrices[] 1..n Object Preise für ein Ankunftsdatum. Alle Preise in diesem arrivalDayPrices beziehen sich auf eine bestimmte Unterkunft, aber auf unterschiedliche Ankunftsdaten.
startDate 1 Object Die productPrices wird auf alle Ankunftsdaten zwischen dem startDate und dem endDate angewendet (einschließlich).

Wenn Sie nur ein Ankunftsdatum (und keinen Zeitraum) angeben möchten, geben Sie das Ankunftsdatum sowohl in startDate als auch in endDate ein.

startDate.year 1 integer Das Jahr des startDate. Muss zwischen 1 und 9999 liegen.
startDate.month 1 integer Monat eines Jahres. Möglich ist eine Angabe von 1 bis 12.
startDate.day 1 integer Tag eines Monats. Der Wert muss zwischen 1 und 31 liegen und für das Jahr und den Monat gültig sein.
endDate 0..1 Object Die productPrices werden auf alle Anreisedaten zwischen dem startDate und dem endDate (einschließlich) angewendet.

Wenn Sie nur ein Ankunftsdatum (und keinen Zeitraum) angeben möchten, kann endDate weggelassen werden.

endDate.year 1 integer Das Jahr des endDate. Muss zwischen 1 und 9999 liegen.
endDate.month 1 integer Monat eines Jahres. Möglich ist eine Angabe von 1 bis 12.
endDate.day 1 integer Tag eines Monats. Der Wert muss zwischen 1 und 31 liegen und für das Jahr und den Monat gültig sein.
productPrices[] 1..n Object Preise für ein Produkt. Alle Preise in diesem productPrices-Element gelten für eine bestimmte Kombination aus Unterkunft und Anreisedatum, aber für unterschiedliche Produkte.
roomTypeId 0..1 string Die eindeutige ID für das Zimmer, auf das sich dieser Preis bezieht. Mit dieser ID ordnen Sie die Daten des Zimmerpakets den Daten zu, die Sie in „roomdata“ gesendet haben. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.
ratePlanId 0..1 string Die eindeutige ID für die Paketdaten, auf die sich dieser Preis bezieht. Mit dieser ID ordnen Sie die Daten des Zimmerpakets den Daten zu, die Sie in „packagedata“ gesendet haben. Weitere Informationen finden Sie unter Zimmerpaket-Metadaten.
occupancyPrices[] 1..n Object Preise für eine Belegung. Alle Preise in diesem occupancyPrices beziehen sich auf eine bestimmte Unterkunft, ein bestimmtes Ankunftsdatum und eine bestimmte Produktkombination, aber auf unterschiedliche Belegungen.
adults 1 integer Die maximale Anzahl von Gästen, die pro Zimmer gebucht werden können, einschließlich Erwachsener und Kinder. Dieser Wert wird für alle Raten im entsprechenden occupancyPrices-Feld festgelegt und muss eine positive Ganzzahl zwischen 1 und 99 sein.

Hinweis: Wenden Sie sich an Ihr Supportteam, um die Belegung für mehr als vier Erwachsene zu senden.

prices[] 1..n Object Preise für die Aufenthaltsdauer. Alle Preise in prices gelten für eine bestimmte Kombination aus Unterkunft, Anreisedatum, Produkt und Belegung.
rateRuleId 0..1 string Bei nutzerabhängigen Preisen entspricht diese ID einem Preis in einer Definition in Ihrer Datei zum Festlegen der Preisregel. Die Zeichenbeschränkung für dieses Feld beträgt 40 Zeichen.
currencyCode 1 string Der dreistellige Währungscode, in dem rates und taxes angegeben werden. Zum Beispiel "USD" für US-Dollar.
rates[] 30 float Die Basistarifkomponente der Preise für die Aufenthaltsdauer.

Wenn ein entsprechender taxes-Wert angegeben ist, ist der Steuersatz nicht im Preis enthalten. Der Gesamtpreis ist die Summe aus dem relevanten Preis und der Steuer.

Der Wert am Index n entspricht einer Aufenthaltsdauer von n+1.

Sie müssen immer den vollständigen Satz von 30 Preisen für die niedrigste Rate senden. Wenn Sie weniger als 30 Werte senden, werden alle angegebenen Preise für die Aufenthaltsdauer wie gewohnt verarbeitet. Die verbleibenden Raten sind bis zur Aufenthaltsdauer 30 nicht verfügbar. Wenn Sie mehr als 30 Preise senden,werden alle Preise nach dem 30. Preis verworfen.

Nicht verfügbare Aufenthaltsdauern sollten mit einem 0 dargestellt werden.

taxes[] 30 float Die Steuerkomponente der Preise für die Aufenthaltsdauer.

Der Wert am Index n entspricht einer Aufenthaltsdauer von n+1.

fees[] 30 float Die Gebührenkomponente der Preise für die Aufenthaltsdauer.

Der Wert am Index n entspricht einer Aufenthaltsdauer von n+1.

Beispiel

Preise und Steuern basierend auf der Aufenthaltsdauer

Im folgenden Beispiel wird die Mindestaufenthaltsdauer von 2 für ein Check-in-Datum festgelegt und für ein anderes Check-in-Datum wird keine Verfügbarkeit festgelegt. Wenn Sie den startDate ab dem 01.09.2023 ohne endDate festlegen, geben Sie die Preise nur für ein Datum an und können den endDate weglassen.

Mit dem Array occupancyPrices, das auf 2 festgelegt ist, können Sie unterschiedliche Preise für unterschiedliche Belegungen festlegen. Daher schränkt keine freie Stelle am 09.04.2023 die verfügbaren rates ein.

Das angezeigte taxes-Array wird als 10% des Ratenwerts berechnet.

Im gezeigten fees-Array wird eine Reinigungsgebühr von 50 $pro Aufenthalt angewendet.

Wenn das gesamte Check-in-Datum (03.09.2023) nicht verfügbar ist, müssen Sie das Datum explizit senden und rates, taxes und productPrices weglassen, um anzugeben, dass für das angeforderte Datum keine Verfügbarkeit besteht.

{
  "requestTime": "2023-08-10T12:15:222",
  "propertyPrices": {
    "arrivalDatePrices": [
      {
        "startDate": {
          "year": 2023,
          "month": 9,
          "day": 1
        },
        "productPrices": [
          {
            "occupancyPrices": [
              {
                "adults": 2,
                "prices": [
                  {
                    "currencyCode": "USD",
                    "rates": [
                      0, 200, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "taxes": [
                      0, 20, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "fees": [
                      0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ]
                  }
                ]
              }
            ]
          }
        ]
      },
      {
        "startDate": {
          "year": 2023,
          "month": 9,
          "day": 3
        },
        "productPrices": [
          {
            "occupancyPrices": [
              {
                "adults": 2,
                "prices": [
                  {
                    "currencyCode": "USD",
                    "rates": [
                      0, 200, 300, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "taxes": [
                      0, 20, 30, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ],
                    "fees": [
                      0, 50, 50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
                      0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

Antworttext

Bei Erfolg enthält der Antworttext Daten mit der folgenden Struktur:

JSON-Darstellung
        {
          "name": "string"
        }
        
Felder
name Der Ressourcenname der geänderten PropertyPrices. Sie hat das Format:
accounts/{account}/properties/{property}.