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 o cliente fornecido pelo Google bibliotecas. Se as aplicativo precisa usar suas próprias bibliotecas para chamar este serviço, entre em contato com seu Gerente técnico de contas (TAM) para acessar o documento de descoberta para este 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 podem ter vários endpoints de serviço. Este serviço tem o seguinte endpoint e todos os URIs listados são relativos a este endpoint de serviço:
https://travelpartnerprices.googleapis.com
Métodos | |
---|---|
ingestLosPropertyPrices |
POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices
Faça upload dos preços para duração da estadia para uma propriedade especificada. Requer uma mensagem de preços de LoS codificada em JSON (confira abaixo) como o HTTP corpo da mensagem.
|
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 para a API Travel Partner Prices.
Ao criar um novo projeto para a API Travel Partners Prices, você precisa: ativar o acesso ao seu novo projeto do console do Google Cloud, que é semelhante ao 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" com "Preços de parceiros de viagem API" para ativar seu projeto.
O escopo da API Travel Partner Prices é o seguinte:
"https://travelpartnerprices.googleapis.com"
O caminho de upload da API Travel Partner Prices é o seguinte:
"/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 para 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 de LoS foi enviada, expressa como uma string formatada em RFC 3339. Qualquer mensagem enviada com um As mensagens são processadas na ordem de O RFC 3339 requer datas e horas totalmente especificadas,
Os segundos fracionários são opcionais e podem ser expressos 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, será 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 .
Se você quiser especificar apenas uma data de chegada (e não um intervalo),
insira a data de chegada em |
startDate.year | 1 | integer | Ano de 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. Deve ter um valor entre 1 e 31 e ser válido para o ano e o mês. |
endDate | 0..1 | Object | O atributo productPrices é aplicado a todas as datas de chegada entre as
startDate e endDate , inclusive.
Se você tentar especificar apenas uma data de chegada (e não um período),
|
endDate.year | 1 | integer | Ano da endDate . O valor precisa estar entre 1 e 9.999. |
endDate.month | 1 | integer | Mês do ano. Precisa ser de 1 a 12. |
endDate.day | 1 | integer | Dia do mês. Precisa ser um valor entre 1 e 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, uma combinação de data de chegada, mas produtos
diferentes.
|
roomTypeId | 0..1 | string | O código exclusivo do quarto a que esse preço se refere. Usar esse ID para corresponder os dados de Categoria de quarto com o que você enviou em dados de quarto. Para mais informações, consulte Metadados de Categoria de quarto. |
ratePlanId | 0..1 | string | O ID exclusivo dos dados do pacote a que este preço se refere. Usar esse ID para corresponder os dados de Categoria de quarto com o que você enviou em packagedata. Para mais informações, consulte Metadados de Categoria de quarto. |
occupancyPrices[] | 1..n | Object | Preços de uma ocupação. Todos os preços neste occupancyPrices
se aplicam a uma propriedade específica, data de chegada, combinação de produtos, mas
com diferentes ocupações.
|
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 taxas condicionais, esse ID corresponde a uma taxa a uma definição no arquivo de definição da regra de tarifação. O limite de caracteres para esse campo é de 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 da tarifa base dos preços da duração da estadia.
Se um valor O valor no índice Você precisa enviar o conjunto completo de 30 preços de LoS por 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é a LoS 30. Se você enviar mais de 30,então quaisquer preços que você enviar além da 30a taxa serão caiu . As durações de estadias indisponíveis precisam ser representadas com um
|
taxes[] | 30 | float | O componente fiscal dos preços de duração da estadia.
O valor no índice |
fees[] | 30 | float | O componente da tarifa de preços de duração da estadia.
O valor no índice |
Exemplo
Taxas e tributos com base na estadia
O exemplo a seguir mostra como definir a duração mínima de 2 dias
para uma data de check-in e definir a disponibilidade como "nenhuma" para outra data de check-in.
Se você definir o startDate
de 1/9/2023 sem endDate
, significa que
você está especificando as tarifas para apenas uma data e pode omitir o
endDate
.
Com a matriz occupancyPrices
definida como 2
, é possível definir taxas diferentes
para ocupações diferentes. Portanto, não há vagas nos limites de 04/09/23
disponível rates
.
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 estiver indisponível, por exemplo, 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 do PropertyPrices que foi modificado. Com o formato:
accounts/{account}/properties/{property} .
|