Tarification pour la durée du séjour

API Travel Partner Prices

L'API Travel Partner Prices fournit une interface RESTful permettant d'envoyer les prix des biens immobiliers à Google.

Service : travelpartnerprices.googleapis.com

Pour appeler ce service, nous vous recommandons d'utiliser les bibliothèques clientes fournies par Google. Si votre application doit utiliser vos propres bibliothèques pour appeler ce service, contactez votre responsable de compte technique (TAM) pour obtenir le document de découverte de ce service.

Point de terminaison de service

Un service point de terminaison est un URL de base spécifiant l'adresse réseau d'un service d'API. Un service peut posséder plusieurs points de terminaison de service. Ce service possède le point de terminaison de service suivant, et tous les URI listés sont relatifs à ce point de terminaison de service :

https://travelpartnerprices.googleapis.com
Méthodes
ingestLosPropertyPrices POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices

Importez les prix liés à la durée du séjour fournis pour un établissement donné.

Nécessite un message de prix de visibilité directe au format JSON (voir ci-dessous) comme corps du message HTTP.

account_id: cette valeur de chaîne correspond au "ID du compte" sur la page "Paramètres du compte" dans "Hôtel", de sécurité.

property_id : la valeur de cet élément doit être une chaîne qui correspond à l'identifiant de la fiche d'un hôtel de votre flux Hotel List Feed.

Authentification auprès des API

L'API Travel Partner Prices utilise OAuth 2.0 pour authentifier votre application afin que vous puissiez y accéder.

Suivez les instructions de configuration d'OAuth 2.0 pour obtenir l'autorisation de votre API Travel Partner Prices.

Lorsque vous créez un projet pour l'API Travel Partners Prices, vous devez activer l'accès à votre nouveau projet Google Cloud Console, ce qui est semblable aux instructions fournies dans l'API Travel Partner.

Reportez-vous aux étapes fournies dans l'API Travel Partner et remplacez toutes les instances de "API Travel Partner" par "API Travel Partner Prices" pour activer votre projet.

Le champ d'application de l'API Travel Partner Prices est le suivant: "https://travelpartnerprices.googleapis.com"

Le chemin d'importation de l'API Travel Partner Prices est le suivant : "/travel/lodging/uploads/accounts/<account_id>/property_data"

Demandes

Syntaxe

Le message LoS Prices utilise la syntaxe suivante:

{
  "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,...]
          }]
        }]
      }]
    }]
  }
}

Éléments et attributs

Le message sur les prix en fonction de la durée du séjour contient les éléments et attributs suivants :

Élément Occurrences Type Description
requestTime 1 string

Le moment où le message de prix DDS a été envoyé, exprimé au format RFC 3339 .

Tous les messages envoyés avec un requestTime au cours des dernières 24 heures sont traités. Les autres sont supprimés.

Les messages sont traités dans l'ordre de requestTime, quel que soit l'ordre dans lequel ils sont reçus. Par exemple, un mise à jour du prix avec requestTime de 2019-05-03T14:09:00Z reçu après une pour les mêmes itinéraires, avec un requestTime de Les 2019-05-03T14:10:00Z sont supprimés au profit de horodaté plus tard.

La RFC 3339 exige des dates et heures entièrement spécifiées sous la forme YYYY-MM-DDThh:mm:ss.SSZ. Le fuseau horaire est requis (indiqué) comme un décalage hh:mm positif ou négatif par rapport à l'heure UTC, ou ; Z comme raccourci pour UTC.

Les fractions de seconde sont facultatives et peuvent être exprimées jusqu'à à la nanoseconde près. Par exemple, 2017-01-15T01:30:15.01-08:00 encode après 15,01 secondes Le 15 janvier 2017 à 1h30 (PST).

propertyPrices 1 Object Prix d'un établissement. Tous les prix dans cette zone (propertyPrices) s'appliquent à la même propriété.

Cet élément n'est pas répété. Pour envoyer les prix de plusieurs établissements, vous devez effectuer plusieurs requêtes HTTP (au moins une par propriété).

arrivalDayPrices[] 1..n Object Prix pour une date d'arrivée. Tous les prix de cet élément arrivalDayPrices s'appliquent à une propriété spécifique, mais à différentes dates d'arrivée.
startDate 1 Object La productPrices s'applique à toutes les dates d'arrivée comprises entre le startDate et le endDate (inclus).

Si vous essayez de spécifier une seule date d'arrivée (et non une plage), saisissez la date d'arrivée dans startDate et endDate.

startDate.year 1 integer Année du startDate. La valeur doit être comprise entre 1 et 9 999.
startDate.month 1 integer Mois de l'année. La valeur doit être comprise entre 1 et 12.
startDate.day 1 integer Jour du mois. Doit être compris entre 1 et 31, et valide pour l'année et le mois.
endDate 0..1 Object La valeur productPrices est appliquée à toutes les dates d'arrivée comprises entre startDate et endDate inclus.

