Preços de duração da estadia

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.

account_id: esse valor de string é o "ID da conta" listado na página "Configurações da conta" da Central para Hotéis.

property_id: o valor desse elemento precisa ser uma string que corresponda ao ID da ficha no seu feed de lista de hotéis.

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 requestTime nas 24 horas anteriores são processadas, e as que não têm são descartadas.

As mensagens são processadas na ordem de requestTime, independente da ordem em que são recebidas. Por exemplo, uma atualização de preço com um requestTime de 2019-05-03T14:09:00Z recebida após uma mensagem para os mesmos itinerários com um requestTime de 2019-05-03T14:10:00Z é descartada em favor da mensagem com carimbo de data/hora posterior.

A RFC 3339 exige datas e horas totalmente especificadas como YYYY-MM-DDThh:mm:ss.SSZ. O fuso horário é obrigatório e deve ser especificado como um deslocamento hh:mm positivo ou negativo do UTC ou Z como abreviação de UTC.

As frações de segundos são opcionais e podem ser expressas com precisão de nanossegundos. Por exemplo, 2017-01-15T01:30:15.01-08:00 codifica 15, 01 segundos após 1h30 PST de 15 de janeiro de 2017.

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 e endDate.

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 poderá ser omitido.

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 taxes correspondente for fornecido, essa taxa não vai incluir o tributo. O preço total é a soma da taxa e do tributo relevantes.

O valor no índice n corresponde a uma duração da estadia de n+1.

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 0.

taxes[] 30 float O componente tributário dos preços de duração da estadia.

O valor no índice n corresponde a uma duração da estadia de n+1.

fees[] 30 float O componente de taxa dos preços de duração da estadia.

O valor no índice n corresponde a uma duração da estadia de n+1.

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}.