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 Prices API 授權。
為 Travel Partners Prices API 建立新專案時,您需要啟用新 Google Cloud 控制台專案的存取權,這與 Travel Partner API 中的操作說明類似。
請參閱 Travel Partner API 中的步驟,並將所有「Travel Partner API」取代為「Travel Partner Prices API」,啟用專案。
Travel Partner Prices API 的範圍如下:
"https://travelpartnerprices.googleapis.com"
Travel Partner Prices API 的上傳路徑為:
"/travel/lodging/uploads/accounts/<account_id>/property_data"
要求
語法
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 Price 訊息的時間,以 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 | 產品價格會套用至
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 套件資料與您在 roomdata 中傳送的資料。如需更多資訊,請參閱 會議室套裝組合中繼資料。 |
ratePlanId | 0..1 | string | 這個價格參照的套裝行程資料專屬 ID。使用 ,以便比對 Room Bundle 資料與您在 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。如果傳送的價格低於 30,系統會以正常方式處理所有提供的 LoS 價格,且剩餘的費率無法達到 LoS 30。如果傳送的價格超過 30 個,系統會捨棄超過 30 個價格。 無法使用的入住天數應以
|
taxes[] | 30 | float | 入住天數價格的稅金部分。
索引 |
fees[] | 30 | float | 入住天數價格的費用部分。 索引 |
範例
依據入住天數計算的房價和稅金
以下範例說明如何將最短入住天數設為 2
為一個入住日期,並且設定另一個入住日期的空位。
如果從 2023 年 9 月 1 日設定 startDate
,而沒有 endDate
,則表示
您只指定單一日期的房價,因此可以省略
endDate
。
將 occupancyPrices
陣列設為 2
,即可為不同可住人數設定不同的房價。因此,2023 年 9 月 4 日限制不會有度假
可用價格:rates
。
顯示的 taxes
陣列是以 10% 的費率計算。
如圖所示,fees
陣列會收取每晚 $50 美元的清潔費。
如果無法取得完整的入住日期 ‐9/3/2023,請務必
明確傳送日期,並省略 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} 。 |