Preço por duração da estadia (LoS)

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.

account_id: este valor de string é o "ID da conta" valor listado na página "Configurações da conta" em "Hotel" de Ajuda.

property_id: o valor desse elemento precisa ser uma string que corresponde 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 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 requestTime nos últimos 24 horas são processadas, e as que não foram 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 que é 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 o carimbo de data/hora mais recente.

O RFC 3339 requer datas e horas totalmente especificadas, YYYY-MM-DDThh:mm:ss.SSZ: O fuso horário é obrigatório e foi especificado como uma diferença de hh:mm positiva ou negativa em relação ao UTC ou Z como abreviação de UTC.

Os segundos fracionários são opcionais e podem ser expressos com precisão de nanossegundos. Por exemplo, 2017-01-15T01:30:15.01-08:00 codifica os últimos 15,01 segundos 13:30 PST em 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, 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 e endDate.

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 pode ser omitido.

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 taxes correspondente for fornecido, essa taxa será que não incluem o tributo. O preço total é a soma dos custos alíquota e tributos.

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

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

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

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

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

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

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