Si vous ne spécifiez qu'une seule date d'arrivée (et non une plage), endDate peut être omis.

endDate.year 1 integer Année du endDate. La valeur doit être comprise entre 1 et 9 999.
endDate.month 1 integer Mois de l'année. La valeur doit être comprise entre 1 et 12.
endDate.day 1 integer Jour d'un mois. Doit être compris entre 1 et 31, et valide pour l'année et le mois.
productPrices[] 1..n Object Prix d'un produit. Tous les prix de cet élément productPrices s'appliquent à une propriété spécifique, à une combinaison de dates d'arrivée, mais à des produits différents.
roomTypeId 0..1 string Identifiant unique de la chambre à laquelle ce prix fait référence. Utilisez cet identifiant pour faire correspondre les données de l'offre de chambres avec celles que vous avez envoyées dans roomdata. Pour en savoir plus, consultez Métadonnées des offres de chambres.
ratePlanId 0..1 string Identifiant unique des données de séjour organisé à laquelle ce prix fait référence. Utilisez cet identifiant pour faire correspondre les données de l'offre de chambres avec celles que vous avez envoyées dans les données du package. Pour en savoir plus, consultez Métadonnées des offres de chambres.
occupancyPrices[] 1..n Object Prix pour un nombre de personnes. Tous les prix dans cette zone (occupancyPrices) s'appliquent à un établissement, une date d'arrivée ou une combinaison de produits spécifique, selon le nombre de personnes.
adults 1 integer Le nombre maximal de personnes pouvant être réservées par chambre, y compris adultes et enfants. Cette valeur est définie pour tous les tarifs du champ occupancyPrices correspondant et doit être un entier positif compris entre 1 et 99.

Remarque: Contactez votre équipe d'assistance pour indiquer le nombre de personnes pour avec plus de quatre adultes.

prices[] 1..n Object Tarifs en fonction de la durée du séjour Tous les prix compris dans les prices s'appliquent à une combinaison spécifique d'établissement, de date d'arrivée, de produit et de nombre de personnes.
rateRuleId 0..1 string Pour les tarifs sous conditions, cet identifiant fait correspondre un tarif à une définition figurant dans votre fichier de définition des règles d'offres. Ce champ est limité à 40 caractères.
currencyCode 1 string Code de devise à trois lettres correspondant à rates et taxes sont fournies. Par exemple, "USD" pour le dollar américain.
rates[] 30 float Composante "Tarif de base" des prix liés à la durée du séjour.

Si une valeur taxes correspondante est fournie, ce taux n'inclut pas la taxe. Le prix total correspond à la somme des le taux de change et les taxes.

La valeur à l'indice n correspond à une durée de séjour n+1.

Vous devez envoyer l'ensemble complet de 30 prix de la liste de prix en une seule fois. Si vous envoyez inférieur à 30, tous les prix DDS fournis sont traités comme suit : normal, et les tarifs restants sont indisponibles jusqu'à 30 LOS. Si vous Si vous envoyez plus de 30,les prix que vous envoyez au-delà du 30e tarif seront a baissé .

Les durées de séjour non disponibles doivent être représentées par une 0

taxes[] 30 float Composante fiscale des prix en fonction de la durée du séjour.

La valeur à l'indice n correspond à une durée de séjour n+1.

fees[] 30 float Composante des frais des tarifs en fonction de la durée du séjour.

La valeur à l'indice n correspond à une durée de séjour n+1.

Exemple

Tarifs et taxes basés sur la durée du séjour

L'exemple suivant montre comment définir une durée de séjour minimale de deux nuits pour une date d'arrivée et aucune disponibilité pour une autre date d'arrivée. Si vous définissez startDate à partir du 01/09/2023 sans endDate, cela signifie que vous spécifiez les tarifs pour une seule date et vous pouvez omettre endDate

Le tableau occupancyPrices défini sur 2 vous permet de définir différents tarifs selon le nombre de personnes. Par conséquent, aucune vacance le 09/04/23 ne limite les rates disponibles.

Le tableau taxes affiché représente 10% du tarif.

Le tableau fees affiché applique des frais de ménage de 50 $par séjour.

Si la date d'arrivée n'est pas disponible (03/09/2023), vous devez envoyez explicitement la date, et omettez rates, taxes et productPrices pour signifie qu'il n'y a pas de disponibilité à la date demandée.

{
  "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
                    ]
                  }
                ]
              }
            ]
          }
        ]
      }
    ]
  }
}

Corps de la réponse

Si la requête aboutit, le corps de la réponse contient des données qui ont la structure suivante :

Représentation JSON
        {
          "name": "string"
        }
        
Champs
name Nom de la ressource PropertyPrices qui a été modifiée. Format:
accounts/{account}/properties/{property}