Preise für die Aufenthaltsdauer

Travel Partner Prices API

Die Travel Partner Prices API bietet eine RESTful-Schnittstelle, über die Sie Hotelpreise an Google senden können.

Dienst: Travelpartnerprices.googleapis.com

Zum Aufrufen dieses Dienstes empfehlen wir, dass Sie den von Google bereitgestellten Client Bibliotheken. Wenn Ihr Anwendung Ihre eigenen Bibliotheken verwenden muss, um diesen Dienst aufzurufen, wenden Sie sich an Ihren Technical Account Manager (TAM) zum Abrufen des Discovery-Dokuments für diesen Dienst.

Dienstendpunkt

Ein Dienst Endpunkt ist ein 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-Preisnachricht (siehe unten) als HTTP-Nachrichtentext.

account_id: Dieser Stringwert ist der „Konto-ID“ Wert auf der Seite „Kontoeinstellungen“ im Hotel Mitte.

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

API-Authentifizierung

Die Travel Partner Prices API verwendet OAuth 2.0, um Authentifizieren Sie Ihre Anwendung, damit Sie auf die APIs zugreifen können.

Folgen Sie der Einrichtung von OAUTH 2.0. um eine Autorisierung für die Travel Partner Prices API zu erhalten.

Wenn Sie ein neues Projekt für die Travel Partner Prices API erstellen, müssen Sie den Zugriff auf Ihr neues Google Cloud Console-Projekt zu ermöglichen, in der Travel Partner API bereitgestellt.

Folgen Sie der Anleitung 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 Geltungsbereich der Travel Partner Prices API: "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 nach Aufenthaltsdauer“ enthält folgende Elemente und Attribute:

Element Häufigkeit Typ Beschreibung
requestTime 1 string

Der Zeitpunkt, zu dem die Nachricht zum LoS-Preis gesendet wurde, im Format RFC 3339 .

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

Nachrichten werden in der Reihenfolge requestTime verarbeitet, unabhängig von deren Eingang. 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.

RFC 3339 erfordert vollständig angegebene Datum/Uhrzeit-Paare als YYYY-MM-DDThh:mm:ss.SSZ Zeitzone ist erforderlich, angegeben als positive oder negative hh:mm-Abweichung gegenüber UTC oder Z als Abkürzung für UTC.

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

propertyPrices 1 Object Preise für eine Unterkunft. Alle Preise in diesem/dieser propertyPrices gelten für dieselbe Property.

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

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

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

startDate.year 1 integer Jahr des startDate. Muss zwischen 1 und 9.999 liegen.
startDate.month 1 integer Monat eines Jahres. Möglich ist eine Angabe von 1 bis 12.
startDate.day 1 integer Tag im Monat. 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 Ankunftsdaten zwischen dem startDate und endDate (einschließlich).

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

endDate.year 1 integer Jahr des endDate. Muss zwischen 1 und 9.999 liegen.
endDate.month 1 integer Monat eines Jahres. Möglich ist eine Angabe von 1 bis 12.
endDate.day 1 integer Tag des Monats. Die Angabe muss zwischen 1 und 31 liegen und für das Jahr und den Monat gültig sein.
productPrices[] 1..n Object Die Preise für ein Produkt. Alle Preise in diesem productPrices beziehen sich auf eine bestimmte Unterkunft und ein bestimmtes Ankunftsdatum, aber auf unterschiedliche Produkte.
roomTypeId 0..1 string Die eindeutige ID des Zimmers, 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/dieser occupancyPrices auf eine bestimmte Unterkunft, ein Ankunftsdatum oder eine Produktkombination, unterschiedlichen Belegungen.
adults 1 integer Die maximale Anzahl von Gästen, die pro Zimmer gebucht werden können, einschließlich für Erwachsene und Kinder. Dieser Wert wird für alle Preise im entsprechenden occupancyPrices-Feld festgelegt und muss eine positive Ganzzahl zwischen 1 und 99 sein.

Hinweis: Wenden Sie sich an Ihr Supportteam, um Belegungen für von mehr als 4 Erwachsenen.

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 maximale Zeichenanzahl für dieses Feld beträgt 40 Zeichen.
currencyCode 1 string Der dreistellige Währungscode, in dem rates und taxes angegeben sind. Beispiel: "USD" für US-Dollar.
rates[] 30 float Die Grundpreiskomponente der Preise für die Aufenthaltsdauer.

Wenn ein entsprechender taxes-Wert angegeben wird, beträgt dieser Preis Steuern nicht enthalten. Der Gesamtpreis ist die Summe der relevanten Steuersatz und Steuern.

Der Wert unter Index n entspricht einer n+1-Aufenthaltsdauer.

Sie müssen den vollständigen Satz von 30 LoS-Preisen gleichzeitig senden. Wenn Sie unter 30 liegen, werden alle angegebenen Preise für die Aufenthaltsdauer und die restlichen Preise sind bis zu 30 LoS nicht verfügbar. Wenn Sie mehr als 30 Preise senden, werden alle Preise, die über den 30. Preis hinausgehen, gelöscht.

Nicht verfügbare Aufenthaltsdauern sollten mit einem 0

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

Der Wert unter Index n entspricht einer n+1-Aufenthaltsdauer.

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

Der Wert bei Index n entspricht einem n+1-Wert Aufenthaltsdauer.

Beispiel

Preise und Steuern basierend auf der Aufenthaltsdauer

Im folgenden Beispiel wird für ein Check-in-Datum eine Mindestaufenthaltsdauer von zwei Nächten festgelegt und für ein anderes Check-in-Datum keine Verfügbarkeit. Wenn Sie startDate vom 01.09.2023 ohne endDate festlegen, bedeutet das, dass Sie die Preise für nur ein Datum angeben, und können den endDate.

Mit dem Array occupancyPrices, das auf 2 festgelegt ist, können Sie unterschiedliche Preise für unterschiedliche Belegungen festlegen. Daher ist die Verfügbarkeit von rates aufgrund der Nichtverfügbarkeit am 09.04.23 eingeschränkt.

Für das angezeigte Array taxes werden 10% des Preises berechnet.

Für das dargestellte fees-Array wird eine Reinigungsgebühr von 50 $ pro Aufenthalt erhoben.

Wenn der gesamte Check-in-Tag nicht verfügbar ist (z. B. 3. September 2023), müssen Sie das Datum ausdrücklich senden und rates, taxes und productPrices weglassen, um anzugeben, dass für das angefragte 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 PropertyPrices, die geändert wurde. Sie hat das Format:
accounts/{account}/properties/{property}.