Travel Partner Prices API
La API de Travel Partner Prices te proporciona una interfaz de RESTful para enviar precios de propiedades a Google.
Servicio: travelpartnerprices.googleapis.com
Para llamar a este servicio, te recomendamos que uses las bibliotecas cliente que proporciona Google. Si tu aplicación necesita usar tus propias bibliotecas para llamar a este servicio, comunícate con tu administrador técnico de cuentas (TAM) para obtener el documento de Discovery de este servicio.
Extremo de servicio
Un endpoint de servicio es una URL base que especifica la dirección de red de un servicio de API. Un servicio puede tener varios extremos de servicio. Este servicio tiene el siguiente extremo, y todos los URI que se enumeran a continuación están relacionados con él:
https://travelpartnerprices.googleapis.com
| Métodos | |
|---|---|
ingestLosPropertyPrices |
POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices
Sube los precios de duración de la estadía proporcionados para una propiedad especificada. Requiere un mensaje de precios de LoS codificado en JSON (consulta a continuación) como cuerpo del mensaje HTTP.
|
Autenticación de la API
La API de Travel Partner Prices usa OAuth 2.0 para autenticar tu aplicación y que puedas acceder a las APIs.
Sigue las instrucciones de configuración de OAUTH 2.0 para obtener autorización para tu API de Travel Partner Prices.
Cuando crees un proyecto nuevo para la API de Travel Partners Prices, deberás habilitar el acceso a tu nuevo proyecto de la consola de Google Cloud, de manera similar a las instrucciones proporcionadas en la API de Travel Partner.
Consulta los pasos proporcionados en la API de Travel Partner y reemplaza todas las instancias de "API de Travel Partner" por "API de Travel Partner Prices" para habilitar tu proyecto.
El alcance de la API de Travel Partner Prices es el siguiente:
"https://travelpartnerprices.googleapis.com"
La ruta de carga de la API de Travel Partner Prices es la siguiente:
"/travel/lodging/uploads/accounts/<account_id>/property_data"
Solicitudes
Sintaxis
El mensaje LoS Prices usa la siguiente sintaxis:
{
"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 y atributos
El mensaje de precios de Length of Stay tiene los siguientes elementos y atributos:
| Elemento | Casos | Tipo | Descripción |
|---|---|---|---|
| requestTime | 1 | string | Es el momento en que se envió el mensaje de precio del LoS, expresado como una cadena con formato RFC 3339. Se procesa cualquier mensaje enviado con un Los mensajes se procesan en orden de La RFC 3339 requiere fechas y horas completamente especificadas como Las fracciones de segundos son opcionales y se pueden expresar con una precisión de hasta nanosegundos. Por ejemplo, |
| propertyPrices | 1 | Object | Son los precios de una propiedad. Todos los precios dentro de este propertyPrices
se aplican a la misma propiedad.
Este elemento no se repite. Para enviar precios de varias propiedades, debes realizar varias solicitudes HTTP (al menos una por propiedad). |
| arrivalDayPrices[] | 1..n | Object | Precios para una fecha de llegada. Todos los precios dentro de este arrivalDayPrices
se aplican a una propiedad específica, pero con diferentes fechas de llegada. |
| startDate | 1 | Object | El productPrices se aplica a todas las fechas de llegada entre el startDate y el endDate, inclusive.
Si solo intentas especificar una fecha de llegada (y no un rango), ingresa la fecha de llegada en |
| startDate.year | 1 | integer | Año del startDate Debe ser un valor entre 1 y 9999. |
| startDate.month | 1 | integer | Mes del año. Debe encontrarse entre 1 y 12. |
| startDate.day | 1 | integer | Día del mes. Debe ser entre 1 y 31, y ser válido para el año y el mes. |
| endDate | 0..1 | Object | El parámetro productPrices se aplica a todas las fechas de llegada entre startDate y endDate, inclusive.
Si solo intentas especificar una fecha de llegada (y no un rango), se puede omitir |
| endDate.year | 1 | integer | Año del endDate Debe ser un valor entre 1 y 9999. |
| endDate.month | 1 | integer | Mes del año. Debe encontrarse entre 1 y 12. |
| endDate.day | 1 | integer | Día del mes. Debe ser entre 1 y 31, y ser válido para el año y el mes. |
| productPrices[] | 1..n | Object | Son los precios de un producto. Todos los precios dentro de este productPrices se aplican a una combinación específica de propiedad y fecha de llegada, pero a diferentes productos.
|
| roomTypeId | 0..1 | string | Es el ID único de la habitación a la que se refiere este precio. Usa este ID para hacer coincidir los datos del paquete de Room con los que enviaste en roomdata. Para obtener más información, consulta Metadatos de Room Bundle. |
| ratePlanId | 0..1 | string | Es el ID único de los datos del paquete al que hace referencia este precio. Usa este ID para hacer coincidir los datos de Room Bundle con lo que enviaste en packagedata. Para obtener más información, consulta Metadatos de Room Bundle. |
| occupancyPrices[] | 1..n | Object | Son los precios para una ocupación. Todos los precios dentro de este occupancyPrices
se aplican a una propiedad, una fecha de llegada y una combinación de productos específicos, pero a
diferentes ocupaciones.
|
| adults | 1 | integer | Es la cantidad máxima de huéspedes que se pueden reservar por habitación, incluidos adultos y niños. Este valor se establece para todas las tarifas dentro del campo occupancyPrices correspondiente y debe ser un número entero positivo entre 1 y 99.
Nota: Comunícate con el equipo de asistencia al cliente para enviar la ocupación de más de cuatro adultos. |
| prices[] | 1..n | Object | Precios por duración de la estadía Todos los precios dentro de prices se aplican a una combinación específica de propiedad, fecha de llegada, producto y ocupación.
|
| rateRuleId | 0..1 | string | Para las tarifas condicionales, este ID vincula una tarifa a una definición en tu archivo de definición de reglas de tarifas. El límite de caracteres para este campo es de 40. |
| currencyCode | 1 | string | Código de moneda de tres letras en el que se proporcionan rates y taxes. Por ejemplo, "USD" para dólares estadounidenses.
|
| rates[] | 30 | float | Es el componente de tarifa base de los precios de la duración de la estadía.
Si se proporciona un valor de El valor en el índice Debes enviar el conjunto completo de 30 precios de la LoS a la vez. Si envías menos de 30, todos los precios de LoS proporcionados se procesan de forma normal y las tarifas restantes no están disponibles hasta el LoS 30. Si envías más de 30,se descartarán los precios que envíes después de la 30ª tarifa . Las duraciones de estadía no disponibles se deben representar con un |
| taxes[] | 30 | float | Es el componente impositivo de los precios por duración de la estadía.
El valor en el índice |
| fees[] | 30 | float | Es el componente de comisión de los precios por duración de la estadía.
El valor en el índice |
Ejemplo
Impuestos y tarifas según la duración de la estadía
En el siguiente ejemplo, se muestra cómo establecer la estadía mínima de 2 para una fecha de entrada y cómo establecer que no haya disponibilidad para otra fecha de entrada.
Si estableces el startDate a partir del 1/9/2023 sin endDate, significa que especificas las tarifas para una sola fecha y puedes omitir el endDate.
El array occupancyPrices que se establece en 2 te permite establecer diferentes tarifas para diferentes ocupaciones. Por lo tanto, no hay vacantes el 4/9/23, lo que limita la disponibilidad de rates.
El array taxes que se muestra se calcula como el 10% de la tarifa.
El array fees que se muestra aplica una tarifa de limpieza de USD 50 por estadía.
Si toda la fecha de entrada no está disponible (3/9/2023), debes enviar la fecha de forma explícita y omitir rates, taxes y productPrices para indicar que no hay disponibilidad para la fecha 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
]
}
]
}
]
}
]
}
]
}
}
Cuerpo de la respuesta
Si se ejecuta correctamente, el cuerpo de la respuesta contendrá datos con la siguiente estructura:
| Representación JSON | |
|---|---|
{
"name": "string"
}
|
|
| Campos | |
|---|---|
name |
Es el nombre del recurso de PropertyPrices que se modificó. Tiene la siguiente forma:
accounts/{account}/properties/{property}.
|