На этой странице представлены некоторые примеры вызовов с использованием API Travel Partner v3.
Конечные точки API Travel Partner используют синтаксис REST-ful через вызовы HTTPS. base_url для всех запросов API:
https://travelpartner.googleapis.com/v3/accounts/account_id
Полный список полей запроса и ответа см. в каталоге ресурсов API .
Отчет об эффективности объекта
Служба просмотра отчетов об эффективности ресурсов позволяет запрашивать (получать, фильтровать и сегментировать) отчет об эффективности ресурсов для определенной учетной записи.
Запрос отчета об эффективности ресурса
В следующем примере создается отчет об эффективности всех объектов в аккаунте 12345678
, отфильтрованных по дате 11 мая 2022 г. и сгруппированных по идентификатору отеля-партнера.
GET https://travelpartner.googleapis.com/v3/accounts/12345678/propertyPerformanceReportViews:query?filter=date%20%3D%20%272022-05-11%27&aggregateBy=partnerPropertyId
{ "results": [ { "partnerPropertyId": "10001", "clickCount": "47" "impressionCount": "360" }, { "partnerPropertyId": "10003", "clickCount": "23" "impressionCount": "400" }, { "partnerPropertyId": "10007", "clickCount": "106" "impressionCount": "780" }, { "partnerPropertyId": "10009", "clickCount": "81" "impressionCount": "520" }, ] }
Отели
Служба просмотра отелей предоставляет либо список всех отелей, либо сводку по ним для конкретной учетной записи.
Получение списка отелей
В следующем примере извлекается список всех гостиниц в учетной записи 12345678
:
GET https://travelpartner.googleapis.com/v3/accounts/12345678/hotelviews
Запрос принимает параметры запроса для навигации по многостраничным результатам:
GET base_url/hotelviews?pageSize=10&pageToken=11
{ "nextPageToken": "11", "hotelViews": [ { "googleHotelDisplayName": "Alameda Hotel", "googleHotelId": "11111111111111111111", "partnerHotelDisplayName": "Alameda Hotel", "partnerHotelId": "10", "dataIssues": [ "MISSING_STREET_NUMBER" ], "googleClusterId": "1131326789990787753" }, { "googleClusterId": "11390920309628839218", "googleHotelDisplayName": "At Hotel", "googleHotelId": "9999999999999999999", "partnerHotelDisplayName": "At Hotel and Restaurant", "partnerHotelId": "100001" }, ... { "googleHotelDisplayName": "Aquapark & Spa Hotel", "googleHotelId": "444444444444444444", "partnerHotelDisplayName": "Aquapark & Spa Hotel", "partnerHotelId": "100069", "dataIssues": [ "MISSING_PHONE_NUMBER", "MISSING_STREET_NUMBER", "LATLONG_INCONSISTENT_WITH_ADDRESS" ], "googleClusterId": "18401597592098761505" } ] }
Получение сводки свойств
В этом примере получается сводка свойств для учетной записи 12345678
:
GET https://travelpartner.googleapis.com/v3/accounts/12345678/hotelviews:summarize
{ "lastManifestUpdateTime": "2019-09-26T18:24:54.479972Z", "matchedPropertyCount": "206107", "overclusteredPropertyWithErrorsCount": "16927", "overclusteredPropertyCount": "17611", "unmatchedPropertyWithErrorsCount": "93638", "lastFeedSubmissionTime": "2019-09-19T20:51:08Z", "unmatchedPropertyCount": "99673" }
Отчет об участии
Служба просмотра отчетов об участии предоставляет возможность запрашивать (получать, фильтровать и сегментировать) отчет об участии для определенной учетной записи.
Запрос отчета об участии
В следующем примере получается отчет об участии для всех свойств в учетной записи 12345678
и фильтруется отчет с использованием даты 10/4/20.
GET https://travelpartner.googleapis.com/v3/accounts/12345678/participationReportViews:query?filter=date%20%3D%20%272020-10-04%27
{ "results": [ { "missedParticipationCountDetails": { "noAvailabilityCount": "628873", "otherReasonCount": "22", "hotelSuspendedCount": "262", "noTaxBreakdownCount": "1", "noLandingPageCount": "4558", "noPriceCount": "43194", "noPriceCountDetails": { "livePricingTechnicalIssueCount": "4795", "livePricingNotTriggeredCount": "2", "livePricingConfigIssueCount": "3", "livePricingNotAvailableCount": "27731", "livePricingOtherReasonCount": "1" } "otherReasonCount": "1" "priceMissingCount": "2235", "priceMissingCountDetails": { "cacheRateMissingCount": "2030", "itineraryBlockedCount": "196", "livePricingNotSetupCount": "0", "bandwidthDepletedCount": "1", "livePricingTimeoutCount": "8", "livePricingErrorCount": "0" } "priceProblemCount": "0", "priceProblemCountDetails": { "hotelSuspendedCount": "0", "priceUnusuallyHighCount": "0", "priceUnusuallyLowCount": "0", "taxesAndFeesMissingCount": "0" } "priceUnavailableCount": "0", "priceUnavailableCountDetails": { "priceUnavailableCount": "0", "participationNotLikelyCount": "0" } }, "participationCount": "1298876", "missedParticipationCount": "679146", "opportunityCount": "1975787", "participationPercent": 0.6573967740444975 } ] }
Точность цены
Служба просмотра точности цен позволяет получать отчеты о точности цен и оценочные листы для конкретной учетной записи.
Получение отчета о точности цен
В следующем примере извлекается отчет о точности цен от 26 августа 2019 г. для учетной записи 12345678
:
GET https://travelpartner.googleapis.com/v3/accounts/12345678/priceAccuracyViews/20190826
Помимо обычных параметров запроса для просмотра ответов, есть еще пара параметров для включения в результаты совпадающих цен или сигналов пикселей.
В этом примере отчет о точности цен от 26 августа 2019 г. включает совпадающие цены и сигналы пикселей:
GET base_url/priceAccuracyViews/20190826?includeMatchedPrices=true&includePixels=true
Список доступных отчетов о точности цен
Чтобы получить список доступных отчетов, отправьте запрос:
GET https://travelpartner.googleapis.com/v3/accounts/12345678/priceAccuracyViews
Вы можете включить обычные параметры запроса для просмотра результатов .
{ "priceAccuracyViews": [ { "name": "accounts/12345678/priceAccuracyViews/20190925" }, ... { "name": "accounts/12345678/priceAccuracyViews/20190827" } ] }
Получение оценки точности цены
Чтобы получить оценочную карту точности цены, используйте метод summarize
:
GET https://travelpartner.googleapis.com/v3/accounts/12345678/priceAccuracyViews:summarize
{ "updateTime": "2019-09-26T18:29:32.372204Z", "currentScore": "EXCELLENT", "predictedScore": "EXCELLENT" }
Ценовое покрытие
Служба просмотра ценового покрытия предоставляет последний отчет о ценовом покрытии или всю историю ценового покрытия.
Получение последней статистики покрытия цен
В следующем примере извлекается последняя статистика покрытия цен для учетной записи 12345678
:
GET https://travelpartner.googleapis.com/v3/accounts/12345678/priceCoverageViews:latest
{ "calculationDate": { "month": 10, "day": 1, "year": 2019 }, "priceCoveragePercent": 7.683124346337668, "matchedPropertyCount": 486546, "priceCoverageBuckets": [ { "availablePriceCount": "57708897", "advanceBookingWindowRange": "DAYS_0_TO_30", "priceCoveragePercent": 54.65867924338515, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "44221", "advanceBookingWindowRange": "DAYS_0_TO_30", "priceCoveragePercent": 0.04188368831276978, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "59988397", "advanceBookingWindowRange": "DAYS_31_TO_60", "priceCoveragePercent": 58.71161890824986, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "8805", "advanceBookingWindowRange": "DAYS_31_TO_60", "priceCoveragePercent": 0.008617596574336533, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "55096752", "advanceBookingWindowRange": "DAYS_61_TO_90", "priceCoveragePercent": 53.9240864613594, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "11747", "advanceBookingWindowRange": "DAYS_61_TO_90", "priceCoveragePercent": 0.011496979779526548, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "117074", "advanceBookingWindowRange": "DAYS_91_TO_120", "priceCoveragePercent": 0.11458222616057641, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "7527", "advanceBookingWindowRange": "DAYS_91_TO_120", "priceCoveragePercent": 0.007366797207839987, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "71904", "advanceBookingWindowRange": "DAYS_121_TO_150", "priceCoveragePercent": 0.07037361318354277, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "5544", "advanceBookingWindowRange": "DAYS_121_TO_150", "priceCoveragePercent": 0.005426002885646989, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "56528", "advanceBookingWindowRange": "DAYS_151_TO_180", "priceCoveragePercent": 0.05532487213561562, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "4680", "advanceBookingWindowRange": "DAYS_151_TO_180", "priceCoveragePercent": 0.00458039204632538, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "29269", "advanceBookingWindowRange": "DAYS_181_TO_210", "priceCoveragePercent": 0.02864604589826871, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "2336", "advanceBookingWindowRange": "DAYS_181_TO_210", "priceCoveragePercent": 0.0022862811581658314, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "22967", "advanceBookingWindowRange": "DAYS_211_TO_240", "priceCoveragePercent": 0.022478176095716885, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "1906", "advanceBookingWindowRange": "DAYS_211_TO_240", "priceCoveragePercent": 0.001865433171003456, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "19387", "advanceBookingWindowRange": "DAYS_241_TO_270", "priceCoveragePercent": 0.01897437192352781, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "2179", "advanceBookingWindowRange": "DAYS_241_TO_270", "priceCoveragePercent": 0.0021326227070391033, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "14102", "advanceBookingWindowRange": "DAYS_271_TO_300", "priceCoveragePercent": 0.013801856546427458, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "2048", "advanceBookingWindowRange": "DAYS_271_TO_300", "priceCoveragePercent": 0.0020044108783919615, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "10280", "advanceBookingWindowRange": "DAYS_301_TO_330", "priceCoveragePercent": 0.010061203041928398, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "1333", "advanceBookingWindowRange": "DAYS_301_TO_330", "priceCoveragePercent": 0.0013046287602033614, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" } ], "priceCoverageBinaryPercent": 76.38722751805585 }
Получение истории покрытия цен
Этот запрос получает всю историю ценового покрытия для аккаунта:
GET https://travelpartner.googleapis.com/v3/accounts/12345678/priceCoverageViews
{ "priceCoverageViews": [ { "calculationDate": { "month": 9, "day": 17, "year": 2019 }, "priceCoveragePercent": 7.75351958685931, "matchedPropertyCount": 492550, "priceCoverageBuckets": [ { "availablePriceCount": "57557901", "advanceBookingWindowRange": "DAYS_0_TO_30", "priceCoveragePercent": 53.85113864788107, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "40549", "advanceBookingWindowRange": "DAYS_0_TO_30", "priceCoveragePercent": 0.037937620780037304, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "60927294", "advanceBookingWindowRange": "DAYS_31_TO_60", "priceCoveragePercent": 58.90365880186203, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "9151", "advanceBookingWindowRange": "DAYS_31_TO_60", "priceCoveragePercent": 0.00884705927848756, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "58125328", "advanceBookingWindowRange": "DAYS_61_TO_90", "priceCoveragePercent": 56.19475711917089, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "6943", "advanceBookingWindowRange": "DAYS_61_TO_90", "priceCoveragePercent": 0.0067123956475291366, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "112206", "advanceBookingWindowRange": "DAYS_91_TO_120", "priceCoveragePercent": 0.10847919718085183, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "9665", "advanceBookingWindowRange": "DAYS_91_TO_120", "priceCoveragePercent": 0.00934398731576683, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "42373", "advanceBookingWindowRange": "DAYS_121_TO_150", "priceCoveragePercent": 0.04096562592146797, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "4123", "advanceBookingWindowRange": "DAYS_121_TO_150", "priceCoveragePercent": 0.0039860589449463675, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "34813", "advanceBookingWindowRange": "DAYS_151_TO_180", "priceCoveragePercent": 0.033656723271990756, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "3296", "advanceBookingWindowRange": "DAYS_151_TO_180", "priceCoveragePercent": 0.003186526869401704, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "26839", "advanceBookingWindowRange": "DAYS_181_TO_210", "priceCoveragePercent": 0.02594757119170884, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "2188", "advanceBookingWindowRange": "DAYS_181_TO_210", "priceCoveragePercent": 0.00211532790966351, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "20301", "advanceBookingWindowRange": "DAYS_211_TO_240", "priceCoveragePercent": 0.0196267239004017, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "1589", "advanceBookingWindowRange": "DAYS_211_TO_240", "priceCoveragePercent": 0.0015362230568808583, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "17661", "advanceBookingWindowRange": "DAYS_241_TO_270", "priceCoveragePercent": 0.01707440868947315, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "1768", "advanceBookingWindowRange": "DAYS_241_TO_270", "priceCoveragePercent": 0.0017092777624703316, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "14245", "advanceBookingWindowRange": "DAYS_271_TO_300", "priceCoveragePercent": 0.013771867492301967, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "2019", "advanceBookingWindowRange": "DAYS_271_TO_300", "priceCoveragePercent": 0.0019519410647214931, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" }, { "availablePriceCount": "10625", "advanceBookingWindowRange": "DAYS_301_TO_330", "priceCoveragePercent": 0.010272101937922665, "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7" }, { "availablePriceCount": "1401", "advanceBookingWindowRange": "DAYS_301_TO_330", "priceCoveragePercent": 0.0013544672767086734, "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14" } ], "priceCoverageBinaryPercent": 77.83737691604914 }, ... ] }
Цена
Служба просмотра цен позволяет получить отчет о ценах для данного свойства.
Получение данных о ценах на недвижимость
Чтобы получить отчет о ценах для определенного отеля (ID= 101
), принадлежащего учетной записи 12345678
, выполните этот запрос:
GET https://travelpartner.googleapis.com/v3/accounts/12345678/priceViews/101
{ "perItineraryPrices": [ { "updateTime": "2019-09-30T23:24:32Z", "checkinDate": { "month": 9, "day": 30, "year": 2019 }, "taxes": 8.83, "currencyCode": "USD", "lengthOfStayDays": 1, "roomAvailable": true, "price": 68.25 }, ... { "updateTime": "2019-10-02T03:32:22.347810Z", "checkinDate": { "month": 4, "day": 23, "year": 2020 }, "currencyCode": "USD", "price": -1, "lengthOfStayDays": 3, "allInclusive": true } ], "name": "accounts/12345678/priceViews/101" }
Отчеты о сверке
Служба отчетов о сверке
Получение списка отчетов сверки
В следующем примере получается список отчетов для учетной записи 12345678
:
GET https://travelpartner.googleapis.com/v3/accounts/12345678/reconciliationReports
Вы можете включить необязательные параметры запроса даты начала и окончания, чтобы ограничить результаты. Например, этот запрос ограничивает отчеты только периодом с 15.06.2019 по 15.09.2019:
GET base_url/reconciliationReports?startDate=2019-06-15&endDate=2019-09-15
{ "reconciliationReports": [ { "name": "accounts/12345678/reconciliationReports/2019-09-19T08:32:00~booking_report.csv" } ] }
Скачивание отчета о сверке
В этом примере извлекается отчет booking_report.csv
(в виде ответа JSON), который был загружен в 2019-08-26T12:00:00
:
GET base_url/reconciliationReports/2019-08-26T12%3A00%3A00~bookings.csv
{ "contents": "Hotel ID,Hotel Name,Hotel Address,Hotel City,Hotel State/Region,Hotel PostalCode,Hotel Country Code,Hotel Phone Number,Booking Reference,Booking Date and Time,Check-in Date,Check-out Date,Number of Rooms,Number of Guests,Booking Revenue,Booking Revenue Currency,Booking Revenue Currency to Billing Currency Conversion Rate,Booking Status,Commission,Commission Currency,Commission Currency to Billing Currency Conversion Rate,Payment Date,Payment Status\n\n111,\"Capybara Hotel and Spa\",123 Foo Driveway,Boston,MA,02472,US,+11234567890,2thHRTY,2016-01-04,2016-02-01,2016-02-03,1,4,213.88,USD,1,Stayed,21.39,USD,1.0,2016-06-07,Invoice Required\n\n211,\"Mabels Gabels\",45678 Bar Street,London,,KT13 0PU,GB,+440203456123,z452121A,2016-02-04,2016-02-01,2016-02-03,1,3,414.21,GBP,1.249,Stayed,64.43,USD,1.0,2016-06-07,Invoice Required\n\n311,\"No-Tell Motels\",66 Acacia Avenue,Geneva,,1211,CH,+412241820000,42,2016-03-04,2016-02-01,2016-02-03,1,2,451.15,CHF,1.05,Stayed,37.41,EUR,0.99889,2016-06-07,Invoice Required" }
Проверка отчета о сверке
Вы можете использовать этот метод для проверки отчета перед его загрузкой. Проверка отчета не загружает его.
Отчет о сверке включается в тело запроса как значение поля contents
. Отчет о сверке должен следовать синтаксису, описанному в отчетах о сверке.
В следующем примере проверяется отчет для учетной записи 12345678
:
POST https://travelpartner.googleapis.com/v3/accounts/12345678/reconciliationReports:validate
{ "successfulRecordCount": 3 }
Загрузка отчета о сверке
После того, как вы подтвердите, что отчет сверки действителен, вы можете загрузить его в Google, как в этом примере:
POST https://travelpartner.googleapis.com/v3/accounts/12345678/reconciliationReports
{ "successfulRecordCount": 3, "reconciliationReport": { "name": "accounts/12345678/reconciliationReports/2019-09-30T09:17~2019-09-19T08:32:00~booking_report.csv" } }