Prezzi relativi alla durata del soggiorno (LOS)

API Travel Partner Prices

L'API Travel Partner Prices ti offre un'interfaccia RESTful per l'invio dei prezzi delle proprietà a Google.

Servizio: travelpartnerprices.googleapis.com

Per chiamare questo servizio, ti consigliamo di utilizzare le librerie client fornite da Google. Se la tua applicazione deve utilizzare le tue librerie per chiamare questo servizio, contatta il tuo Technical Account Manager (TAM) per ottenere il documento di rilevamento per questo servizio.

Endpoint di servizio

Un endpoint di servizio è un URL di base che specifica l'indirizzo di rete di un servizio API. Un servizio potrebbe avere più endpoint di servizio. Questo servizio ha il seguente endpoint di servizio e tutti gli URI elencati sono relativi a questo endpoint di servizio:

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

Carica i prezzi per la durata del soggiorno forniti per una proprietà specifica.

Richiede un messaggio con prezzi LoS codificati in formato JSON (vedi sotto) come corpo del messaggio HTTP.

account_id: il valore della stringa è il valore "ID account" presente nella pagina Impostazioni account di Hotel Center.

property_id: il valore di questo elemento deve essere una stringa corrispondente all'ID scheda nel feed elenco hotel.

Autenticazione API

L'API Travel Partner Prices utilizza OAuth 2.0 per autenticare la tua applicazione in modo da poter accedere alle API.

Segui le istruzioni per la configurazione di OAuth 2.0 per ottenere l'autorizzazione per l'API Travel Partner Prices.

Quando crei un nuovo progetto per l'API Travel Partners Prices, devi attivare l'accesso al nuovo progetto della console Google Cloud, in modo simile alle istruzioni fornite nell'API Travel Partner.

Fai riferimento ai passaggi forniti nell'API Travel Partner e sostituisci tutte le istanze di "API Travel Partner" con "API Travel Partner Prices" per attivare il tuo progetto.

L'ambito dell'API Travel Partner Prices è: "https://travelpartnerprices.googleapis.com"

Il percorso di caricamento dell'API Travel Partner Prices è: "/travel/lodging/uploads/accounts/<account_id>/property_data"

Richieste

Sintassi

La sintassi del messaggio LoS Prices è la seguente:

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

Elementi e attributi

Il messaggio Prezzi per durata del soggiorno contiene i seguenti elementi e attributi:

Elemento Occorrenze Tipo Descrizione
requestTime 1 string

Il momento in cui è stato inviato il messaggio LoS Price, espresso come stringa formattata RFC 3339.

Viene elaborato qualsiasi messaggio inviato con un requestTime entro le 24 ore precedenti, mentre gli altri vengono eliminati.

I messaggi vengono elaborati secondo l'ordine del requestTime, indipendentemente dall'ordine in cui vengono ricevuti. Ad esempio, un aggiornamento del prezzo con un requestTime di 2019-05-03T14:09:00Z ricevuto dopo un messaggio per gli stessi itinerari con un requestTime di 2019-05-03T14:10:00Z vengono ignorati a favore del messaggio con timestamp successivo.

RFC 3339 richiede date e ore completamente specificate come YYYY-MM-DDThh:mm:ss.SSZ. Il fuso orario è obbligatorio e deve essere specificato come differenza positiva o negativa hh:mm rispetto all'UTC oppure Z come abbreviazione di UTC.

I secondi frazionari sono facoltativi e possono essere espressi con una precisione fino al nanosecondo. Ad esempio, 2017-01-15T01:30:15.01-08:00 codifica 15, 01 secondi dopo le 01:30 PST del 15 gennaio 2017.

propertyPrices 1 Object Prezzi per una proprietà. Tutti i prezzi all'interno di questo propertyPrices si applicano alla stessa proprietà.

Questo elemento non viene ripetuto. Per inviare i prezzi per più proprietà, devi effettuare più richieste HTTP (almeno una per proprietà).

arrivalDayPrices[] 1..n Object Prezzi per una data di arrivo. Tutti i prezzi all'interno di questo arrivalDayPrices si applicano a una proprietà specifica, ma a date di arrivo diverse.
startDate 1 Object Il productPrices viene applicato a tutte le date di arrivo comprese tra il giorno startDate e il giorno endDate inclusi.

Se vuoi specificare una sola data di arrivo (e non un intervallo), inserisci la data di arrivo sia in startDate che in endDate.

startDate.year 1 integer Anno del startDate. Il valore deve essere compreso tra 1 e 9999.
startDate.month 1 integer Mese dell'anno. Il valore deve essere compreso tra 1 e 12.
startDate.day 1 integer Giorno del mese. Il valore deve essere compreso tra 1 e 31 e valido per l'anno e il mese.
endDate 0..1 Object productPrices viene applicato a tutte le date di arrivo comprese tra startDate e endDate, incluse.

