API giá của đối tác du lịch
Travel Partner Price API cung cấp cho bạn giao diện RESTful để gửi giá của cơ sở lưu trú cho Google.
Dịch vụ: Travelpartnerprices.googleapis.com
Để gọi dịch vụ này, bạn nên sử dụng thư viện ứng dụng do Google cung cấp. Nếu ứng dụng cần sử dụng thư viện của riêng bạn để gọi dịch vụ này, hãy liên hệ với Giám đốc quản lý tài khoản kỹ thuật (TAM) nhận tài liệu Discovery cho dịch vụ này.
Điểm cuối dịch vụ
Dịch vụ điểm cuối là một URL cơ sở chỉ định địa chỉ mạng của dịch vụ API. Một dịch vụ có thể có nhiều điểm cuối dịch vụ. Dịch vụ này có các dịch vụ sau điểm cuối và tất cả URI được liệt kê đều liên quan đến điểm cuối dịch vụ này:
https://travelpartnerprices.googleapis.com
Phương thức | |
---|---|
ingestLosPropertyPrices |
POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices
Tải Giá theo thời gian lưu trú đã cung cấp lên cho một cơ sở lưu trú cụ thể. Yêu cầu thông báo giá LoS được mã hoá JSON (xem bên dưới) làm nội dung thông báo HTTP.
|
Xác thực API
API Giá của đối tác du lịch sử dụng OAuth 2.0 để xác thực ứng dụng của bạn, nhờ đó bạn có thể truy cập vào các API.
Làm theo hướng dẫn thiết lập OAUTH 2.0 để được uỷ quyền cho API Giá của đối tác du lịch.
Khi tạo một dự án mới cho Travel Partners Price API, bạn cần cho phép truy cập vào dự án mới trên bảng điều khiển Google Cloud, tương tự như hướng dẫn được cung cấp trong Travel Partner API.
Tham khảo các bước được cung cấp trong API Đối tác du lịch và thay thế tất cả các thực thể của "API Đối tác du lịch" bằng "API Giá của đối tác du lịch" để bật dự án của bạn.
Phạm vi của Travel Partner Price API là:
"https://travelpartnerprices.googleapis.com"
Đường dẫn tải lên cho API Giá của đối tác du lịch là:
"/travel/lodging/uploads/accounts/<account_id>/property_data"
Yêu cầu
Cú pháp
Thông báo LoS Prices
sử dụng cú pháp sau:
{
"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,...]
}]
}]
}]
}]
}
}
Phần tử và Thuộc tính
Thông báo về giá theo thời gian lưu trú có các thành phần và thuộc tính sau:
Phần tử | Số lần xuất hiện | Loại | Mô tả |
---|---|---|---|
requestTime | 1 | string | Thời điểm gửi thông báo Giá LoS, thể hiện có định dạng RFC 3339 . Mọi tin nhắn được gửi bằng Thông báo được xử lý theo thứ tự RFC 3339 yêu cầu ngày giờ được chỉ định đầy đủ dưới dạng Phân số giây là không bắt buộc và có thể được biểu thị đến
độ chính xác nano giây. Ví dụ: |
propertyPrices | 1 | Object | Giá của một cơ sở lưu trú. Tất cả mức giá trong propertyPrices này
áp dụng cho cùng một thuộc tính.
Phần tử này không lặp lại. Để gửi giá cho nhiều cơ sở lưu trú, bạn cần tạo nhiều yêu cầu HTTP (ít nhất một yêu cầu cho mỗi cơ sở lưu trú). |
arrivalDayPrices[] | 1..n | Object | Giá cho ngày đến. Tất cả các mức giá trong arrivalDayPrices này áp dụng cho một cơ sở lưu trú cụ thể, nhưng có ngày đến khác nhau. |
startDate | 1 | Object | productPrices được áp dụng cho tất cả ngày đến trong khoảng từ startDate đến endDate .
Nếu bạn chỉ muốn chỉ định một ngày đến (chứ không phải một phạm vi), hãy nhập ngày đến vào cả |
startDate.year | 1 | integer | Năm startDate . Phải từ 1 đến 9999. |
startDate.month | 1 | integer | Tháng trong năm. Giá trị phải nằm trong khoảng từ 1 đến 12. |
startDate.day | 1 | integer | Ngày trong tháng. Giá trị phải từ 1 đến 31 và hợp lệ trong năm cũng như tháng. |
endDate | 0..1 | Object | productPrices được áp dụng cho tất cả ngày đến từ startDate đến endDate (bao gồm cả hai ngày này).
Nếu chỉ muốn chỉ định một ngày đến (chứ không phải một khoảng ngày), bạn có thể bỏ qua |
endDate.year | 1 | integer | Năm endDate . Giá trị phải từ 1 đến 9999. |
endDate.month | 1 | integer | Tháng trong năm. Giá trị phải nằm trong khoảng từ 1 đến 12. |
endDate.day | 1 | integer | Ngày trong tháng. Giá trị phải từ 1 đến 31 và có giá trị trong năm và tháng. |
productPrices[] | 1..n | Object | Giá của một sản phẩm. Tất cả mức giá trong productPrices này
áp dụng cho một cơ sở lưu trú cụ thể, tổ hợp ngày đến, nhưng khác
của Google dành cho doanh nghiệp.
|
roomTypeId | 0..1 | string | Mã nhận dạng duy nhất của phòng mà giá này đề cập đến. Sử dụng mã này để so khớp dữ liệu Gói dịch vụ phòng với dữ liệu mà bạn đã gửi trong dữ liệu phòng. Để biết thêm thông tin, hãy tham khảo Siêu dữ liệu của Gói dịch vụ phòng. |
ratePlanId | 0..1 | string | Mã nhận dạng duy nhất của dữ liệu gói mà giá này đề cập đến. Sử dụng mã này để so khớp dữ liệu Gói dịch vụ phòng với dữ liệu mà bạn đã gửi trong dữ liệu gói. Để biết thêm thông tin, hãy tham khảo mục siêu dữ liệu của Gói dịch vụ phòng. |
occupancyPrices[] | 1..n | Object | Giá cho một người lưu trú. Tất cả mức giá trong occupancyPrices này
áp dụng cho một cơ sở lưu trú, ngày đến, kiểu kết hợp sản phẩm cụ thể, nhưng
số người lưu trú khác nhau.
|
adults | 1 | integer | Số lượng khách tối đa có thể đặt trước cho mỗi phòng, bao gồm
người lớn và trẻ em. Giá trị này được đặt cho tất cả các mức giá trong
trường occupancyPrices tương ứng và phải là số dương
số nguyên từ 1 đến 99.
Lưu ý: Hãy liên hệ với nhóm hỗ trợ để gửi thông tin về số người lưu trú trên 4 người lớn. |
prices[] | 1..n | Object | Giá theo thời gian lưu trú. Tất cả mức giá trong phạm vi prices áp dụng cho
một tổ hợp cơ sở lưu trú, ngày đến, sản phẩm và số người lưu trú cụ thể.
|
rateRuleId | 0..1 | string | Đối với giá phòng có điều kiện, mã này sẽ so khớp giá với định nghĩa trong tệp Định nghĩa quy tắc giá. Giới hạn ký tự cho trường này là 40 ký tự. |
currencyCode | 1 | string | Mã đơn vị tiền tệ gồm ba chữ cái mà rates và taxes được cung cấp. Ví dụ: "USD" cho đô la Mỹ.
|
rates[] | 30 | float | Thành phần giá cơ bản của giá theo thời gian lưu trú.
Nếu bạn cung cấp giá trị Giá trị tại chỉ mục Bạn phải gửi toàn bộ 30 mức giá của LoS cùng một lúc. Nếu bạn gửi nhỏ hơn 30, thì tất cả giá LoS đã cung cấp sẽ được xử lý như bình thường và các tỷ lệ còn lại không có sẵn lên đến LoS 30. Nếu bạn gửi nhiều hơn 30 mức giá, thì mọi mức giá bạn gửi sau mức giá thứ 30 sẽ bị xoá. Thời gian lưu trú không có sẵn phải được biểu thị bằng |
taxes[] | 30 | float | Thành phần thuế của giá theo thời gian lưu trú.
Giá trị tại chỉ mục |
fees[] | 30 | float | Thành phần phí của giá theo thời gian lưu trú.
Giá trị tại chỉ mục |
Ví dụ:
Giá và thuế dựa trên thời gian lưu trú
Ví dụ sau đây cho thấy việc đặt thời gian lưu trú tối thiểu là 2
cho một ngày nhận phòng và cài đặt không có tình trạng phòng cho một ngày nhận phòng khác.
Nếu bạn đặt startDate
từ ngày 1 tháng 9 năm 2023 mà không có endDate
, thì tức là bạn chỉ chỉ định giá cho một ngày và có thể bỏ qua endDate
.
Mảng occupancyPrices
được đặt thành 2
cho phép bạn đặt các mức giá khác nhau cho số người lưu trú khác nhau. Do đó, không có phòng trống vào ngày 09/04/23 sẽ giới hạn rates
có sẵn.
Mảng taxes
hiển thị được tính là 10% của tỷ lệ.
Mảng fees
hiển thị sẽ áp dụng phí vệ sinh là 50 USD/lượt lưu trú.
Nếu không có phòng cho toàn bộ ngày nhận phòng ‐9/3/2023, bạn phải gửi rõ ràng ngày đó và bỏ qua rates
, taxes
và productPrices
để cho biết rằng không có phòng cho ngày được yêu cầu.
{
"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
]
}
]
}
]
}
]
}
]
}
}
Nội dung phản hồi
Nếu thành công, phần nội dung phản hồi sẽ chứa dữ liệu có cấu trúc sau:
Biểu diễn dưới dạng JSON | |
---|---|
{ "name": "string" } |
Trường | |
---|---|
name |
Tên tài nguyên của Giá bất động sản đã được sửa đổi. Có dạng:
accounts/{account}/properties/{property} .
|