UNPKG

openapi-directory

Version:

Building & bundling https://github.com/APIs-guru/openapi-directory for easy use from JS

1 lines 91.5 kB
{"openapi":"3.0.0","servers":[{"url":"https://travelpartner.googleapis.com/"}],"info":{"contact":{"name":"Google","url":"https://google.com"},"description":"The Travel Partner API provides you with a RESTful interface to the Google Hotel Center platform. It enables an app to efficiently retrieve and change Hotel Center data, and is thus suitable for managing large or complex accounts.","license":{"name":"Creative Commons Attribution 3.0","url":"http://creativecommons.org/licenses/by/3.0/"},"termsOfService":"https://developers.google.com/terms/","title":"Travel Partner API","version":"v3","x-origin":[{"format":"google","url":"https://travelpartner.googleapis.com/$discovery/rest?version=v3","version":"v1"}],"x-providerName":"google.com"},"externalDocs":{"url":"https://developers.google.com/hotels/hotel-prices/api-reference"},"tags":[{"name":"accounts"}],"paths":{"/v3/{account}/hotels:setLiveOnGoogle":{"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}],"post":{"description":"Collection-level custom method to update the Live on Google status for multiple properties. Each call can turn on or off multiple hotels. To turn some hotels on and turn some hotels off, you will have to make multiple calls.","operationId":"travelpartner.accounts.hotels.setLiveOnGoogle","parameters":[{"description":"Required. The resource name of the account. The format is accounts/{account_id}.","in":"path","name":"account","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetLiveOnGoogleRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SetLiveOnGoogleResponse"}}},"description":"Successful response"}},"tags":["accounts"]}},"/v3/{name}":{"delete":{"description":"Deletes an account link.","operationId":"travelpartner.accounts.accountLinks.delete","parameters":[{"description":"Required. The resource name of the account link being deleted. The format is `accounts/{account_id}/accountLinks/{account_link_id}`.","in":"path","name":"name","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Empty"}}},"description":"Successful response"}},"tags":["accounts"]},"get":{"description":"Returns a reconciliation report.","operationId":"travelpartner.accounts.reconciliationReports.get","parameters":[{"description":"The resource name of the reconciliation report to fetch. The format is `accounts/{account_id}/reconciliationReports/{datetime}~{filename}`.","in":"path","name":"name","required":true,"schema":{"type":"string"}},{"description":"Set to true if matched prices are to be added into the report.","in":"query","name":"includeMatchedPrices","schema":{"type":"boolean"}},{"description":"Set to true if non-account impacting rows are to be added into the report.","in":"query","name":"includeNonScoring","schema":{"type":"boolean"}},{"description":"Set to true if pixel signals are to be added into the report.","in":"query","name":"includePixels","schema":{"type":"boolean"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconciliationReport"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}],"patch":{"description":"Updates a brand.","operationId":"travelpartner.accounts.brands.patch","parameters":[{"description":"Output only. The resource name for the brand in the format `accounts/{account_id}/brands/{brand_id}`. The `brand_id` corresponds to the partner's brand identifier used for landing page matching and the property-level brand identifier. A default brand is applied to properties that do not have a brand. The `brand_id` of the default brand is `NO_BRAND_ID`. It can be fetched and updated like any configured brand.","in":"path","name":"name","required":true,"schema":{"type":"string"}},{"description":"When true, and the Brand is not found, a new Brand will be created. In this situation, `update_mask` is ignored.","in":"query","name":"allowMissing","schema":{"type":"boolean"}},{"description":"Required. The field to update. Only the `display_names` and `icon` fields can be updated. Use the syntax shown in the example URI below and provide the new value in the request body. Example request URI and request body: ``` PATCH https://travelpartner.googleapis.com/v3/accounts/123456789/ brands/my-brand?update_mask=brand.display_names ``` ``` { \"display_names\": [{ \"language\": \"en\" \"text\": \"Gilles' Gites\" }] } ``` The information above is sufficient for forming the URI and request body. The sentence below is auto-generated, supplemental information about the `FieldMask` format in general.","in":"query","name":"updateMask","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Brand"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Brand"}}},"description":"Successful response"}},"tags":["accounts"]}},"/v3/{name}/freeBookingLinksReportViews:query":{"get":{"description":"**DEPRECATED:** Use PropertyPerformanceReportService.QueryPropertyPerformanceReport, which also has impression reporting, instead. Provides the ability to query (get, filter, and segment) a free booking links report for a specific account.","operationId":"travelpartner.accounts.freeBookingLinksReportViews.query","parameters":[{"description":"The resource name of the account being queried. Format: accounts/{account_id}","in":"path","name":"name","required":true,"schema":{"type":"string"}},{"description":"Specifies how to segment the metrics returned by the query. For example, if `userRegionCode` is specified, the `freeBookingLinksResult` will provide metrics aggregated by user region. The string value is a comma-separated list of fields. Valid fields are: `date`, `userRegionCode`, `deviceType`, `partnerHotelId`, and `partnerHotelDisplayName`. Only fields specified here are included in the FreeBookingLinksResult.","in":"query","name":"aggregateBy","schema":{"type":"string"}},{"description":"The conditions (fields and expressions) used to filter the free booking link metrics for the account being queried. The syntax requires spaces surrounding the `in` operator. Otherwise, spaces can be omitted. Conditions can be joined using the `and` operator. The `date` field is required. All other fields are optional. The `date` field values are inclusive and must be in YYYY-MM-DD format. The earliest acceptable date is 2021-03-09; earlier date values will be coerced to 2021-03-09. Values for `partnerHotelDisplayName` are matched case-insensitively. Examples of valid conditions are as follows: * `date = '2021-12-03'` * `date between '2021-12-03' and '2021-12-08'` * `deviceType = 'TABLET'` * `deviceType in ('MOBILE', 'TABLET')` * `partnerHotelId = 'AAA'` * `partnerHotelId in ('AAA', 'BBB')` * `partnerHotelDisplayName = 'hotel A'` * `partnerHotelDisplayName in ('Hotel A', 'HOTEL b')` * `userRegionCode = 'US'` * `userRegionCode in ('US', 'CA')`","in":"query","name":"filter","schema":{"type":"string"}},{"description":"The maximum number of participation results to return. The service may return fewer than this value. If unspecified, at most 10,000 results will be returned. The maximum value is 10,000; values above 10,000 will be coerced to 10,000.","in":"query","name":"pageSize","schema":{"type":"integer"}},{"description":"A page token, received from a previous QueryParticipationReport request. Provide this to receive the subsequent page. When paginating, all other parameters provided to QueryParticipationReport must match the call that provided the page token.","in":"query","name":"pageToken","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryFreeBookingLinksReportResponse"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}]},"/v3/{name}/participationReportViews:query":{"get":{"description":"Provides the ability to query (get, filter, and segment) a participation report for a particular account.","operationId":"travelpartner.accounts.participationReportViews.query","parameters":[{"description":"The resource name of the account being queried. The format is `accounts/{account_id}`.","in":"path","name":"name","required":true,"schema":{"type":"string"}},{"description":"Specifies how to segment the metrics returned by the query. For example, if `userRegionCode` is specified as the `aggregate_by` value, the `participationResult` will provide metrics aggregated by user region. The string value is a comma-separated list of fields. Valid fields are: `date`, `userRegionCode`, `deviceType`, `partnerHotelId`, `hotelRegionCode`, `advanceBookingWindow`, `lengthOfStayDays`, `checkinDate`, and `occupancy`. Fields that are not specified are not included in the ParticipationResult. Using an `aggregateBy` specification that produces a large number of rows will cause an error. This is especially true when aggregating by `partnerHotelId` or more than two fields. To reduce the possibiliy of an error, filter by `partnerHotelId` and `date` to only include a select number of hotels and dates. Accounts with a large number of hotels will need to further reduce data with more filtering.","in":"query","name":"aggregateBy","schema":{"type":"string"}},{"description":"The conditions (fields and expressions) used to filter the participation metrics for the account being queried. The syntax requires spaces surrounding the `in` operator. Otherwise, spaces can be omitted. Conditions can be joined using the `and` operator. The `date` field is required. All other fields are optional. Examples of valid conditions are as follows: * `advanceBookingWindow = 2` * `advanceBookingWindow >= 0` * `advanceBookingWindow <= 5` * `advanceBookingWindow between 1 and 5` * `checkinDate = '2020-10-01'` * `checkinDate >= '2020-10-01'` * `checkinDate <= '2020-10-01'` * `checkinDate between '2020-10-01' and '2020-10-05'` * `date = '2020-02-04'` * `date between '2020-02-04' and '2020-02-09'` * `deviceType = 'TABLET'` * `deviceType in ('MOBILE', 'TABLET')` * `hotelRegionCode = 'US'` * `hotelRegionCode in ('US', 'CA')` * `lengthOfStayDays = 2` * `lengthOfStayDays >= 0` * `lengthOfStayDays <= 5` * `lengthOfStayDays between 1 and 5` * `occupancy = 2` * `occupancy >= 0` * `occupancy <= 5` * `occupancy between 1 and 5` * `partnerHotelId = 'AAA'` * `partnerHotelId in ('AAA', 'BBB')` * `userRegionCode = 'US'` * `userRegionCode in ('US', 'CA')`","in":"query","name":"filter","schema":{"type":"string"}},{"description":"The maximum number of participation results to return. The service may return fewer than this value. If unspecified, at most 10,000 results will be returned. The maximum value is 10,000; values above 10,000 will be coerced to 10,000.","in":"query","name":"pageSize","schema":{"type":"integer"}},{"description":"A page token, received from a previous QueryParticipationReport request. Provide this to receive the subsequent page. When paginating, all other parameters provided to QueryParticipationReport must match the call that provided the page token.","in":"query","name":"pageToken","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryParticipationReportResponse"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}]},"/v3/{name}/propertyPerformanceReportViews:query":{"get":{"description":"Provides the ability to query (get, filter, and segment) a property performance links report for a specific account.","operationId":"travelpartner.accounts.propertyPerformanceReportViews.query","parameters":[{"description":"The resource name of the account being queried. Format: accounts/{account_id}","in":"path","name":"name","required":true,"schema":{"type":"string"}},{"description":"Specifies how to segment the metrics returned by the query. For example, if `userRegionCode` is specified, the `PropertyPerformanceResult` will provide metrics aggregated by user region. The string value is a comma-separated list of fields. Valid fields are: `advanceBookingWindow`, `brand`, `date`, `deviceType`, `highIntentUsers`, `lengthOfStay`, `propertyRegionCode`, `occupancy`, `partnerPropertyId`, `partnerPropertyDisplayName`, and `userRegionCode`. Only fields specified here are included in the PropertyPerformanceResult.","in":"query","name":"aggregateBy","schema":{"type":"string"}},{"description":"The conditions (fields and expressions) used to filter the property performance metrics for the account being queried. The syntax requires spaces surrounding the `in` operator. Otherwise, spaces can be omitted. Conditions can be joined using the `and` operator. The `date` field is required. All other fields are optional. The `date` field values are inclusive and must be in YYYY-MM-DD format. The earliest acceptable date is 2021-03-09; earlier date values will be coerced to 2021-03-09. Values for `partnerPropertyDisplayName` and `brand` are matched case-insensitively. Examples of valid conditions are as follows: * `advanceBookingWindow = 'ADVANCE_BOOKING_WINDOW_SAME_DAY'` * `advanceBookingWindow in ('ADVANCE_BOOKING_WINDOW_SAME_DAY', 'ADVANCE_BOOKING_WINDOW_DAYS_61_TO_90')` * `brand = 'Brand A'` * `brand in ('Brand A', 'brand B')` * `date = '2021-12-03'` * `date between '2021-12-03' and '2021-12-08'` * `deviceType = 'TABLET'` * `deviceType in ('MOBILE', 'TABLET')` * `highIntentUsers = 'TRUE'` * `highIntentUsers = 'FALSE'` * `lengthOfStay = 'LENGTH_OF_STAY_NIGHTS_2'` * `lengthOfStay in ('LENGTH_OF_STAY_NIGHTS_2', 'LENGTH_OF_STAY_NIGHTS_4_TO_7')` * `propertyRegionCode = 'US'` * `propertyRegionCode in ('US', 'CA')` * `occupancy = 'OCCUPANCY_2'` * `occupancy in ('OCCUPANCY_2', 'OCCUPANCY_OVER_4')` * `partnerPropertyId = 'AAA'` * `partnerPropertyId in ('AAA', 'BBB')` * `partnerPropertyDisplayName = 'hotel A'` * `partnerPropertyDisplayName in ('Hotel A', 'HOTEL b')` * `userRegionCode = 'US'` * `userRegionCode in ('US', 'CA')`","in":"query","name":"filter","schema":{"type":"string"}},{"description":"The maximum number of participation results to return. The service may return fewer than this value. If unspecified, at most 10,000 results will be returned. The maximum value is 10,000; values above 10,000 will be coerced to 10,000.","in":"query","name":"pageSize","schema":{"type":"integer"}},{"description":"A page token, received from a previous QueryParticipationReport request. Provide this to receive the subsequent page. When paginating, all other parameters provided to QueryParticipationReport must match the call that provided the page token.","in":"query","name":"pageToken","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/QueryPropertyPerformanceReportResponse"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}]},"/v3/{parent}/accountLinks":{"get":{"description":"Returns the account links for a Hotel Center account.","operationId":"travelpartner.accounts.accountLinks.list","parameters":[{"description":"The resource name of the account being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListAccountLinksResponse"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}],"post":{"description":"Creates a new account link between a Hotel Center account and a Google Ads account.","operationId":"travelpartner.accounts.accountLinks.create","parameters":[{"description":"The resource name of the Hotel Center account being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountLink"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AccountLink"}}},"description":"Successful response"}},"tags":["accounts"]}},"/v3/{parent}/brands":{"get":{"description":"Returns the brands for a partner account.","operationId":"travelpartner.accounts.brands.list","parameters":[{"description":"Required. The resource name of the account being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListBrandsResponse"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}],"post":{"description":"Creates a new brand. Because Google detects brands from your existing properties, you only need this operation when you want to configure a brand before you send its properties to Google. Note that it might take a couple of days after your listing feed first provides a brand for the brand to appear.","operationId":"travelpartner.accounts.brands.create","parameters":[{"description":"Required. The resource name of the Hotel Center account being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}},{"description":"Required. The partner-determined brand identifier.","in":"query","name":"brandId","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Brand"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Brand"}}},"description":"Successful response"}},"tags":["accounts"]}},"/v3/{parent}/hotelViews":{"get":{"description":"Returns the list of hotel views.","operationId":"travelpartner.accounts.hotelViews.list","parameters":[{"description":"The resource name of the account being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}},{"description":"Optional. The conditions (fields and expressions) used to filter HotelViews. The syntax requires spaces surrounding the `in` operator. Otherwise, spaces can be omitted. Conditions cannot be joined. The `hotelId` field can be used to select specific hotels. The `liveOnGoogle` field can select properties that Google shows, or properties that are omitted in google search results. The `matchStatus` field can be used to filter the list of HotelViews returned for the account. Examples of valid conditions and their syntax are as follows: * `hotelId = 'hotel_ABC'` * `hotelId in ('hotel_ABC', 'hotel_XYZ')` * `liveOnGoogle = 'TRUE'` * `liveOnGoogle = 'FALSE'` * `matchStatus = 'NOT_MATCHED'` * `matchStatus in ('NOT_MATCHED', 'MATCHED', 'MAP_OVERLAP')`","in":"query","name":"filter","schema":{"type":"string"}},{"description":"Number of elements to retrieve in a single page.","in":"query","name":"pageSize","schema":{"type":"integer"}},{"description":"Token of the page to retrieve.","in":"query","name":"pageToken","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListHotelViewsResponse"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}]},"/v3/{parent}/hotelViews:summarize":{"get":{"description":"Returns summarized information about hotels.","operationId":"travelpartner.accounts.hotelViews.summarize","parameters":[{"description":"The resource name of the account being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SummarizeHotelViewsResponse"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}]},"/v3/{parent}/icons":{"get":{"description":"Returns the `Icon`s for a partner account.","operationId":"travelpartner.accounts.icons.list","parameters":[{"description":"Required. The resource name of the queried partner account. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListIconsResponse"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}],"post":{"description":"Uploads a new icon and starts its review process. Generates an `icon_id` and includes it in the icon's resource name, which is the format `accounts/{account_id}/icons/{icon_id}` Returns HTTP status 400 and doesn't trigger the review process if the icon has any of these conditions: * Image is not in PNG format, or not convertible to PNG format. * Size less than 72 pixels * Size greater than 1200 pixels * Aspect ratio other than 1:1","operationId":"travelpartner.accounts.icons.create","parameters":[{"description":"Required. The resource name of the partner account owning the icon. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Icon"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Icon"}}},"description":"Successful response"}},"tags":["accounts"]}},"/v3/{parent}/listings:verify":{"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}],"post":{"description":"returns verified listings with data issues and serving eligibilities","operationId":"travelpartner.accounts.listings.verify","parameters":[{"description":"The resource name of the account being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyListingsRequest"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyListingsResponse"}}},"description":"Successful response"}},"tags":["accounts"]}},"/v3/{parent}/priceAccuracyViews":{"get":{"description":"Lists the available price accuracy views.","operationId":"travelpartner.accounts.priceAccuracyViews.list","parameters":[{"description":"The resource name of the account being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPriceAccuracyViewsResponse"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}]},"/v3/{parent}/priceAccuracyViews:summarize":{"get":{"description":"Returns the price accuracy summary.","operationId":"travelpartner.accounts.priceAccuracyViews.summarize","parameters":[{"description":"The resource name of the account that is being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SummarizePriceAccuracyResponse"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}]},"/v3/{parent}/priceCoverageViews":{"get":{"description":"Returns the entire price coverage history.","operationId":"travelpartner.accounts.priceCoverageViews.list","parameters":[{"description":"The resource name of the account being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListPriceCoverageViewsResponse"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}]},"/v3/{parent}/priceCoverageViews:latest":{"get":{"description":"Returns the latest price coverage view in full detail.","operationId":"travelpartner.accounts.priceCoverageViews.getLatest","parameters":[{"description":"The resource name of the account being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceCoverageView"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}]},"/v3/{parent}/reconciliationReports":{"get":{"description":"Returns a list of the names of created reconciliation reports.","operationId":"travelpartner.accounts.reconciliationReports.list","parameters":[{"description":"The resource name of the account being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}},{"description":"End of date range to fetch files for. Format is yyyy-mm-dd[THH[:MM[:SS]]]. If empty, reports until the end of time are fetched.","in":"query","name":"endDate","schema":{"type":"string"}},{"description":"Beginning of date range to fetch files for. Format is yyyy-MM-dd[THH[:mm[:SS]]]. If empty, reports from the beginning of time onwards are fetched.","in":"query","name":"startDate","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ListReconciliationReportsResponse"}}},"description":"Successful response"}},"tags":["accounts"]},"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}],"post":{"description":"Creates a reconciliation report and uploads it to Google.","operationId":"travelpartner.accounts.reconciliationReports.create","parameters":[{"description":"The resource name of the account being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconciliationReport"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateReconciliationReportResponse"}}},"description":"Successful response"}},"tags":["accounts"]}},"/v3/{parent}/reconciliationReports:validate":{"parameters":[{"$ref":"#/components/parameters/_.xgafv"},{"$ref":"#/components/parameters/access_token"},{"$ref":"#/components/parameters/alt"},{"$ref":"#/components/parameters/callback"},{"$ref":"#/components/parameters/fields"},{"$ref":"#/components/parameters/key"},{"$ref":"#/components/parameters/oauth_token"},{"$ref":"#/components/parameters/prettyPrint"},{"$ref":"#/components/parameters/quotaUser"},{"$ref":"#/components/parameters/upload_protocol"},{"$ref":"#/components/parameters/uploadType"}],"post":{"description":"Validates a reconciliation report.","operationId":"travelpartner.accounts.reconciliationReports.validate","parameters":[{"description":"The resource name of the account being queried. The format is `accounts/{account_id}`.","in":"path","name":"parent","required":true,"schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReconciliationReport"}}}},"responses":{"200":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidateReconciliationReportResponse"}}},"description":"Successful response"}},"tags":["accounts"]}}},"components":{"parameters":{"_.xgafv":{"description":"V1 error format.","in":"query","name":"$.xgafv","schema":{"enum":["1","2"],"type":"string"}},"access_token":{"description":"OAuth access token.","in":"query","name":"access_token","schema":{"type":"string"}},"alt":{"description":"Data format for response.","in":"query","name":"alt","schema":{"enum":["json","media","proto"],"type":"string"}},"callback":{"description":"JSONP","in":"query","name":"callback","schema":{"type":"string"}},"fields":{"description":"Selector specifying which fields to include in a partial response.","in":"query","name":"fields","schema":{"type":"string"}},"key":{"description":"API key. Your API key identifies your project and provides you with API access, quota, and reports. Required unless you provide an OAuth 2.0 token.","in":"query","name":"key","schema":{"type":"string"}},"oauth_token":{"description":"OAuth 2.0 token for the current user.","in":"query","name":"oauth_token","schema":{"type":"string"}},"prettyPrint":{"description":"Returns response with indentations and line breaks.","in":"query","name":"prettyPrint","schema":{"type":"boolean"}},"quotaUser":{"description":"Available to use for quota purposes for server-side applications. Can be any arbitrary string assigned to a user, but should not exceed 40 characters.","in":"query","name":"quotaUser","schema":{"type":"string"}},"uploadType":{"description":"Legacy upload protocol for media (e.g. \"media\", \"multipart\").","in":"query","name":"uploadType","schema":{"type":"string"}},"upload_protocol":{"description":"Upload protocol for media (e.g. \"raw\", \"multipart\").","in":"query","name":"upload_protocol","schema":{"type":"string"}}},"schemas":{"AccountLink":{"description":"An account link. Represents the link between a Google Ads customer and a Hotel Ads (Hotel Center) account. An account link defines the set of hotels under the Hotel Center account that is linked to the Google Ads customer.","properties":{"accountLinkTarget":{"$ref":"#/components/schemas/AccountLinkTarget","description":"Required for CREATE requests. The properties in the Hotel Center account that can be managed using the linked Google Ads account."},"googleAdsCustomerName":{"description":"Required for CREATE requests. The value representing the Google Ads customer ID in the format `customers/{google_ads_customer_id}`. For example: `customers/0123456789`. Note that the `googleAdsCustomerName` field is not returned in responses to GET requests.","type":"string"},"name":{"description":"The resource name for the account link in the format `accounts/{account_id}/accountLinks/{account_link_id}`.","type":"string"},"status":{"description":"The current status of the account link.","enum":["ACCOUNT_LINK_STATUS_UNSPECIFIED","ACCOUNT_LINK_STATUS_UNKNOWN","REQUESTED_FROM_HOTEL_CENTER","REQUESTED_FROM_GOOGLE_ADS","APPROVED"],"type":"string"}},"type":"object"},"AccountLinkTarget":{"description":"Defines whether all properties or a subset of properties in the Hotel Center account can be managed with the linked Google Ads account. If a subset, the specific properties are specified.","properties":{"allHotels":{"description":"True if all properties under the Hotel Center account are made available to the account link. The default is `false`.","type":"boolean"},"hotelList":{"$ref":"#/components/schemas/HotelList","description":"List of properties that is made available to the account link."}},"type":"object"},"Brand":{"description":"Brand-level icon and display name configuration. Once approved, the icon and display name appear in the search results for properties that the partner has assigned to this brand.","properties":{"activeDisplayNames":{"description":"Output only. The brand's active display names in all provided languages, only present if the display name is approved for all provided languages.","items":{"$ref":"#/components/schemas/LocalizedText"},"readOnly":true,"type":"array"},"activeIcon":{"description":"Output only. The brand's active [accounts.icon](/hotels/hotel-prices/api-reference/rest/v3/accounts.icons#resource:-iconresource). The value refers to the icons's resource name in the format `accounts/{account_id}/icons/{icon_id}`. An active icon is one that has been approved.","readOnly":true,"type":"string"},"activeIconUri":{"description":"Output only. URL of the active icon, only present when the icon has been approved.","readOnly":true,"type":"string"},"displayNameDisapprovalReason":{"description":"Output only. Display name's disapproval reason. Only applies to display names with the review state 'REJECTED'.","items":{"$ref":"#/components/schemas/DisplayNameDisapprovalReason"},"readOnly":true,"type":"array"},"displayNameState":{"description":"Output only. The brand's display names review state, which applies to all display name language entries. If there are both submitted and active display names, this refers to the submitted display names.","enum":["REVIEW_STATE_UNSPECIFIED","REVIEW_STATE_NEW","APPROVED","REJECTED"],"readOnly":true,"type":"string"},"displayNames":{"description":"Input only. The name Google displays for the brand's properties. Setting the display names is only necessary if you want to override the landing page display name or account-level display name for the brand. Google reviews the display names for appropriate content. When there are multiple languages, Google will only show the display names once Google approves all the languages.","items":{"$ref":"#/components/schemas/LocalizedText"},"type":"array"},"icon":{"description":"Input only. The brand's [accounts.icon](/hotels/hotel-prices/api-reference/rest/v3/accounts.icons#resource:-iconresource) identifying the brand's icon. The value refers to the icons's resource name in the format `accounts/{account_id}/icons/{icon_id}`.","type":"string"},"iconDisapprovalReasons":{"description":"Output only. The icon's disapproval reason(s). Only applies to submitted icons with `REJECTED` state.","items":{"enum":["IMAGE_DISAPPROVAL_REASON_UNSPECIFIED","NOT_LIKE_SITE","OFFENSIVE","LOW_QUALITY","ANIMATED","BAD_BACKGROUND","TEXT_TOO_SMALL"],"type":"string"},"readOnly":true,"type":"array"},"iconState":{"description":"Output only. The brand's icon's review state. If there are both submitted and active icons, this refers to the submitted icon.","enum":["REVIEW_STATE_UNSPECIFIED","REVIEW_STATE_NEW","APPROVED","REJECTED"],"readOnly":true,"type":"string"},"name":{"description":"Output only. The resource name for the brand in the format `accounts/{account_id}/brands/{brand_id}`. The `brand_id` corresponds to the partner's brand identifier used for landing page matching and the property-level brand identifier. A default brand is applied to properties that do not have a brand. The `brand_id` of the default brand is `NO_BRAND_ID`. It can be fetched and updated like any configured brand.","readOnly":true,"type":"string"},"propertyCount":{"description":"Output only. The number of properties with the corresponding brand ID.","format":"int64","readOnly":true,"type":"string"},"submittedDisplayNames":{"description":"Output only. The brand's submitted display names in all provided languages, only present if the display name is new or rejected for any language.","items":{"$ref":"#/components/schemas/LocalizedText"},"readOnly":true,"type":"array"},"submittedIcon":{"description":"Output only. The brand's submitted [accounts.icon](/hotels/hotel-prices/api-reference/rest/v3/accounts.icons#resource:-iconresource). The value refers to the icons's resource name in the format `accounts/{account_id}/icons/{icon_id}`. A submitted icon is one that is new or rejected.","readOnly":true,"type":"string"}},"type":"object"},"CreateReconciliationReportResponse":{"description":"Response message for ReconciliationReportService.CreateReconciliationReport.","properties":{"issues":{"description":"Issues that were encountered when validating the file.","items":{"$ref":"#/components/schemas/ReconciliationReportValidationIssue"},"type":"array"},"reconciliationReport":{"$ref":"#/components/schemas/ReconciliationReport","description":"Resource name of the new reconciliation report. The format is `accounts/{account_id}`."},"successfulRecordCount":{"description":"The number of commission records that were successfully saved.","format":"int32","type":"integer"}},"type":"object"},"DataIssueDetail":{"description":"Details on a data issue in the listing.","properties":{"dataIssueSeverity":{"description":"The severity of the data issue.","enum":["DATA_ISSUE_SEVERITY_UNSPECIFIED","ERROR","WARNING","INFO"],"type":"string"},"dataIssueType":{"description":"The type of the data issue.","enum":["FEED_DATA_ISSUE_UNSPECIFIED","FEED_DATA_ISSUE_UNKNOWN","NO_DATA_ISSUE","DUPLICATE_ADDRESS","MISSING_PHYSICAL_STREET_ADDRESS","MISSING_STREET_NAME","MISSING_STREET_NUMBER","MISSING_ADDRESS","MISSING_COUNTRY","INVALID_POSTAL_CODE","INVALID_POSTAL_CODE_SUFFIX","UNEXPECTED_POSTAL_CODE_SUFFIX","UNEXPECTED_POSTAL_CODE","INVALID_AMENITIES","INVALID_EMAIL_ADDRESS","DUPLICATE_LATLONG","LATLONG_INCONSISTENT_WITH_ADDRESS","MISSING_LATLONG","COULD_NOT_GEOCODE","MISSING_HOTEL_NAME","HOTEL_NAME_EMPTY","INVALID_HOTEL_NAME","HOTEL_NAME_TOO_LONG","PARSE_ERROR_IN_XML","UNEXPECTED_ATTRIBUTE_IN_XML","DUPLICATE_PHONE_NUMBER","MISSING_PHONE_NUMBER","MISSING_VOICE_PHONE_NUMBER","INVALID_PHONE_NUMBER_FORMAT","INVALID_PHONE_NUMBER","INVALID_PHONE_NUMBER_COUNTRY_CODE","PHONE_NUMBER_TOO_LONG","PHONE_NUMBER_TOO_SHORT","INVALID_WEBSITE_URL","ADWORDS_ATTRIBUTE_TOO_LONG","BRAND_NOT_ALLOWED","FLAGGED_DUE_TO_SUSPICIOUS_METADATA","NOT_ENOUGH_IMAGES_PROVIDED","IMAGE_PROCESSING_IN_PROGRESS","CANNOT_FETCH_IMAGES","INCOMPATIBLE_IMAGE_SIZE_OR_LOW_QUALITY","MISSING_LANG_IN_RAW_LISTING","IS_HOTEL","MISSING_REQ_ATTR","MISSING_NAME","MISSING_LANG_IN_NAME","VR_NAME_TOO_LONG","TEST_PROPERTY","NON_VR_ACCOMMODATION_TYPE_BASED_ON_LISTING_NAME","BRAND_NAME_TOO_LONG","MISSING_BRAND_NAME","INVALID_REVIEW_RATING","INVALID_CHECKIN_FORMAT","INVALID_CHECKOUT_FORMAT"],"type":"string"},"isSelfResolving":{"description":"Whether or not the issue is self-resolving. If true, the issue is expected to resolve itself. If false or not set, action is needed to resolve the issue. Refer to documentation on the data issue’s type for further information.","type":"boolean"}},"type":"object"},"Date":{"description":"Represents a whole or partial calendar date, such as a birthday. The time of day and time zone are either specified elsewhere or are insignificant. The date is relative to the Gregorian Calendar. This can represent one of the following: * A full date, with non-zero year, month, and day values. * A month and day, with a zero year (for example, an anniversary). * A year on its own, with a zero month and a zero day. * A year and month, with a zero day (for example, a credit card expiration date). Related types: * google.type.TimeOfDay * google.type.DateTime * google.protobuf.Timestamp","properties":{"day":{"description":"Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant.","format":"int32","type":"integer"},"month":{"description":"Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day.","format":"int32","type":"integer"},"year":{"description":"Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year.","format":"int32","type":"integer"}},"type":"object"},"DisplayNameDisapprovalReason":{"description":"Disapproval reason of the display name in a specific language.","properties":{"disapprovalReason":{"description":"Disapproval reason.","enum":["DISAPPROVAL_REASON_UNSPECIFIED","PUNCTUATION","MARKETING_LANGUAGE","LANDING_PAGE_NOT_MATCHED"],"type":"string"},"languageCode":{"description":"Language of the disapproved display name.","type":"string"}},"type":"object"},"Empty":{"description":"A generic empty message that you can re-use to avoid defining duplicated empty messages in your APIs. A typical example is to use it as the request or the response type of an API method. For instance: service Foo { rpc Bar(google.protobuf.Empty) returns (google.protobuf.Empty); }","properties":{},"type":"object"},"FreeBookingLinksResult":{"description":"**DEPRECATED:** Use `PropertyPerformanceResult` with `PropertyPerformanceReportService` instead. Represents a result from querying for free booking link stats for an account.","properties":{"clickCount":{"description":"The total number of clicks that were recorded for this result.","format":"int64","type":"string"},"date":{"$ref":"#/components/schemas/Date","description":"A date within the requested date range. Only present if `date` is specified in `aggregateBy` in the request."},"deviceType":{"description":"The user’s device type. Only present if `deviceType` is specified in `aggregateBy` in the request.","enum":["DEVICE_UNSPECIFIED","DEVICE_UNKNOWN","DESKTOP","MOBILE","TABLET"],"type":"string"},"partnerHotelDisplayName":{"description":"Partner's hotel name. Only present if `partnerHotelDisplayName` is specified in `aggregateBy` in the request.","type":"string"},"partnerHotelId":{"description":"Partner's hotel ID. Only present if `partnerHotelId` is specified in `aggregateBy` in the request.","type":"string"},"userRegionCode":{"description":"ISO 3116 region code of the country/region of the user. Only present if `userRegionCode` is specified in `aggregateBy` in the request","type":"string"}},"type":"object"},"HotelList":{"description":"The properties in the Hotel Center account that can be managed with the Google Ads account.","properties":{"partnerHotelIds":{"description":"Hotel IDs.","items":{"type":"string"},"type":"array"}},"type":"object"},"HotelPricePerItinerary":{"description":"Hotel price for a given itinerary.","properties":{"checkinDate":{"$ref":"#/components/schemas/Date","description":"Check-in date."},"currencyCode":{"description":"Currency for `price`, `taxes`, and `fees`.","type":"string"},"fees":{"description":"Fees for this itinerary.","format":"float","type":"number"},"lengthOfStayDays":{"description":"Number of nights for the itinerary.","format":"int32","type":"integer"},"price":{"description":"Hotel price for this itinerary.","format":"float","type":"number"},"taxes":{"description":"Taxes for this itinerary.","format":"float","type":"number"},"updateTime":{"description":"Update timestamp for this hotel price.","format":"google-datetime","type":"string"}},"type":"object"},"HotelView":{"description":"A hotel view.","properties":{"dataIssueDetail":{"description":"The type and severity of each data quality issue in the feed. If your feed contains data issues, update the feed and resubmit it. For more information, refer to this article.","items":{"$ref":"#/components/schemas/DataIssueDetail"},"type":"array"},"dataIssues":{"description":"DEPRECATED. Indicates that the hotel has data quality issues. The value of this field indicates the type of error. This has been replaced with the data_issue_detail field. If your feed contains data issues, update the feed and resubmit it. For more information, refer to this article.","items":{"enum":[