Se stai cercando di specificare una sola data di arrivo (e non un intervallo), endDate può essere omesso.

endDate.year 1 integer Anno del endDate. Il valore deve essere compreso tra 1 e 9999.
endDate.month 1 integer Mese dell'anno. Il valore deve essere compreso tra 1 e 12.
endDate.day 1 integer Giorno del mese. Il valore deve essere compreso tra 1 e 31 e valido per l'anno e il mese.
productPrices[] 1..n Object Prezzi per un prodotto. Tutti i prezzi all'interno di questo productPrices si applicano a una combinazione specifica di proprietà e data di arrivo, ma a prodotti diversi.
roomTypeId 0..1 string L'ID univoco della camera a cui si riferisce questo prezzo. Utilizza questo ID per associare i dati del pacchetto camera con quelli inviati in roomdata. Per ulteriori informazioni, consulta la sezione Metadati dei pacchetti camera.
ratePlanId 0..1 string L'ID univoco dei dati del pacchetto a cui si riferisce questo prezzo. Utilizza questo ID per associare i dati del pacchetto camera con quelli inviati in packagedata. Per ulteriori informazioni, consulta la sezione Metadati dei pacchetti camera.
occupancyPrices[] 1..n Object Prezzi per un'occupazione. Tutti i prezzi all'interno di questo occupancyPrices si applicano a una proprietà, una data di arrivo e una combinazione di prodotti specifici, ma a occupazioni diverse.
adults 1 integer Il numero massimo di ospiti che possono essere prenotati per camera, inclusi adulti e bambini. Questo valore viene impostato per tutte le tariffe all'interno del campo occupancyPrices corrispondente e deve essere un numero intero positivo compreso tra 1 e 99.

Nota: contatta il team di assistenza per inviare l'occupazione per più di quattro adulti.

prices[] 1..n Object Prezzi per durata del soggiorno. Tutti i prezzi all'interno di prices si applicano a una combinazione specifica di proprietà, data di arrivo, prodotto e occupazione.
rateRuleId 0..1 string Per le tariffe agevolate, questo ID associa una tariffa a una definizione nel file di definizione delle regole tariffarie. Il limite di caratteri per questo campo è 40.
currencyCode 1 string Il codice valuta di tre lettere in cui vengono forniti rates e taxes. Ad esempio, "USD" per i dollari statunitensi.
rates[] 30 float Il componente della tariffa base dei prezzi della durata del soggiorno.

Se viene fornito un valore taxes corrispondente, questa tariffa non include l'imposta. Il prezzo totale è la somma della tariffa e dell'imposta pertinenti.

Il valore all'indice n corrisponde a una durata del soggiorno di n+1.

Devi inviare l'intero insieme di 30 prezzi alla volta. Se invii meno di 30, tutti i prezzi LoS forniti vengono elaborati come normali e le tariffe rimanenti non sono disponibili fino a LoS 30. Se invii più di 30 tariffe,quelle successive alla trentesima vengono eliminate .

Le durate del soggiorno non disponibili devono essere rappresentate con un 0.

taxes[] 30 float Il componente fiscale dei prezzi per la durata del soggiorno.

Il valore all'indice n corrisponde a una durata del soggiorno di n+1.

fees[] 30 float Il componente della commissione dei prezzi per la durata del soggiorno.

Il valore all'indice n corrisponde a una durata del soggiorno di n+1.

Esempio

Tariffe e tasse in base alla durata del soggiorno

L'esempio seguente mostra l'impostazione della durata minima del soggiorno di 2 per una data di check-in e l'impostazione della non disponibilità per un'altra data di check-in. Se imposti startDate dal 1/9/2023 senza endDate, significa che stai specificando le tariffe per una sola data e puoi omettere endDate.

L'array occupancyPrices impostato su 2 ti consente di impostare tariffe diverse per occupazioni diverse. Pertanto, nessun posto disponibile il 09/04/23 limita rates disponibili.

L'array taxes mostrato viene calcolato come il 10% della tariffa.

L'array fees mostrato applica un costo per le pulizie di 50 $per soggiorno.

Se l'intera data di check-in non è disponibile, ad esempio 3/9/2023, devi inviare esplicitamente la data e omettere rates, taxes e productPrices per indicare che non è disponibile per la data richiesta.

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

Corpo della risposta

In caso di esito positivo, il corpo della risposta contiene dati con la seguente struttura:

Rappresentazione JSON
        {
          "name": "string"
        }
        
Campi
name Il nome della risorsa PropertyPrices che è stata modificata. Ha il formato:
accounts/{account}/properties/{property}.