Travel Partner Prices API
Interfejs Travel Partner Prices API zapewnia interfejs typu REST do wysyłania cen nieruchomości do Google.
Usługa: travelpartnerprices.googleapis.com
Do wywoływania tej usługi zalecamy użycie klienta udostępnionego przez Google . Jeśli Aplikacja musi używać Twoich własnych bibliotek, aby wywoływać tę usługę, skontaktuj się z Techniczny menedżer konta (TAM), który dostarczy dokument opisujący dotyczące tej usługi.
Punkt końcowy usługi
Punkt końcowy usługi to podstawowy adres URL, który określa adres sieciowy usługi interfejsu API. 1 usługa może mieć wiele punktów końcowych usługi. Ta usługa obejmuje następującą usługę i wszystkie wymienione identyfikatory URI odnoszą się do tego punktu końcowego usługi:
https://travelpartnerprices.googleapis.com
Metody | |
---|---|
ingestLosPropertyPrices |
POST /v1/accounts/account_id/properties/property_id:ingestLosPropertyPrices
Prześlij ceny za długość pobytu w określonym obiekcie. Wymaga zakodowanego w formacie JSON komunikatu z cenami w LoS (patrz poniżej) w postaci protokołu HTTP treść wiadomości.
|
uwierzytelniania interfejsu API;
Interfejs API cen dla partnerów turystycznych korzysta z protokołu OAuth 2.0 do uwierzytelniania aplikacji, aby umożliwić Ci dostęp do interfejsów API.
Wykonaj konfigurację OAUTH 2.0 instrukcje, jak uzyskać autoryzację korzystania z interfejsu Travel Partner Prices API.
Podczas tworzenia nowego projektu pod kątem interfejsu Travel Partners Prices API musisz wykonać te czynności: włącz dostęp do nowego projektu konsoli Google Cloud, który jest podobny do instrukcji podanych w interfejsie Travel Partner API.
Aby włączyć projekt, zapoznaj się z instrukcjami dotyczącymi interfejsu Travel Partner API i zastąp wszystkie wystąpienia „Travel Partner API” wyrażeniem „Travel Partner Prices API”.
Zakres interfejsu Travel Partner Prices API:
"https://travelpartnerprices.googleapis.com"
Ścieżka do przesyłania danych w ramach interfejsu API cen dla partnerów turystycznych:"/travel/lodging/uploads/accounts/<account_id>/property_data"
Żądania
Składnia
Komunikat LoS Prices
ma taką składnię:
{
"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,...]
}]
}]
}]
}]
}
}
Elementy i atrybuty
Wiadomość o cenach w zależności od długości pobytu zawiera te elementy i atrybuty:
Element | Wystąpienia | Typ | Opis |
---|---|---|---|
requestTime | 1 | string | Moment wysłania wiadomości o cenie LoS, wyrażony w formacie RFC 3339 ciągu znaków. Wszystkie wiadomości wysłane z użyciem Wiadomości są przetwarzane w kolejności RFC 3339 wymaga podania pełnych dat i czasu w formacie Ułamkowe sekundy są opcjonalne i mogą być wyrażone do
precyzji nanosekundy. Na przykład:
|
propertyPrices | 1 | Object | ceny obiektu, Wszystkie ceny w tym kraju: propertyPrices
dotyczą tej samej usługi.
Ten element nie jest powtarzany. Aby wysłać ceny dla wielu usług, musisz wysłać wiele żądań HTTP (co najmniej jedno na usługę). |
arrivalDayPrices[] | 1..n | Object | ceny na dzień przyjazdu; Wszystkie ceny w tym kraju: arrivalDayPrices
dotyczą konkretnego miejsca zakwaterowania, ale różnią się od dat przyjazdu. |
startDate | 1 | Object | productPrices jest stosowany do wszystkich dat przylotu
między startDate a endDate (włącznie).
Jeśli próbujesz podać tylko jedną datę przyjazdu (a nie zakres),
wpisz datę przyjazdu zarówno w |
startDate.year | 1 | integer | Rok startDate . Wartość musi mieścić się w przedziale od 1 do 9999. |
startDate.month | 1 | integer | Miesiąc w roku. Wartość musi mieścić się w przedziale od 1 do 12. |
startDate.day | 1 | integer | Dzień miesiąca. Wartość musi mieścić się w przedziale od 1 do 31 i być prawidłowa dla danego roku i miesiąca. |
endDate | 0..1 | Object | ProduktPrices jest stosowany do wszystkich dat przylotu w okresie od startDate do endDate (włącznie).
Jeśli chcesz podać tylko jedną datę przyjazdu (a nie zakres dat), możesz pominąć parametr |
endDate.year | 1 | integer | Rok endDate . Wymagana wartość z zakresu od 1 do 9999. |
endDate.month | 1 | integer | Miesiąc w roku. Wartość musi mieścić się w przedziale od 1 do 12. |
endDate.day | 1 | integer | Dzień miesiąca. Musi mieć wartość od 1 do 31 i być ważny dla roku i miesiąca. |
productPrices[] | 1..n | Object | Ceny produktów. Wszystkie ceny w tym kraju: productPrices
dotyczą konkretnego miejsca zakwaterowania, kombinacji daty przyjazdu, ale różnią się
usług.
|
roomTypeId | 0..1 | string | Unikalny identyfikator pokoju, do którego odnosi się ta cena. Użyj tego identyfikatora, aby dopasować dane Room Bundle do danych wysłanych w roomdata. Więcej informacji: Metadane pakietu sal. |
ratePlanId | 0..1 | string | Unikalny identyfikator danych pakietu, do których odnosi się dana cena. Użyj tego identyfikatora, aby dopasować dane Room Bundle do danych wysłanych w danych pakietu. Więcej informacji: Metadane pakietu sal. |
occupancyPrices[] | 1..n | Object | Ceny za liczbę osób. Wszystkie ceny w tym kraju: occupancyPrices
dotyczą konkretnego miejsca zakwaterowania, daty przyjazdu i kombinacji produktów, ale
różne obłożenie.
|
adults | 1 | integer | Maksymalna liczba gości, które można zarezerwować na pokój, w tym
dorosłych i dzieci. Ta wartość jest ustawiona dla wszystkich cen w
odpowiednie pole occupancyPrices musi być wartością dodatnią
jest liczbą całkowitą z zakresu od 1 do 99.
Uwaga: aby wysłać dane dotyczące liczby osób przekraczającej 4 dorosłych, skontaktuj się z zespołem pomocy. |
prices[] | 1..n | Object | ceny za długość pobytu, Wszystkie ceny w prices dotyczą konkretnej usługi, daty przyjazdu, produktu i kombinacji liczby osób.
|
rateRuleId | 0..1 | string | W przypadku cen warunkowych: ten identyfikator dopasowuje stawkę do definicji w pliku definicji reguły dotyczącej stawek. Limit znaków w tym polu to 40 znaków. |
currencyCode | 1 | string | Trzyliterowy kod waluty, który wynosi rates i taxes
są podawane w różnych językach. Na przykład „PLN” w przypadku złotego.
|
rates[] | 30 | float | Składnik stawki podstawowej w cenach długości pobytu.
Jeśli podasz odpowiednią wartość Wartość w indeksie Musisz przesłać pełny zestaw 30 wartości LoS naraz. Jeśli wyślesz mniej niż 30, wszystkie podane ceny LoS są przetwarzane w taki sposób, standardowych, a pozostałe stawki są niedostępne do 30 LoS. Jeśli jeśli prześlesz więcej niż 30 stopni,wszystkie ceny powyżej 30. stawek spadek o . Niedostępne długości pobytu powinny być reprezentowane za pomocą wartości |
taxes[] | 30 | float | Składnik podatku od cen za długość pobytu.
Wartość w indeksie |
fees[] | 30 | float | Składnik opłaty w cenie pobytu.
Wartość pod indeksem |
Przykład
Stawki podatki na podstawie LOS
Przykład poniżej pokazuje, jak ustawić minimalną długość pobytu, która wynosi 2
dla jednej daty zameldowania i ustawiając brak dostępności na inną.
Jeśli w polu startDate
ustawisz wartość z 1 września 2023 r. bez elementu endDate
, oznacza to, że:
określasz stawki tylko dla jednego dnia i możesz pominąć
endDate
Tablica occupancyPrices
ustawiona na 2
umożliwia określenie różnych stawek
przy różnych obłożeniu. W związku z tym brak wolnych terminów w limitach 4 września 2023 r.
dostępny rates
.
Wyświetlana tablica taxes
jest obliczana jako 10% stawki.
Wyświetlone tablice fees
pokazują, że za pobyt obowiązuje opłata za sprzątanie w wysokości 50 USD.
Jeśli w całości data zameldowania jest niedostępna (np. 3 września 2023 r.), musisz wyraźnie wysłać datę, pomijając rates
, taxes
i productPrices
, aby wskazać, że w wybrany dzień nie ma wolnych pokoi.
{
"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
]
}
]
}
]
}
]
}
]
}
}
Treść odpowiedzi
W przypadku powodzenia treść żądania zawiera dane o następującej strukturze:
Zapis JSON | |
---|---|
{ "name": "string" } |
Pola | |
---|---|
name |
Nazwa zasobu właściwości PropertyPrices, która została zmodyfikowana. ma postać:accounts/{account}/properties/{property} .
|