Travel Partner Prices API
Travel Partner Prices API 提供的 RESTful 接口 向 Google 提供房价。
服务:travelpartnerprices.googleapis.com
要调用此服务,我们建议您使用 Google 提供的客户端 库。如果您的 应用需要使用您自己的库来调用此服务,请联系您的 负责获取发现文档的技术支持客户经理 (TAM) 。
服务端点
服务 端点 用于指定 API 服务的网络地址的基础网址。一项服务 可能有多个服务端点此服务具有以下服务 端点和列出的所有 URI 均相对于此服务端点:
https://travelpartnerprices.googleapis.com
方法 | |
---|---|
ingestLosPropertyPrices |
POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices
上传为指定房源提供的住宿晚数价格。 需要 JSON 编码的 LoS 价格消息(见下文)作为 HTTP 消息正文。
|
API 身份验证
Travel Partner Prices API 使用 OAuth 2.0 来 对应用进行身份验证,以便您可以访问 API。
要获取分步设置说明,请参阅设置 OAuth 2.0。这些设置 Travel Partner API 说明。请注意,Travel Partner API 和 Travel Partner Prices API 与 Travel Partner Prices API 的信息。在这些设置说明中 您必须替换为“Travel Partner Prices API”名称的任意位置 “Travel Partner API”名称。
请求
语法
LoS Prices
消息使用以下语法:
{
"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,...]
}]
}]
}]
}]
}
}
元素和属性
“住宿晚数”价格消息包含以下元素和属性:
元素 | 出现次数 | 类型 | 说明 |
---|---|---|---|
requestTime | 1 | string | LoS 价格消息发送的时刻,表示 RFC 3339 格式 字符串。 过去 24 天内使用 系统会按照“ RFC 3339 要求完全指定的日期时间,例如
小数秒是可选项,最多可表示为
精确到纳秒。例如
|
propertyPrices | 1 | Object | 房源的价格。此propertyPrices 内的所有价格
会应用于同一个媒体资源。
此元素不重复。如需发送多个房源的价格,请执行以下操作: 您需要发出多个 HTTP 请求(每个媒体资源至少有一个)。 |
arrivalDayPrices[] | 1..n | Object | 到达日期的价格。此arrivalDayPrices 内的所有价格
适用于特定房源,但到达日期不同。 |
startDate | 1 | Object | productPrices 适用于所有抵达日期
介于 startDate 和 endDate 之间(包括这两个数值)。
如果只是尝试指定一个到达日期(而不是一个范围),
将到达日期同时输入到 |
startDate.year | 1 | integer | startDate 的年份。必须是 1 到 9999 之间的数字。 |
startDate.month | 1 | integer | 一年中的第几个月。必须是 1 和 12 之间的数字。 |
startDate.day | 1 | integer | 一个月中的第几天。必须介于 1 到 31 之间,并且对年份和月份有效。 |
endDate | 0..1 | Object | productPrices 会应用于
startDate 和 endDate (含边界值)。
如果只是尝试指定一个到达日期(而不是一个范围),
|
endDate.year | 1 | integer | endDate 的年份。必须是 1 到 9999 之间的数字。 |
endDate.month | 1 | integer | 一年中的第几个月。必须是 1 和 12 之间的数字。 |
endDate.day | 1 | integer | 一个月中的第几天。必须介于 1 到 31 之间,并且对年份和月份有效。 |
productPrices[] | 1..n | Object | 商品的价格。此productPrices 内的所有价格
适用于特定房源、到达日期组合,但不同于
产品。
|
roomTypeId | 0..1 | string | 此价格所代表的房间的唯一 ID。使用 此 ID 将 Room Bundle 数据与您在 Roomdata 中发送的数据相匹配。 如需了解详情,请参阅 客房套餐元数据。 |
ratePlanId | 0..1 | string | 此价格所引用的套餐数据的唯一 ID。使用 此 ID 将客房套餐数据与您在 packagedata 中发送的内容相匹配。 如需了解详情,请参阅 客房套餐元数据。 |
occupancyPrices[] | 1..n | Object | 入住人数价格。此occupancyPrices 内的所有价格
适用于特定房源、到达日期、商品组合,但应用于
不同入住人数。
|
adults | 1 | integer | 每个会议室可预订的房客人数上限,包括
。该值适用于
相应的 occupancyPrices 字段,且必须为正数
介于 1 到 99 之间的整数。
注意:请联系您的支持团队,发送 超过四位成人出现。 |
prices[] | 1..n | Object | 住宿晚数价格。prices 内的所有价格均适用于
特定房源、到达日期、产品和入住人数组合。
|
rateRuleId | 0..1 | string | 对于条件式费率: 此 ID 可将费率与费率规则定义文件中的定义相匹配。 该字段的字符数限制为 40 个字符。 |
currencyCode | 1 | string | 三个字母的货币代码,表示 rates 和 taxes
。例如,"USD" 表示美元。
|
rates[] | 30 | float | 住宿晚数价格中的基本费率组件。
如果提供了相应的 索引 您必须一次发送包含 30 个价格的完整 LoS 集合。如果您发送 则所有提供的 LoS 价格均按 正常情况下,其余费率无法计算至 LoS 30。如果您 发送超过 30 个费率时,则发送超出 30 个费率的所有价格 下降了 。 不可用的住宿晚数应以
|
taxes[] | 30 | float | 住宿晚数价格的税费部分。
索引 |
fees[] | 30 | float | 住宿晚数价格的费用组成部分。
索引 |
示例
价格和根据 LOS 计算的税费
以下示例展示了如何将最短住宿晚数设置为 2
一个入住日期且没有为另一个入住日期设置空房情况。
如果您在 2023 年 9 月 1 日设置的 startDate
没有 endDate
,则意味着
但要仅针对一个日期指定费率,则可以省略
endDate
。
通过设置为 2
的 occupancyPrices
数组,您可以设置不同的费率
针对不同入住人数的因此,2023 年 9 月 4 日这一天上限中没有空位信息
可用的rates
。
显示的 taxes
数组按 10% 的比率计算得出。
显示的 fees
数组针对每次入住收取 50 美元的清洁费。
如果无法提供整个入住日期(2023 年 9 月 3 日),您必须
并明确发送日期,并省略 rates
、taxes
和 productPrices
,以
表示所请求的日期没有空房。
{
"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
]
}
]
}
]
}
]
}
]
}
}
响应正文
如果成功,响应正文将包含结构如下的数据:
JSON 表示法 | |
---|---|
{ "name": "string" } |
字段 | |
---|---|
name |
修改后的 PropertyPrices 的资源名称。采用以下形式:
accounts/{account}/properties/{property} 。
|