API Travel Partner Prices
A API Travel Partner Prices oferece uma interface RESTful para enviar preços de propriedades ao Google.
Serviço: travelpartnerprices.googleapis.com
Para chamar esse serviço, recomendamos que você use as bibliotecas de cliente fornecidas pelo Google. Se o aplicativo precisar usar bibliotecas próprias para chamar esse serviço, entre em contato com seu gerente técnico de contas (TAM) para receber o documento de descoberta desse serviço.
Endpoint de serviço
Um endpoint de serviço é um URL base que especifica o endereço de rede de um serviço de API. Um serviço pode ter vários endpoints de serviço. Este serviço tem o seguinte endpoint e todos os URIs listados são relativos a ele:
https://travelpartnerprices.googleapis.com
| Métodos | |
|---|---|
ingestLosPropertyPrices |
POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices
Faça upload dos preços de duração da estadia fornecidos para uma propriedade específica. Exige uma mensagem de preços de LoS codificada em JSON (veja abaixo) como o corpo da mensagem HTTP.
|
Autenticação da API
A API Travel Partner Prices usa o OAuth 2.0 para autenticar seu aplicativo e permitir o acesso às APIs.
Siga as instruções de configuração do OAUTH 2.0 para receber autorização da API Travel Partner Prices.
Ao criar um projeto para a API Travel Partners Prices, você precisa ativar o acesso ao novo projeto do console do Google Cloud, que é semelhante às instruções fornecidas na API Travel Partner.
Consulte as etapas fornecidas na API Travel Partner e substitua todas as instâncias de "API Travel Partner" por "API Travel Partner Prices" para ativar seu projeto.
O escopo da API Travel Partner Prices é:
"https://travelpartnerprices.googleapis.com"
O caminho de upload da API Travel Partner Prices é:
"/travel/lodging/uploads/accounts/<account_id>/property_data"
Solicitações
Sintaxe
A mensagem LoS Prices usa a seguinte sintaxe:
{
"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,...]
}]
}]
}]
}]
}
}
Elementos e atributos
A mensagem de preços de duração da estadia tem os seguintes elementos e atributos:
| Elemento | Ocorrências | Tipo | Descrição |
|---|---|---|---|
| requestTime | 1 | string | O momento em que a mensagem de preço do LoS foi enviada, expresso como uma string formatada em RFC 3339. Todas as mensagens enviadas com um As mensagens são processadas na ordem de A RFC 3339 exige datas e horas totalmente especificadas como As frações de segundos são opcionais e podem ser expressas com precisão de nanossegundos. Por exemplo, |
| propertyPrices | 1 | Object | Preços de uma propriedade. Todos os preços neste propertyPrices
se aplicam à mesma propriedade.
Esse elemento não é repetido. Para enviar preços de várias propriedades, é necessário fazer várias solicitações HTTP (pelo menos uma por propriedade). |
| arrivalDayPrices[] | 1..n | Object | Preços para uma data de chegada. Todos os preços neste arrivalDayPrices
se aplicam a uma propriedade específica, mas com datas de chegada diferentes. |
| startDate | 1 | Object | O productPrices é aplicado a todas as datas de chegada entre startDate e endDate, inclusive.
Se você quiser especificar apenas uma data de chegada (e não um período), insira a data de chegada em |
| startDate.year | 1 | integer | Ano do startDate. Precisa ser de 1 a 9999. |
| startDate.month | 1 | integer | Mês do ano. Precisa ser de 1 a 12. |
| startDate.day | 1 | integer | Dia do mês. Precisa ser de 1 a 31 e válido para o ano e o mês. |
| endDate | 0..1 | Object | O productPrices é aplicado a todas as datas de chegada entre startDate e endDate, inclusive.
Se você estiver tentando especificar apenas uma data de chegada (e não um período),
|
| endDate.year | 1 | integer | Ano do endDate. Precisa ser de 1 a 9999. |
| endDate.month | 1 | integer | Mês do ano. Precisa ser de 1 a 12. |
| endDate.day | 1 | integer | Dia do mês. Precisa ser de 1 a 31 e válido para o ano e o mês. |
| productPrices[] | 1..n | Object | Preços de um produto. Todos os preços neste productPrices
se aplicam a uma propriedade específica, combinação de data de chegada, mas produtos
diferentes.
|
| roomTypeId | 0..1 | string | O ID exclusivo do quarto a que esse preço se refere. Use esse ID para corresponder os dados do pacote do Room com o que você enviou em roomdata. Para mais informações, consulte Metadados da categoria de quarto. |
| ratePlanId | 0..1 | string | O ID exclusivo dos dados do pacote a que este preço se refere. Use esse ID para corresponder aos dados do pacote do Room com o que você enviou em packagedata. Para mais informações, consulte Metadados da categoria de quarto. |
| occupancyPrices[] | 1..n | Object | Preços para uma ocupação. Todos os preços neste occupancyPrices
se aplicam a uma propriedade, data de chegada e combinação de produtos específicas, mas a
ocupações diferentes.
|
| adults | 1 | integer | O número máximo de hóspedes que podem ser reservados por quarto, incluindo adultos e crianças. Esse valor é definido para todas as taxas no campo occupancyPrices correspondente e precisa ser um número inteiro positivo entre 1 e 99.
Observação: entre em contato com a equipe de suporte para enviar a ocupação de mais de quatro adultos. |
| prices[] | 1..n | Object | Preços de duração da estadia. Todos os preços em prices se aplicam a uma propriedade, data de chegada, produto e combinação de ocupação específicos.
|
| rateRuleId | 0..1 | string | Para tarifas condicionais, esse ID corresponde a uma tarifa e uma definição no arquivo de definição da regra de tarifação. O limite de caracteres para esse campo é 40. |
| currencyCode | 1 | string | O código de moeda de três letras em que rates e taxes
são fornecidos. Por exemplo, "USD" para dólares americanos.
|
| rates[] | 30 | float | O componente de taxa básica dos preços de duração da estadia.
Se um valor O valor no índice Você precisa enviar o conjunto completo de 30 preços de uma só vez. Se você enviar menos de 30, todos os preços de LoS fornecidos serão processados normalmente, e as taxas restantes não estarão disponíveis até LoS 30. Se você enviar mais de 30,os preços enviados além da 30ª taxa serão descartados . Os períodos indisponíveis precisam ser representados com um
|
| taxes[] | 30 | float | O componente tributário dos preços de duração da estadia.
O valor no índice |
| fees[] | 30 | float | O componente de taxa dos preços de duração da estadia.
O valor no índice |
Exemplo
Tarifas e tributos com base na duração da estadia
O exemplo a seguir mostra como definir a duração mínima da estadia de 2 para uma data de check-in e definir nenhuma disponibilidade para outra data de check-in.
Se você definir o startDate de 1º/9/2023 sem endDate, isso significa que você está especificando as tarifas para apenas uma data e pode omitir o endDate.
A matriz occupancyPrices definida como 2 permite definir taxas diferentes para ocupações distintas. Portanto, nenhuma vaga em 04/09/23 limita
rates disponível.
A matriz taxes mostrada é calculada como 10% da taxa.
A matriz fees mostrada aplica uma taxa de limpeza de US $50 por estadia.
Se a data de check-in inteira não estiver disponível (3/9/2023), envie a data explicitamente e omita rates, taxes e productPrices para indicar que não há disponibilidade para a data solicitada.
{
"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 da resposta
Se bem-sucedido, o corpo da resposta incluirá dados com a estrutura a seguir:
| Representação JSON | |
|---|---|
{
"name": "string"
}
|
|
| Campos | |
|---|---|
name |
O nome do recurso de PropertyPrices que foi modificado. Tem o formato:
accounts/{account}/properties/{property}.
|