diff --git a/.github/workflows/release-sdk.yaml b/.github/workflows/release-sdk.yaml index 8e6ee3821b..f06e031614 100644 --- a/.github/workflows/release-sdk.yaml +++ b/.github/workflows/release-sdk.yaml @@ -7,7 +7,7 @@ on: description: | SDK Stack Core branch or ref to use type: string - default: 'legacy' + default: 'main' jobs: # run-examples: diff --git a/code/README.md b/code/README.md index 59523b245f..04b1f51e42 100644 --- a/code/README.md +++ b/code/README.md @@ -5,7 +5,7 @@ com.expediagroup rapid-sdk - 5.4.0 + 5.4.1 ``` diff --git a/code/pom.xml b/code/pom.xml index 8c6c970836..ace4fe7d62 100644 --- a/code/pom.xml +++ b/code/pom.xml @@ -4,9 +4,9 @@ 4.0.0 com.expediagroup rapid-sdk - 5.4.0 + 5.4.1 EG rapid-sdk for Java - EG rapid-sdk v5.4.0 + EG rapid-sdk v5.4.1 https://github.com/ExpediaGroup/test-sdk 2022 jar @@ -71,17 +71,17 @@ 3.6.0 3.3.1 3.5.3 - 3.6.0 + 3.6.1 3.5.0 0.8.13 2.0.0 1.2.1 - 4.6 - 1.7.0 - 2.1.20 - 1.10.1 - 3.1.2 + 5.0.0 + 1.7.1 + 2.1.21 + 1.10.2 + 3.1.3 0.27.0 2.0.17 1.7.0 @@ -131,14 +131,14 @@ com.fasterxml.jackson jackson-bom - 2.18.3 + 2.19.1 pom import com.squareup.okio okio-jvm - 3.10.2 + 3.15.0 org.jetbrains @@ -153,7 +153,7 @@ com.fasterxml.jackson.core jackson-annotations - 2.18.3 + 2.19.1 @@ -733,7 +733,7 @@ org.apache.commons commons-lang3 - 3.18.0 + 3.17.0 diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/client/RapidClient.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/client/RapidClient.kt index 48384b7285..9c5543d180 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/client/RapidClient.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/client/RapidClient.kt @@ -50,6 +50,8 @@ import com.expediagroup.sdk.rapid.operations.GetBookingReceiptOperation import com.expediagroup.sdk.rapid.operations.GetBookingReceiptOperationParams import com.expediagroup.sdk.rapid.operations.GetCalendarAvailabilityOperation import com.expediagroup.sdk.rapid.operations.GetCalendarAvailabilityOperationParams +import com.expediagroup.sdk.rapid.operations.GetCampaignsOperation +import com.expediagroup.sdk.rapid.operations.GetCampaignsOperationParams import com.expediagroup.sdk.rapid.operations.GetCategoriesReferenceOperation import com.expediagroup.sdk.rapid.operations.GetCategoriesReferenceOperationParams import com.expediagroup.sdk.rapid.operations.GetChainReferenceOperation @@ -68,6 +70,8 @@ import com.expediagroup.sdk.rapid.operations.GetPaymentOptionsOperation import com.expediagroup.sdk.rapid.operations.GetPaymentOptionsOperationParams import com.expediagroup.sdk.rapid.operations.GetPetAttributesReferenceOperation import com.expediagroup.sdk.rapid.operations.GetPetAttributesReferenceOperationParams +import com.expediagroup.sdk.rapid.operations.GetPromotionsOperation +import com.expediagroup.sdk.rapid.operations.GetPromotionsOperationParams import com.expediagroup.sdk.rapid.operations.GetPropertyCatalogFileOperation import com.expediagroup.sdk.rapid.operations.GetPropertyCatalogFileOperationParams import com.expediagroup.sdk.rapid.operations.GetPropertyContentFileOperation @@ -768,7 +772,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat * @param checkin Check-in date, in ISO 8601 format (YYYY-MM-DD). This can be up to 365 days in the future. Some partner configurations may extend this up to 500 days.
Note: Only needed for hard change if desired check-in date is different than original booking. If specified must also specify `checkout`. (optional) * @param checkout Check-out date, in ISO 8601 format (YYYY-MM-DD). Total length of stay cannot exceed 28 nights or 365 nights depending on Vacation Rental configurations.
Note: Only needed for hard change if desired check-out date is different than original booking. If specified must also specify `checkin`.
(optional) * @param exclusion Single exclusion type. Send multiple instances of this parameter to request multiple exclusions.
Note: Optional parameter for use with hard change requests.
* `refundable_damage_deposit` - Excludes Rapid supplied Vrbo rates with refundable damage deposits from the response. * `card_on_file` - Excludes Rapid supplied Vrbo rates with card-on-file damage collection from the response. (optional) - * @param filter Single filter type. Send multiple instances of this parameter to request multiple filters.
Note: Optional parameter for use with hard change requests.
This parameter cannot be set to `property_collect` if the existing booking is `expedia_collect` and vice versa.
* `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. (optional) + * @param filter Single filter type. Send multiple instances of this parameter to request multiple filters.
Note: Optional parameter for use with hard change requests.
This parameter cannot be set to `property_collect` if the existing booking is `expedia_collect` and vice versa.
* `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. * `deal` - Filters results to only show rates that have a promotion that is of the type deal. (optional) * @param include Modify the response by including types of responses that are not provided by default.
* `sale_scenario.mobile_promotion` - Enable the `mobile_promotion` flag under the `sale_scenario` section of the response. (optional) * @param occupancy Defines the requested occupancy for a single room. Each room must have at least 1 adult occupant.
Format: `numberOfAdults[-firstChildAge[,nextChildAge]]`
To request multiple rooms (of the same type), include one instance of occupancy for each room requested. Up to 8 rooms may be requested or booked at once.
Note: Only needed for hard change if desired occupancy is different than original booking.
Examples: * 2 adults, one 9-year-old and one 4-year-old would be represented by `occupancy=2-9,4`.
* A multi-room request to lodge an additional 2 adults would be represented by `occupancy=2-9,4&occupancy=2` (optional) * @param rateOption Request specific rate options for each property. Send multiple instances of this parameter to request multiple rate options. Note: Optional parameter for use with hard change requests.
Accepted values:
* `member` - Return member rates for each property. This feature must be enabled and requires a user to be logged in to request these rates. * `net_rates` - Return net rates for each property. This feature must be enabled to request these rates. * `cross_sell` - Identify if the traffic is coming from a cross sell booking. Where the traveler has booked another service (flight, car, activities...) before hotel. (optional) @@ -848,7 +852,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat * @param checkin Check-in date, in ISO 8601 format (YYYY-MM-DD). This can be up to 365 days in the future. Some partner configurations may extend this up to 500 days.
Note: Only needed for hard change if desired check-in date is different than original booking. If specified must also specify `checkout`. (optional) * @param checkout Check-out date, in ISO 8601 format (YYYY-MM-DD). Total length of stay cannot exceed 28 nights or 365 nights depending on Vacation Rental configurations.
Note: Only needed for hard change if desired check-out date is different than original booking. If specified must also specify `checkin`.
(optional) * @param exclusion Single exclusion type. Send multiple instances of this parameter to request multiple exclusions.
Note: Optional parameter for use with hard change requests.
* `refundable_damage_deposit` - Excludes Rapid supplied Vrbo rates with refundable damage deposits from the response. * `card_on_file` - Excludes Rapid supplied Vrbo rates with card-on-file damage collection from the response. (optional) - * @param filter Single filter type. Send multiple instances of this parameter to request multiple filters.
Note: Optional parameter for use with hard change requests.
This parameter cannot be set to `property_collect` if the existing booking is `expedia_collect` and vice versa.
* `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. (optional) + * @param filter Single filter type. Send multiple instances of this parameter to request multiple filters.
Note: Optional parameter for use with hard change requests.
This parameter cannot be set to `property_collect` if the existing booking is `expedia_collect` and vice versa.
* `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. * `deal` - Filters results to only show rates that have a promotion that is of the type deal. (optional) * @param include Modify the response by including types of responses that are not provided by default.
* `sale_scenario.mobile_promotion` - Enable the `mobile_promotion` flag under the `sale_scenario` section of the response. (optional) * @param occupancy Defines the requested occupancy for a single room. Each room must have at least 1 adult occupant.
Format: `numberOfAdults[-firstChildAge[,nextChildAge]]`
To request multiple rooms (of the same type), include one instance of occupancy for each room requested. Up to 8 rooms may be requested or booked at once.
Note: Only needed for hard change if desired occupancy is different than original booking.
Examples: * 2 adults, one 9-year-old and one 4-year-old would be represented by `occupancy=2-9,4`.
* A multi-room request to lodge an additional 2 adults would be represented by `occupancy=2-9,4&occupancy=2` (optional) * @param rateOption Request specific rate options for each property. Send multiple instances of this parameter to request multiple rate options. Note: Optional parameter for use with hard change requests.
Accepted values:
* `member` - Return member rates for each property. This feature must be enabled and requires a user to be logged in to request these rates. * `net_rates` - Return net rates for each property. This feature must be enabled to request these rates. * `cross_sell` - Identify if the traffic is coming from a cross sell booking. Where the traveler has booked another service (flight, car, activities...) before hotel. (optional) @@ -1078,6 +1082,8 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat ratePlanCount: java.math.BigDecimal, salesChannel: kotlin.String, salesEnvironment: kotlin.String, + campaignId: kotlin.String? = + null, customerIp: kotlin.String? = null, customerSessionId: kotlin.String? = @@ -1117,6 +1123,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat ): Response> { val params = GetAvailabilityOperationParams( + campaignId = campaignId, customerIp = customerIp, customerSessionId = customerSessionId, test = test, @@ -1163,13 +1170,14 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat * @param ratePlanCount The number of rates to return per property. The rates with the best value will be returned, e.g. a rate_plan_count=4 will return the best 4 rates, but the rates are not ordered from lowest to highest or vice versa in the response. Generally lowest rates will be prioritized.

The value must be between 1 and 250. * @param salesChannel You must provide the sales channel for the display of rates. EPS dynamically provides the best content for optimal conversion on each sales channel. If you have a sales channel that is not currently supported in this list, please contact our support team.
* `website` - Standard website accessed from the customer's computer * `agent_tool` - Your own agent tool used by your call center or retail store agent * `mobile_app` - An application installed on a phone or tablet device * `mobile_web` - A web browser application on a phone or tablet device * `meta` - Rates will be passed to and displayed on a 3rd party comparison website * `cache` - Rates will be used to populate a local cache * @param salesEnvironment You must provide the sales environment in which rates will be sold. EPS dynamically provides the best content for optimal conversion. If you have a sales environment that is not currently supported in this list, please contact our support team.
* `hotel_package` - Use when selling the hotel with a transport product, e.g. flight & hotel. * `hotel_only` - Use when selling the hotel as an individual product. * `loyalty` - Use when you are selling the hotel as part of a loyalty program and the price is converted to points. + * @param campaignId The Merchandising `Campaign-Id` that was involved in the traveler shopping for these properties. (optional) * @param customerIp IP address of the customer, as captured by your integration.
Ensure your integration passes the customer's IP, not your own. This value helps determine their location and assign the correct payment gateway.
Also used for fraud recovery and other important analytics. (optional) * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. (optional) * @param test Shop calls have a test header that can be used to return set responses with the following keywords:
* `standard` * `service_unavailable` * `unknown_internal_error` (optional) * @param amenityCategory Single amenity category. Send multiple instances of this parameter to request rates that match multiple amenity categories.
See the Amenity Categories section of the [Content Reference Lists](https://developers.expediagroup.com/docs/rapid/lodging/content/content-reference-lists) for a list of values. (optional) * @param exclusion Single exclusion type. Send multiple instances of this parameter to request multiple exclusions.
* `refundable_damage_deposit` - Excludes Rapid supplied Vrbo rates with refundable damage deposits from the response. * `card_on_file` - Excludes Rapid supplied Vrbo rates with card-on-file damage collection from the response. (optional) - * @param filter Single filter type. Send multiple instances of this parameter to request multiple filters.
* `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. (optional) - * @param include Modify the response by including types of responses that are not provided by default.
* `unavailable_reason` - When a property is unavailable for an actionable reason, return a response with that reason - See [Unavailable Reason Codes](https://developers.expediagroup.com/docs/rapid/resources/reference/unavailable-reason-codes) for possible values. * `sale_scenario.mobile_promotion` - Enable the `mobile_promotion` flag under the `room.rate.sale_scenario` section of the response. * `rooms.rates.marketing_fee_incentives` - When a rate has a marketing fee incentive applied, the response will include the `marketing_fee_incentives` array if this flag is provided in the request. * `rooms.rates.current_refundability` - Displays the current `refundability` of a rate. (optional) + * @param filter Single filter type. Send multiple instances of this parameter to request multiple filters.
* `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. * `deal` - Filters results to only show rates that have a promotion that is of the type deal. (optional) + * @param include Modify the response by including types of responses that are not provided by default.
* `unavailable_reason` - When a property is unavailable for an actionable reason, return a response with that reason - See [Unavailable Reason Codes](https://developers.expediagroup.com/docs/rapid/resources/reference/unavailable-reason-codes) for possible values. * `sale_scenario.mobile_promotion` - Enable the `mobile_promotion` flag under the `room.rate.sale_scenario` section of the response. * `rooms.rates.marketing_fee_incentives` - When a rate has a marketing fee incentive applied, the response will include the `marketing_fee_incentives` array if this flag is provided in the request. * `rooms.rates.current_refundability` - Displays the current `refundability` of a rate. * `rooms.rates.holdable` - Enables the `holdable` flag on the response to indicate whether the rate supports [Booking Hold and Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume). * `rooms.rates.marketing_fee_details` - Displays a more granular view of marketing fees in the response. (optional) * @param rateOption Request specific rate options for each property. Send multiple instances of this parameter to request multiple rate options. Accepted values:
* `member` - Return member rates for each property. This feature must be enabled and requires a user to be logged in to request these rates. * `net_rates` - Return net rates for each property. This feature must be enabled to request these rates. * `cross_sell` - Identify if the traffic is coming from a cross sell booking. Where the traveler has booked another service (flight, car, activities...) before hotel. (optional) * @param travelPurpose This parameter is to specify the travel purpose of the booking. This may impact available rate plans, pricing, or tax calculations. * `leisure` * `business` (optional) * @param billingTerms This parameter is to specify the terms of how a resulting booking should be billed. If this field is needed, the value for this will be provided to you separately. (optional) @@ -1199,6 +1207,8 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat ratePlanCount: java.math.BigDecimal, salesChannel: kotlin.String, salesEnvironment: kotlin.String, + campaignId: kotlin.String? = + null, customerIp: kotlin.String? = null, customerSessionId: kotlin.String? = @@ -1247,6 +1257,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat ratePlanCount, salesChannel, salesEnvironment, + campaignId, customerIp, customerSessionId, test, @@ -1275,13 +1286,14 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat * @param ratePlanCount The number of rates to return per property. The rates with the best value will be returned, e.g. a rate_plan_count=4 will return the best 4 rates, but the rates are not ordered from lowest to highest or vice versa in the response. Generally lowest rates will be prioritized.

The value must be between 1 and 250. * @param salesChannel You must provide the sales channel for the display of rates. EPS dynamically provides the best content for optimal conversion on each sales channel. If you have a sales channel that is not currently supported in this list, please contact our support team.
* `website` - Standard website accessed from the customer's computer * `agent_tool` - Your own agent tool used by your call center or retail store agent * `mobile_app` - An application installed on a phone or tablet device * `mobile_web` - A web browser application on a phone or tablet device * `meta` - Rates will be passed to and displayed on a 3rd party comparison website * `cache` - Rates will be used to populate a local cache * @param salesEnvironment You must provide the sales environment in which rates will be sold. EPS dynamically provides the best content for optimal conversion. If you have a sales environment that is not currently supported in this list, please contact our support team.
* `hotel_package` - Use when selling the hotel with a transport product, e.g. flight & hotel. * `hotel_only` - Use when selling the hotel as an individual product. * `loyalty` - Use when you are selling the hotel as part of a loyalty program and the price is converted to points. + * @param campaignId The Merchandising `Campaign-Id` that was involved in the traveler shopping for these properties. (optional) * @param customerIp IP address of the customer, as captured by your integration.
Ensure your integration passes the customer's IP, not your own. This value helps determine their location and assign the correct payment gateway.
Also used for fraud recovery and other important analytics. (optional) * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. (optional) * @param test Shop calls have a test header that can be used to return set responses with the following keywords:
* `standard` * `service_unavailable` * `unknown_internal_error` (optional) * @param amenityCategory Single amenity category. Send multiple instances of this parameter to request rates that match multiple amenity categories.
See the Amenity Categories section of the [Content Reference Lists](https://developers.expediagroup.com/docs/rapid/lodging/content/content-reference-lists) for a list of values. (optional) * @param exclusion Single exclusion type. Send multiple instances of this parameter to request multiple exclusions.
* `refundable_damage_deposit` - Excludes Rapid supplied Vrbo rates with refundable damage deposits from the response. * `card_on_file` - Excludes Rapid supplied Vrbo rates with card-on-file damage collection from the response. (optional) - * @param filter Single filter type. Send multiple instances of this parameter to request multiple filters.
* `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. (optional) - * @param include Modify the response by including types of responses that are not provided by default.
* `unavailable_reason` - When a property is unavailable for an actionable reason, return a response with that reason - See [Unavailable Reason Codes](https://developers.expediagroup.com/docs/rapid/resources/reference/unavailable-reason-codes) for possible values. * `sale_scenario.mobile_promotion` - Enable the `mobile_promotion` flag under the `room.rate.sale_scenario` section of the response. * `rooms.rates.marketing_fee_incentives` - When a rate has a marketing fee incentive applied, the response will include the `marketing_fee_incentives` array if this flag is provided in the request. * `rooms.rates.current_refundability` - Displays the current `refundability` of a rate. (optional) + * @param filter Single filter type. Send multiple instances of this parameter to request multiple filters.
* `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. * `deal` - Filters results to only show rates that have a promotion that is of the type deal. (optional) + * @param include Modify the response by including types of responses that are not provided by default.
* `unavailable_reason` - When a property is unavailable for an actionable reason, return a response with that reason - See [Unavailable Reason Codes](https://developers.expediagroup.com/docs/rapid/resources/reference/unavailable-reason-codes) for possible values. * `sale_scenario.mobile_promotion` - Enable the `mobile_promotion` flag under the `room.rate.sale_scenario` section of the response. * `rooms.rates.marketing_fee_incentives` - When a rate has a marketing fee incentive applied, the response will include the `marketing_fee_incentives` array if this flag is provided in the request. * `rooms.rates.current_refundability` - Displays the current `refundability` of a rate. * `rooms.rates.holdable` - Enables the `holdable` flag on the response to indicate whether the rate supports [Booking Hold and Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume). * `rooms.rates.marketing_fee_details` - Displays a more granular view of marketing fees in the response. (optional) * @param rateOption Request specific rate options for each property. Send multiple instances of this parameter to request multiple rate options. Accepted values:
* `member` - Return member rates for each property. This feature must be enabled and requires a user to be logged in to request these rates. * `net_rates` - Return net rates for each property. This feature must be enabled to request these rates. * `cross_sell` - Identify if the traffic is coming from a cross sell booking. Where the traveler has booked another service (flight, car, activities...) before hotel. (optional) * @param travelPurpose This parameter is to specify the travel purpose of the booking. This may impact available rate plans, pricing, or tax calculations. * `leisure` * `business` (optional) * @param billingTerms This parameter is to specify the terms of how a resulting booking should be billed. If this field is needed, the value for this will be provided to you separately. (optional) @@ -1311,6 +1323,8 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat ratePlanCount: java.math.BigDecimal, salesChannel: kotlin.String, salesEnvironment: kotlin.String, + campaignId: kotlin.String? = + null, customerIp: kotlin.String? = null, customerSessionId: kotlin.String? = @@ -1361,6 +1375,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat ratePlanCount, salesChannel, salesEnvironment, + campaignId, customerIp, customerSessionId, test, @@ -1597,6 +1612,390 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat } } + /** + * Campaigns Search + * Search for campaigns + * @param operation [GetCampaignsOperation] + * @throws ExpediaGroupApiErrorException + * @return a [Response] object with a body of type kotlin.collections.List + */ + fun execute(operation: GetCampaignsOperation): Response> = execute>(operation) + + /** + * Campaigns Search + * Search for campaigns + * @param operation [GetCampaignsOperation] + * @throws ExpediaGroupApiErrorException + * @return a [CompletableFuture] object with a body of type kotlin.collections.List + */ + fun executeAsync(operation: GetCampaignsOperation): CompletableFuture>> = executeAsync>(operation) + + private suspend inline fun kgetCampaignsWithResponse( + language: kotlin.String, + customerSessionId: kotlin.String? = + null, + blockoutDates: kotlin.Boolean? = + null, + bookableEnd: kotlin.String? = + null, + bookableStart: kotlin.String? = + null, + lifetime: GetCampaignsOperationParams.Lifetime? = + null, + campaignId: kotlin.collections.List< + kotlin.String + >? = + null, + include: kotlin.collections.List< + kotlin.String + >? = + null, + minDiscount: kotlin.String? = + null, + stayEnd: kotlin.String? = + null, + stayStart: kotlin.String? = + null, + token: kotlin.String? = + null, + billingTerms: kotlin.String? = + null, + partnerPointOfSale: kotlin.String? = + null, + paymentTerms: kotlin.String? = + null, + platformName: kotlin.String? = + null + ): Response> { + val params = + GetCampaignsOperationParams( + customerSessionId = customerSessionId, + language = language, + blockoutDates = blockoutDates, + bookableEnd = bookableEnd, + bookableStart = bookableStart, + lifetime = lifetime, + campaignId = campaignId, + include = include, + minDiscount = minDiscount, + stayEnd = stayEnd, + stayStart = stayStart, + token = token, + billingTerms = billingTerms, + partnerPointOfSale = partnerPointOfSale, + paymentTerms = paymentTerms, + platformName = platformName + ) + + val operation = + GetCampaignsOperation( + params + ) + + return execute(operation) + } + + /** + * Campaigns Search + * Search for campaigns + * @param language Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes.
**Currently only `en-US` is supported.**

Reference: * [W3 Language Tags](https://www.w3.org/International/articles/language-tags/) + * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. (optional) + * @param blockoutDates Specify restrictions to blockout dates. If this parameter is not supplied, campaigns with and without blockout dates will be included. * `true` - Include only campaigns that have blockout dates. * `false` - Do not include campaigns that have blockout dates. (optional) + * @param bookableEnd Search for all campaigns with a `bookable_end` date equal to or before the specified date. (optional) + * @param bookableStart Search for all campaigns with a `bookable_start` date equal to or after the specified date. (optional) + * @param lifetime Search for campaigns that match the lifetime type. (optional) + * @param campaignId Search for campaigns with matching `id` values. You can provide 0 to 250 `id` parameters with different values, which will include campaigns that match any of the requested values. (optional) + * @param include Each time this parameter is specified will add to the list of fields and associated objects returned in the response. All values and field names are lower case. All field names found at the top level of the response are valid values for inclusion. (optional) + * @param minDiscount Search for campaigns that have a `min_discount` equal to or larger than the value. (optional) + * @param stayEnd Search for all campaigns with a `stay_end` date equal to or before the specified date. (optional) + * @param stayStart Search for all campaigns with a `stay_start` date equal to or after the specified date. (optional) + * @param token Only used for requesting additional pages of data. Provided by the `next` URL in the `Link` response header. (optional) + * @param billingTerms This parameter is to specify the terms of how a resulting booking should be billed. If this field is needed, the value for this will be provided to you separately. (optional) + * @param partnerPointOfSale This parameter is to specify what point of sale is being used to shop and book. If this field is needed, the value for this will be provided to you separately. (optional) + * @param paymentTerms This parameter is to specify what terms should be used when being paid for a resulting booking. If this field is needed, the value for this will be provided to you separately. (optional) + * @param platformName This parameter is to specify what platform is being used to shop and book. If this field is needed, the value for this will be provided to you separately. (optional) + * @throws ExpediaGroupApiErrorException + * @return kotlin.collections.List + */ + @Throws( + ExpediaGroupApiErrorException::class + ) + @JvmOverloads + @Deprecated("Use execute method instead", ReplaceWith("execute(operation: GetCampaignsOperation)")) + fun getCampaigns( + language: kotlin.String, + customerSessionId: kotlin.String? = + null, + blockoutDates: kotlin.Boolean? = + null, + bookableEnd: kotlin.String? = + null, + bookableStart: kotlin.String? = + null, + lifetime: GetCampaignsOperationParams.Lifetime? = + null, + campaignId: kotlin.collections.List< + kotlin.String + >? = + null, + include: kotlin.collections.List< + kotlin.String + >? = + null, + minDiscount: kotlin.String? = + null, + stayEnd: kotlin.String? = + null, + stayStart: kotlin.String? = + null, + token: kotlin.String? = + null, + billingTerms: kotlin.String? = + null, + partnerPointOfSale: kotlin.String? = + null, + paymentTerms: kotlin.String? = + null, + platformName: kotlin.String? = + null + ): kotlin.collections.List = + getCampaignsWithResponse( + language, + customerSessionId, + blockoutDates, + bookableEnd, + bookableStart, + lifetime, + campaignId, + include, + minDiscount, + stayEnd, + stayStart, + token, + billingTerms, + partnerPointOfSale, + paymentTerms, + platformName + ).data + + /** + * Campaigns Search + * Search for campaigns + * @param language Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes.
**Currently only `en-US` is supported.**

Reference: * [W3 Language Tags](https://www.w3.org/International/articles/language-tags/) + * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. (optional) + * @param blockoutDates Specify restrictions to blockout dates. If this parameter is not supplied, campaigns with and without blockout dates will be included. * `true` - Include only campaigns that have blockout dates. * `false` - Do not include campaigns that have blockout dates. (optional) + * @param bookableEnd Search for all campaigns with a `bookable_end` date equal to or before the specified date. (optional) + * @param bookableStart Search for all campaigns with a `bookable_start` date equal to or after the specified date. (optional) + * @param lifetime Search for campaigns that match the lifetime type. (optional) + * @param campaignId Search for campaigns with matching `id` values. You can provide 0 to 250 `id` parameters with different values, which will include campaigns that match any of the requested values. (optional) + * @param include Each time this parameter is specified will add to the list of fields and associated objects returned in the response. All values and field names are lower case. All field names found at the top level of the response are valid values for inclusion. (optional) + * @param minDiscount Search for campaigns that have a `min_discount` equal to or larger than the value. (optional) + * @param stayEnd Search for all campaigns with a `stay_end` date equal to or before the specified date. (optional) + * @param stayStart Search for all campaigns with a `stay_start` date equal to or after the specified date. (optional) + * @param token Only used for requesting additional pages of data. Provided by the `next` URL in the `Link` response header. (optional) + * @param billingTerms This parameter is to specify the terms of how a resulting booking should be billed. If this field is needed, the value for this will be provided to you separately. (optional) + * @param partnerPointOfSale This parameter is to specify what point of sale is being used to shop and book. If this field is needed, the value for this will be provided to you separately. (optional) + * @param paymentTerms This parameter is to specify what terms should be used when being paid for a resulting booking. If this field is needed, the value for this will be provided to you separately. (optional) + * @param platformName This parameter is to specify what platform is being used to shop and book. If this field is needed, the value for this will be provided to you separately. (optional) + * @throws ExpediaGroupApiErrorException + * @return a [Response] object with a body of type kotlin.collections.List + */ + @Throws( + ExpediaGroupApiErrorException::class + ) + @JvmOverloads + @Deprecated("Use execute method instead", ReplaceWith("execute(operation: GetCampaignsOperation)")) + fun getCampaignsWithResponse( + language: kotlin.String, + customerSessionId: kotlin.String? = + null, + blockoutDates: kotlin.Boolean? = + null, + bookableEnd: kotlin.String? = + null, + bookableStart: kotlin.String? = + null, + lifetime: GetCampaignsOperationParams.Lifetime? = + null, + campaignId: kotlin.collections.List< + kotlin.String + >? = + null, + include: kotlin.collections.List< + kotlin.String + >? = + null, + minDiscount: kotlin.String? = + null, + stayEnd: kotlin.String? = + null, + stayStart: kotlin.String? = + null, + token: kotlin.String? = + null, + billingTerms: kotlin.String? = + null, + partnerPointOfSale: kotlin.String? = + null, + paymentTerms: kotlin.String? = + null, + platformName: kotlin.String? = + null + ): Response> { + try { + return GlobalScope.future(Dispatchers.IO) { + kgetCampaignsWithResponse( + language, + customerSessionId, + blockoutDates, + bookableEnd, + bookableStart, + lifetime, + campaignId, + include, + minDiscount, + stayEnd, + stayStart, + token, + billingTerms, + partnerPointOfSale, + paymentTerms, + platformName + ) + }.get() + } catch (exception: Exception) { + exception.handle() + } + } + + @JvmOverloads + fun getPaginator(operation: GetCampaignsOperation): ResponsePaginator> { + val response = execute(operation) + return ResponsePaginator(this, response, emptyList()) { it.body>() } + } + + @JvmOverloads + @Deprecated("Use getPaginator method instead", ReplaceWith("getPaginator(operation: GetCampaignsOperation)")) + fun getCampaignsPaginator( + language: kotlin.String, + customerSessionId: kotlin.String? = + null, + blockoutDates: kotlin.Boolean? = + null, + bookableEnd: kotlin.String? = + null, + bookableStart: kotlin.String? = + null, + lifetime: GetCampaignsOperationParams.Lifetime? = + null, + campaignId: kotlin.collections.List< + kotlin.String + >? = + null, + include: kotlin.collections.List< + kotlin.String + >? = + null, + minDiscount: kotlin.String? = + null, + stayEnd: kotlin.String? = + null, + stayStart: kotlin.String? = + null, + token: kotlin.String? = + null, + billingTerms: kotlin.String? = + null, + partnerPointOfSale: kotlin.String? = + null, + paymentTerms: kotlin.String? = + null, + platformName: kotlin.String? = + null + ): Paginator> { + val response = + getCampaignsWithResponse( + language, + customerSessionId, + blockoutDates, + bookableEnd, + bookableStart, + lifetime, + campaignId, + include, + minDiscount, + stayEnd, + stayStart, + token, + billingTerms, + partnerPointOfSale, + paymentTerms, + platformName + ) + return Paginator(this, response, emptyList()) { it.body>() } + } + + @JvmOverloads + @Deprecated("Use getPaginator method instead", ReplaceWith("getPaginator(operation: GetCampaignsOperation)")) + fun getCampaignsPaginatorWithResponse( + language: kotlin.String, + customerSessionId: kotlin.String? = + null, + blockoutDates: kotlin.Boolean? = + null, + bookableEnd: kotlin.String? = + null, + bookableStart: kotlin.String? = + null, + lifetime: GetCampaignsOperationParams.Lifetime? = + null, + campaignId: kotlin.collections.List< + kotlin.String + >? = + null, + include: kotlin.collections.List< + kotlin.String + >? = + null, + minDiscount: kotlin.String? = + null, + stayEnd: kotlin.String? = + null, + stayStart: kotlin.String? = + null, + token: kotlin.String? = + null, + billingTerms: kotlin.String? = + null, + partnerPointOfSale: kotlin.String? = + null, + paymentTerms: kotlin.String? = + null, + platformName: kotlin.String? = + null + ): ResponsePaginator> { + val response = + getCampaignsWithResponse( + language, + customerSessionId, + blockoutDates, + bookableEnd, + bookableStart, + lifetime, + campaignId, + include, + minDiscount, + stayEnd, + stayStart, + token, + billingTerms, + partnerPointOfSale, + paymentTerms, + platformName + ) + return ResponsePaginator(this, response, emptyList()) { it.body>() } + } + /** * Categories Reference * Returns a complete collection of categories available in the Rapid API. @@ -2711,9 +3110,723 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat } } + /** + * Promotions Search + * Search for promotions + * @param operation [GetPromotionsOperation] + * @throws ExpediaGroupApiErrorException + * @return a [Response] object with a body of type kotlin.collections.List + */ + fun execute(operation: GetPromotionsOperation): Response> = execute>(operation) + + /** + * Promotions Search + * Search for promotions + * @param operation [GetPromotionsOperation] + * @throws ExpediaGroupApiErrorException + * @return a [CompletableFuture] object with a body of type kotlin.collections.List + */ + fun executeAsync(operation: GetPromotionsOperation): CompletableFuture>> = executeAsync>(operation) + + private suspend inline fun kgetPromotionsWithResponse( + language: kotlin.String, + sortBy: GetPromotionsOperationParams.SortBy, + customerSessionId: kotlin.String? = + null, + blockoutDates: kotlin.Boolean? = + null, + bookableEnd: kotlin.String? = + null, + bookableStart: kotlin.String? = + null, + campaignId: kotlin.collections.List< + kotlin.String + >? = + null, + categoryId: kotlin.collections.List< + kotlin.String + >? = + null, + chainId: kotlin.collections.List< + kotlin.String + >? = + null, + lifetime: kotlin.String? = + null, + promotionId: kotlin.collections.List< + kotlin.String + >? = + null, + include: kotlin.collections.List< + kotlin.String + >? = + null, + marketRegion: kotlin.collections.List< + GetPromotionsOperationParams.MarketRegion + >? = + null, + membersOnly: kotlin.Boolean? = + null, + minAdvancePurchaseDays: kotlin.String? = + null, + minGuestRating: kotlin.String? = + null, + minStarRating: kotlin.String? = + null, + minStay: kotlin.String? = + null, + mobileOnly: kotlin.Boolean? = + null, + productLine: kotlin.collections.List< + kotlin.String + >? = + null, + promotionCriteria: kotlin.String? = + null, + propertyId: kotlin.collections.List< + kotlin.String + >? = + null, + regionId: kotlin.collections.List< + kotlin.String + >? = + null, + stayEnd: kotlin.String? = + null, + stayStart: kotlin.String? = + null, + supplySource: kotlin.collections.List< + kotlin.String + >? = + null, + token: kotlin.String? = + null, + billingTerms: kotlin.String? = + null, + partnerPointOfSale: kotlin.String? = + null, + paymentTerms: kotlin.String? = + null, + platformName: kotlin.String? = + null + ): Response> { + val params = + GetPromotionsOperationParams( + customerSessionId = customerSessionId, + language = language, + sortBy = sortBy, + blockoutDates = blockoutDates, + bookableEnd = bookableEnd, + bookableStart = bookableStart, + campaignId = campaignId, + categoryId = categoryId, + chainId = chainId, + lifetime = lifetime, + promotionId = promotionId, + include = include, + marketRegion = marketRegion, + membersOnly = membersOnly, + minAdvancePurchaseDays = minAdvancePurchaseDays, + minGuestRating = minGuestRating, + minStarRating = minStarRating, + minStay = minStay, + mobileOnly = mobileOnly, + productLine = productLine, + promotionCriteria = promotionCriteria, + propertyId = propertyId, + regionId = regionId, + stayEnd = stayEnd, + stayStart = stayStart, + supplySource = supplySource, + token = token, + billingTerms = billingTerms, + partnerPointOfSale = partnerPointOfSale, + paymentTerms = paymentTerms, + platformName = platformName + ) + + val operation = + GetPromotionsOperation( + params + ) + + return execute(operation) + } + + /** + * Promotions Search + * Search for promotions + * @param language Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes.
**Currently only `en-US` is supported.**

Reference: * [W3 Language Tags](https://www.w3.org/International/articles/language-tags/) + * @param sortBy Sorts the returned promotions by the given rank value + * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. (optional) + * @param blockoutDates Specify restrictions to blockout dates. If this parameter is not supplied, promotions with and without blockout dates will be returned in the results. * `true` - Include only promotions that have blockout dates. * `false` - Include only promotions that do not have blockout dates. (optional) + * @param bookableEnd Search for promotions with a `bookable_end` date equal to or before the specified date. (optional) + * @param bookableStart Search for promotions with a `bookable_start` date equal to or after the specified date. (optional) + * @param campaignId Search for promotions with matching `campaign_id` values. You can provide 0 to 250 `campaign_id` parameters with different values, which will include promotions that match any of the requested values. (optional) + * @param categoryId Search for promotions associated with the specified `category_id` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. (optional) + * @param chainId Search for promotions associated with the specified `chain_id` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. (optional) + * @param lifetime Search for promotions that match the lifetime type. (optional) + * @param promotionId Search for promotions with matching `id` values. You can provide 0 to 250 `id` parameters with different values, which will include promotions that match any of the requested values. (optional) + * @param include Each time this parameter is specified will add to the list of fields and associated objects returned in the response. All values and field names are lower case. All field names found at the top level of the response are valid values for inclusion. (optional) + * @param marketRegion Search for promotions associated with the specified `market_region` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. (optional) + * @param membersOnly Specify restrictions to `members_only` values. If this parameter is not supplied, promotions with true or false will be returned in the results. * `true` - Only results with `members_only` equal to true will be returned. * `false` - Only results with `members_only` equal to false will be returned. (optional) + * @param minAdvancePurchaseDays Search for promotions that have a `min_advance_purchase_days` equal to the passed in value. (optional) + * @param minGuestRating Search for promotions that have a `min_guest_rating` equal to or larger than the value. (optional) + * @param minStarRating Search for promotions that have a `min_star_rating` equal to or larger than the value. (optional) + * @param minStay Search for promotions that have a `min_stay` equal to the passed in value. (optional) + * @param mobileOnly Specify restrictions to `mobile_only` values. If this parameter is not supplied, promotions with true or false will be returned in the results. * `true` - Only results with `mobile_only` equal to true will be returned. * `false` - Only results with `mobile_only` equal to false will be returned. (optional) + * @param productLine Search for promotions with a `product_line` that matches the value. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. (optional) + * @param promotionCriteria Search for promotions that meet the criteria provided. This criteria is defined as: * type,value For now the only type available will be `percentage` but other types will be added in the future. (optional) + * @param propertyId Search for promotions with matching `property_id` values. You can provide 0 to 250 `property_id` parameters with different values, which will include promotions that match any of the requested values. (optional) + * @param regionId Search for promotions associated with the specified `region_id` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. (optional) + * @param stayEnd Search for all promotions with a `stay_end` date equal to or before the specified date. (optional) + * @param stayStart Search for all promotions with a `stay_start` date equal to or after the specified date. (optional) + * @param supplySource Search for promotions associated with the specified `supply_source` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. * `expedia` - Standard Expedia supply. * `vrbo` - VRBO supply - This option is restricted to partners who have VRBO supply enabled for their profile. See [Vacation Rentals](https://developers.expediagroup.com/docs/rapid/lodging/vacation-rentals) for more information. (optional) + * @param token Only used for requesting additional pages of data. Provided by the `next` URL in the `Link` response header. (optional) + * @param billingTerms This parameter is to specify the terms of how a resulting booking should be billed. If this field is needed, the value for this will be provided to you separately. (optional) + * @param partnerPointOfSale This parameter is to specify what point of sale is being used to shop and book. If this field is needed, the value for this will be provided to you separately. (optional) + * @param paymentTerms This parameter is to specify what terms should be used when being paid for a resulting booking. If this field is needed, the value for this will be provided to you separately. (optional) + * @param platformName This parameter is to specify what platform is being used to shop and book. If this field is needed, the value for this will be provided to you separately. (optional) + * @throws ExpediaGroupApiErrorException + * @return kotlin.collections.List + */ + @Throws( + ExpediaGroupApiErrorException::class + ) + @JvmOverloads + @Deprecated("Use execute method instead", ReplaceWith("execute(operation: GetPromotionsOperation)")) + fun getPromotions( + language: kotlin.String, + sortBy: GetPromotionsOperationParams.SortBy, + customerSessionId: kotlin.String? = + null, + blockoutDates: kotlin.Boolean? = + null, + bookableEnd: kotlin.String? = + null, + bookableStart: kotlin.String? = + null, + campaignId: kotlin.collections.List< + kotlin.String + >? = + null, + categoryId: kotlin.collections.List< + kotlin.String + >? = + null, + chainId: kotlin.collections.List< + kotlin.String + >? = + null, + lifetime: kotlin.String? = + null, + promotionId: kotlin.collections.List< + kotlin.String + >? = + null, + include: kotlin.collections.List< + kotlin.String + >? = + null, + marketRegion: kotlin.collections.List< + GetPromotionsOperationParams.MarketRegion + >? = + null, + membersOnly: kotlin.Boolean? = + null, + minAdvancePurchaseDays: kotlin.String? = + null, + minGuestRating: kotlin.String? = + null, + minStarRating: kotlin.String? = + null, + minStay: kotlin.String? = + null, + mobileOnly: kotlin.Boolean? = + null, + productLine: kotlin.collections.List< + kotlin.String + >? = + null, + promotionCriteria: kotlin.String? = + null, + propertyId: kotlin.collections.List< + kotlin.String + >? = + null, + regionId: kotlin.collections.List< + kotlin.String + >? = + null, + stayEnd: kotlin.String? = + null, + stayStart: kotlin.String? = + null, + supplySource: kotlin.collections.List< + kotlin.String + >? = + null, + token: kotlin.String? = + null, + billingTerms: kotlin.String? = + null, + partnerPointOfSale: kotlin.String? = + null, + paymentTerms: kotlin.String? = + null, + platformName: kotlin.String? = + null + ): kotlin.collections.List = + getPromotionsWithResponse( + language, + sortBy, + customerSessionId, + blockoutDates, + bookableEnd, + bookableStart, + campaignId, + categoryId, + chainId, + lifetime, + promotionId, + include, + marketRegion, + membersOnly, + minAdvancePurchaseDays, + minGuestRating, + minStarRating, + minStay, + mobileOnly, + productLine, + promotionCriteria, + propertyId, + regionId, + stayEnd, + stayStart, + supplySource, + token, + billingTerms, + partnerPointOfSale, + paymentTerms, + platformName + ).data + + /** + * Promotions Search + * Search for promotions + * @param language Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes.
**Currently only `en-US` is supported.**

Reference: * [W3 Language Tags](https://www.w3.org/International/articles/language-tags/) + * @param sortBy Sorts the returned promotions by the given rank value + * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. (optional) + * @param blockoutDates Specify restrictions to blockout dates. If this parameter is not supplied, promotions with and without blockout dates will be returned in the results. * `true` - Include only promotions that have blockout dates. * `false` - Include only promotions that do not have blockout dates. (optional) + * @param bookableEnd Search for promotions with a `bookable_end` date equal to or before the specified date. (optional) + * @param bookableStart Search for promotions with a `bookable_start` date equal to or after the specified date. (optional) + * @param campaignId Search for promotions with matching `campaign_id` values. You can provide 0 to 250 `campaign_id` parameters with different values, which will include promotions that match any of the requested values. (optional) + * @param categoryId Search for promotions associated with the specified `category_id` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. (optional) + * @param chainId Search for promotions associated with the specified `chain_id` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. (optional) + * @param lifetime Search for promotions that match the lifetime type. (optional) + * @param promotionId Search for promotions with matching `id` values. You can provide 0 to 250 `id` parameters with different values, which will include promotions that match any of the requested values. (optional) + * @param include Each time this parameter is specified will add to the list of fields and associated objects returned in the response. All values and field names are lower case. All field names found at the top level of the response are valid values for inclusion. (optional) + * @param marketRegion Search for promotions associated with the specified `market_region` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. (optional) + * @param membersOnly Specify restrictions to `members_only` values. If this parameter is not supplied, promotions with true or false will be returned in the results. * `true` - Only results with `members_only` equal to true will be returned. * `false` - Only results with `members_only` equal to false will be returned. (optional) + * @param minAdvancePurchaseDays Search for promotions that have a `min_advance_purchase_days` equal to the passed in value. (optional) + * @param minGuestRating Search for promotions that have a `min_guest_rating` equal to or larger than the value. (optional) + * @param minStarRating Search for promotions that have a `min_star_rating` equal to or larger than the value. (optional) + * @param minStay Search for promotions that have a `min_stay` equal to the passed in value. (optional) + * @param mobileOnly Specify restrictions to `mobile_only` values. If this parameter is not supplied, promotions with true or false will be returned in the results. * `true` - Only results with `mobile_only` equal to true will be returned. * `false` - Only results with `mobile_only` equal to false will be returned. (optional) + * @param productLine Search for promotions with a `product_line` that matches the value. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. (optional) + * @param promotionCriteria Search for promotions that meet the criteria provided. This criteria is defined as: * type,value For now the only type available will be `percentage` but other types will be added in the future. (optional) + * @param propertyId Search for promotions with matching `property_id` values. You can provide 0 to 250 `property_id` parameters with different values, which will include promotions that match any of the requested values. (optional) + * @param regionId Search for promotions associated with the specified `region_id` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. (optional) + * @param stayEnd Search for all promotions with a `stay_end` date equal to or before the specified date. (optional) + * @param stayStart Search for all promotions with a `stay_start` date equal to or after the specified date. (optional) + * @param supplySource Search for promotions associated with the specified `supply_source` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. * `expedia` - Standard Expedia supply. * `vrbo` - VRBO supply - This option is restricted to partners who have VRBO supply enabled for their profile. See [Vacation Rentals](https://developers.expediagroup.com/docs/rapid/lodging/vacation-rentals) for more information. (optional) + * @param token Only used for requesting additional pages of data. Provided by the `next` URL in the `Link` response header. (optional) + * @param billingTerms This parameter is to specify the terms of how a resulting booking should be billed. If this field is needed, the value for this will be provided to you separately. (optional) + * @param partnerPointOfSale This parameter is to specify what point of sale is being used to shop and book. If this field is needed, the value for this will be provided to you separately. (optional) + * @param paymentTerms This parameter is to specify what terms should be used when being paid for a resulting booking. If this field is needed, the value for this will be provided to you separately. (optional) + * @param platformName This parameter is to specify what platform is being used to shop and book. If this field is needed, the value for this will be provided to you separately. (optional) + * @throws ExpediaGroupApiErrorException + * @return a [Response] object with a body of type kotlin.collections.List + */ + @Throws( + ExpediaGroupApiErrorException::class + ) + @JvmOverloads + @Deprecated("Use execute method instead", ReplaceWith("execute(operation: GetPromotionsOperation)")) + fun getPromotionsWithResponse( + language: kotlin.String, + sortBy: GetPromotionsOperationParams.SortBy, + customerSessionId: kotlin.String? = + null, + blockoutDates: kotlin.Boolean? = + null, + bookableEnd: kotlin.String? = + null, + bookableStart: kotlin.String? = + null, + campaignId: kotlin.collections.List< + kotlin.String + >? = + null, + categoryId: kotlin.collections.List< + kotlin.String + >? = + null, + chainId: kotlin.collections.List< + kotlin.String + >? = + null, + lifetime: kotlin.String? = + null, + promotionId: kotlin.collections.List< + kotlin.String + >? = + null, + include: kotlin.collections.List< + kotlin.String + >? = + null, + marketRegion: kotlin.collections.List< + GetPromotionsOperationParams.MarketRegion + >? = + null, + membersOnly: kotlin.Boolean? = + null, + minAdvancePurchaseDays: kotlin.String? = + null, + minGuestRating: kotlin.String? = + null, + minStarRating: kotlin.String? = + null, + minStay: kotlin.String? = + null, + mobileOnly: kotlin.Boolean? = + null, + productLine: kotlin.collections.List< + kotlin.String + >? = + null, + promotionCriteria: kotlin.String? = + null, + propertyId: kotlin.collections.List< + kotlin.String + >? = + null, + regionId: kotlin.collections.List< + kotlin.String + >? = + null, + stayEnd: kotlin.String? = + null, + stayStart: kotlin.String? = + null, + supplySource: kotlin.collections.List< + kotlin.String + >? = + null, + token: kotlin.String? = + null, + billingTerms: kotlin.String? = + null, + partnerPointOfSale: kotlin.String? = + null, + paymentTerms: kotlin.String? = + null, + platformName: kotlin.String? = + null + ): Response> { + try { + return GlobalScope.future(Dispatchers.IO) { + kgetPromotionsWithResponse( + language, + sortBy, + customerSessionId, + blockoutDates, + bookableEnd, + bookableStart, + campaignId, + categoryId, + chainId, + lifetime, + promotionId, + include, + marketRegion, + membersOnly, + minAdvancePurchaseDays, + minGuestRating, + minStarRating, + minStay, + mobileOnly, + productLine, + promotionCriteria, + propertyId, + regionId, + stayEnd, + stayStart, + supplySource, + token, + billingTerms, + partnerPointOfSale, + paymentTerms, + platformName + ) + }.get() + } catch (exception: Exception) { + exception.handle() + } + } + + @JvmOverloads + fun getPaginator(operation: GetPromotionsOperation): ResponsePaginator> { + val response = execute(operation) + return ResponsePaginator(this, response, emptyList()) { it.body>() } + } + + @JvmOverloads + @Deprecated("Use getPaginator method instead", ReplaceWith("getPaginator(operation: GetPromotionsOperation)")) + fun getPromotionsPaginator( + language: kotlin.String, + sortBy: GetPromotionsOperationParams.SortBy, + customerSessionId: kotlin.String? = + null, + blockoutDates: kotlin.Boolean? = + null, + bookableEnd: kotlin.String? = + null, + bookableStart: kotlin.String? = + null, + campaignId: kotlin.collections.List< + kotlin.String + >? = + null, + categoryId: kotlin.collections.List< + kotlin.String + >? = + null, + chainId: kotlin.collections.List< + kotlin.String + >? = + null, + lifetime: kotlin.String? = + null, + promotionId: kotlin.collections.List< + kotlin.String + >? = + null, + include: kotlin.collections.List< + kotlin.String + >? = + null, + marketRegion: kotlin.collections.List< + GetPromotionsOperationParams.MarketRegion + >? = + null, + membersOnly: kotlin.Boolean? = + null, + minAdvancePurchaseDays: kotlin.String? = + null, + minGuestRating: kotlin.String? = + null, + minStarRating: kotlin.String? = + null, + minStay: kotlin.String? = + null, + mobileOnly: kotlin.Boolean? = + null, + productLine: kotlin.collections.List< + kotlin.String + >? = + null, + promotionCriteria: kotlin.String? = + null, + propertyId: kotlin.collections.List< + kotlin.String + >? = + null, + regionId: kotlin.collections.List< + kotlin.String + >? = + null, + stayEnd: kotlin.String? = + null, + stayStart: kotlin.String? = + null, + supplySource: kotlin.collections.List< + kotlin.String + >? = + null, + token: kotlin.String? = + null, + billingTerms: kotlin.String? = + null, + partnerPointOfSale: kotlin.String? = + null, + paymentTerms: kotlin.String? = + null, + platformName: kotlin.String? = + null + ): Paginator> { + val response = + getPromotionsWithResponse( + language, + sortBy, + customerSessionId, + blockoutDates, + bookableEnd, + bookableStart, + campaignId, + categoryId, + chainId, + lifetime, + promotionId, + include, + marketRegion, + membersOnly, + minAdvancePurchaseDays, + minGuestRating, + minStarRating, + minStay, + mobileOnly, + productLine, + promotionCriteria, + propertyId, + regionId, + stayEnd, + stayStart, + supplySource, + token, + billingTerms, + partnerPointOfSale, + paymentTerms, + platformName + ) + return Paginator(this, response, emptyList()) { it.body>() } + } + + @JvmOverloads + @Deprecated("Use getPaginator method instead", ReplaceWith("getPaginator(operation: GetPromotionsOperation)")) + fun getPromotionsPaginatorWithResponse( + language: kotlin.String, + sortBy: GetPromotionsOperationParams.SortBy, + customerSessionId: kotlin.String? = + null, + blockoutDates: kotlin.Boolean? = + null, + bookableEnd: kotlin.String? = + null, + bookableStart: kotlin.String? = + null, + campaignId: kotlin.collections.List< + kotlin.String + >? = + null, + categoryId: kotlin.collections.List< + kotlin.String + >? = + null, + chainId: kotlin.collections.List< + kotlin.String + >? = + null, + lifetime: kotlin.String? = + null, + promotionId: kotlin.collections.List< + kotlin.String + >? = + null, + include: kotlin.collections.List< + kotlin.String + >? = + null, + marketRegion: kotlin.collections.List< + GetPromotionsOperationParams.MarketRegion + >? = + null, + membersOnly: kotlin.Boolean? = + null, + minAdvancePurchaseDays: kotlin.String? = + null, + minGuestRating: kotlin.String? = + null, + minStarRating: kotlin.String? = + null, + minStay: kotlin.String? = + null, + mobileOnly: kotlin.Boolean? = + null, + productLine: kotlin.collections.List< + kotlin.String + >? = + null, + promotionCriteria: kotlin.String? = + null, + propertyId: kotlin.collections.List< + kotlin.String + >? = + null, + regionId: kotlin.collections.List< + kotlin.String + >? = + null, + stayEnd: kotlin.String? = + null, + stayStart: kotlin.String? = + null, + supplySource: kotlin.collections.List< + kotlin.String + >? = + null, + token: kotlin.String? = + null, + billingTerms: kotlin.String? = + null, + partnerPointOfSale: kotlin.String? = + null, + paymentTerms: kotlin.String? = + null, + platformName: kotlin.String? = + null + ): ResponsePaginator> { + val response = + getPromotionsWithResponse( + language, + sortBy, + customerSessionId, + blockoutDates, + bookableEnd, + bookableStart, + campaignId, + categoryId, + chainId, + lifetime, + promotionId, + include, + marketRegion, + membersOnly, + minAdvancePurchaseDays, + minGuestRating, + minStarRating, + minStay, + mobileOnly, + productLine, + promotionCriteria, + propertyId, + regionId, + stayEnd, + stayStart, + supplySource, + token, + billingTerms, + partnerPointOfSale, + paymentTerms, + platformName + ) + return ResponsePaginator(this, response, emptyList()) { it.body>() } + } + /** * Property Catalog File - * Returns a link to download the master list of EPS's active properties in the requested language. The response includes high-level details about each property.
This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is a subset of the schema of each JSON object from the Property Content call. The subset of fields included are: * property_id * name * address * ratings * location * phone * fax * category * rank * business_model * dates * statistics * chain * brand * supply_source
Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"supply_source\":\"expedia\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"supply_source\":\"expedia\"} ``` + * Returns a link to download the master list of EPS's active properties in the requested language. The response includes high-level details about each property.
This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is a subset of the schema of each JSON object from the Property Content call. The subset of fields included are: * property_id * name * address * ratings * location * phone * fax * category * rank * business_model * dates * statistics * chain * brand * supply_source
Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false,\"updated_expedia_collect\":true},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"supply_source\":\"expedia\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true,\"updated_expedia_collect\":false},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"supply_source\":\"expedia\"} ``` * @param operation [GetPropertyCatalogFileOperation] * @throws ExpediaGroupApiErrorException * @return a [Response] object with a body of type Link @@ -2722,7 +3835,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat /** * Property Catalog File - * Returns a link to download the master list of EPS's active properties in the requested language. The response includes high-level details about each property.
This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is a subset of the schema of each JSON object from the Property Content call. The subset of fields included are: * property_id * name * address * ratings * location * phone * fax * category * rank * business_model * dates * statistics * chain * brand * supply_source
Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"supply_source\":\"expedia\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"supply_source\":\"expedia\"} ``` + * Returns a link to download the master list of EPS's active properties in the requested language. The response includes high-level details about each property.
This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is a subset of the schema of each JSON object from the Property Content call. The subset of fields included are: * property_id * name * address * ratings * location * phone * fax * category * rank * business_model * dates * statistics * chain * brand * supply_source
Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false,\"updated_expedia_collect\":true},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"supply_source\":\"expedia\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true,\"updated_expedia_collect\":false},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"supply_source\":\"expedia\"} ``` * @param operation [GetPropertyCatalogFileOperation] * @throws ExpediaGroupApiErrorException * @return a [CompletableFuture] object with a body of type Link @@ -2764,7 +3877,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat /** * Property Catalog File - * Returns a link to download the master list of EPS's active properties in the requested language. The response includes high-level details about each property.
This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is a subset of the schema of each JSON object from the Property Content call. The subset of fields included are: * property_id * name * address * ratings * location * phone * fax * category * rank * business_model * dates * statistics * chain * brand * supply_source
Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"supply_source\":\"expedia\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"supply_source\":\"expedia\"} ``` + * Returns a link to download the master list of EPS's active properties in the requested language. The response includes high-level details about each property.
This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is a subset of the schema of each JSON object from the Property Content call. The subset of fields included are: * property_id * name * address * ratings * location * phone * fax * category * rank * business_model * dates * statistics * chain * brand * supply_source
Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false,\"updated_expedia_collect\":true},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"supply_source\":\"expedia\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true,\"updated_expedia_collect\":false},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"supply_source\":\"expedia\"} ``` * @param language Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes. See [https://www.w3.org/International/articles/language-tags/](https://www.w3.org/International/articles/language-tags/) Language Options: [https://developers.expediagroup.com/docs/rapid/resources/reference/language-options](https://developers.expediagroup.com/docs/rapid/resources/reference/language-options) * @param supplySource Options for which supply source you would like returned in the content response. This parameter may only be supplied once and will return all properties that match the requested supply source. An error is thrown if the parameter is provided multiple times. * `expedia` - Standard Expedia supply. * `vrbo` - VRBO supply - This option is restricted to partners who have VRBO supply enabled for their profile. See [Vacation Rentals](https://developers.expediagroup.com/docs/rapid/lodging/vacation-rentals) for more information. * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. (optional) @@ -2797,7 +3910,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat /** * Property Catalog File - * Returns a link to download the master list of EPS's active properties in the requested language. The response includes high-level details about each property.
This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is a subset of the schema of each JSON object from the Property Content call. The subset of fields included are: * property_id * name * address * ratings * location * phone * fax * category * rank * business_model * dates * statistics * chain * brand * supply_source
Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"supply_source\":\"expedia\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"supply_source\":\"expedia\"} ``` + * Returns a link to download the master list of EPS's active properties in the requested language. The response includes high-level details about each property.
This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is a subset of the schema of each JSON object from the Property Content call. The subset of fields included are: * property_id * name * address * ratings * location * phone * fax * category * rank * business_model * dates * statistics * chain * brand * supply_source
Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false,\"updated_expedia_collect\":true},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"supply_source\":\"expedia\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true,\"updated_expedia_collect\":false},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"supply_source\":\"expedia\"} ``` * @param language Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes. See [https://www.w3.org/International/articles/language-tags/](https://www.w3.org/International/articles/language-tags/) Language Options: [https://developers.expediagroup.com/docs/rapid/resources/reference/language-options](https://developers.expediagroup.com/docs/rapid/resources/reference/language-options) * @param supplySource Options for which supply source you would like returned in the content response. This parameter may only be supplied once and will return all properties that match the requested supply source. An error is thrown if the parameter is provided multiple times. * `expedia` - Standard Expedia supply. * `vrbo` - VRBO supply - This option is restricted to partners who have VRBO supply enabled for their profile. See [Vacation Rentals](https://developers.expediagroup.com/docs/rapid/lodging/vacation-rentals) for more information. * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. (optional) @@ -3489,7 +4602,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat /** * Property Content File - * Returns a link to download all content for all of EPS’s active properties in the requested language. The response includes property-level, room-level and rate-level information.
This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is the same as the schema of each JSON object from the Property Content call.
Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\"},\"fees\":{\"mandatory\":\"

You'll be asked to pay the following charges at the hotel:

  • Deposit: USD 50 per day
  • Resort fee: USD 29.12 per accommodation, per night
The hotel resort fee includes:
  • Fitness center access
  • Internet access
  • Phone calls
  • Additional inclusions

We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

\",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":20,\"square_feet\":215},\"views\":{\"4146\":{\"id\":\"4146\",\"name\":\"Courtyard view\"}},\"occupancy\":{\"max_allowed\":{\"total\":5,\"children\":2,\"adults\":4},\"age_categories\":{\"Adult\":{\"name\":\"Adult\",\"minimum_age\":9}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"AB-012-987-1234-01\",\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"spoken_languages\":{\"vi\":{\"id\":\"vi\",\"name\":\"Vietnamese\"}},\"multi_unit\":true,\"payment_registration_recommended\":false,\"vacation_rental_details\": {\"registry_number\": \"Property Registration Number 123456\",\"private_host\": \"true\",\"property_manager\": {\"name\": \"Victor\",\"links\": {\"image\": {\"method\": \"GET\",\"href\": \"https://test-image/test/test/836f1097-fbcf-43b5-bc02-c8ff6658cb90.c1.jpg\"}}},\"rental_agreement\": {\"links\": {\"rental_agreement\": {\"method\": \"GET\",\"href\": \"https://test-link.test.amazonaws.com/rentalconditions_property_d65e7eb5-4a7c-4a80-a8a3-171999f9f444.pdf\"}}},\"house_rules\": [\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\": {\"4296\": {\"id\": \"4296\",\"name\": \"Furnished balcony or patio\"},\"2859\": {\"id\": \"2859\",\"name\": \"Private pool\"}},\"vrbo_srp_id\": \"123.1234567.5678910\",\"listing_id\": \"1234567\",\"listing_number\": \"5678910\",\"listing_source\": \"HOMEAWAY_US\",\"listing_unit\": \"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838},\"obfuscated_coordinates\":{\"latitude\":28.339303,\"longitude\":-81.47791},\"obfuscation_required\":true},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":17},\"views\":{\"4134\":{\"id\":\"4134\",\"name\":\"City view\"}},\"occupancy\":{\"max_allowed\":{\"total\":3,\"children\":2,\"adults\":3},\"age_categories\":{\"ChildAgeA\":{\"name\":\"ChildAgeA\",\"minimum_age\":3}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"CD-012-987-1234-02\",\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"spoken_languages\":{\"en\":{\"id\":\"en\",\"name\":\"English\"}},\"multi_unit\":true,\"payment_registration_recommended\":true,\"vacation_rental_details\":{\"registry_number\":\"Property Registration Number 123456\",\"private_host\":\"true\",\"property_manager\":{\"name\":\"John Smith\",\"links\":{\"image\":{\"method\":\"GET\",\"href\":\"https://example.com/profile.jpg\"}}},\"rental_agreement\":{\"links\":{\"rental_agreement\":{\"method\":\"GET\",\"href\":\"https:/example.com/rentalconditions.pdf\"}}},\"house_rules\":[\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\":{\"2859\":{\"id\":\"2859\",\"name\":\"Private pool\"},\"4296\":{\"id\":\"4296\",\"name\":\"Furnished balcony or patio\"}},\"vrbo_srp_id\":\"123.1234567.5678910\",\"listing_id\":\"1234567\",\"listing_number\":\"5678910\",\"listing_source\":\"HOMEAWAY_US\",\"listing_unit\":\"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} ``` + * Returns a link to download all content for all of EPS’s active properties in the requested language. The response includes property-level, room-level and rate-level information.
    This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is the same as the schema of each JSON object from the Property Content call.
    Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false,\"updated_expedia_collect\":false},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\",\"instructions\":\"The host requests you complete the following cleaning tasks before checking out:
    Load and start the dishwasher
    Strip any used beds, gather used towels, and store extra beds
    Remove personal items, remove leftover food and drinks, and take out the trash\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":20,\"square_feet\":215},\"views\":{\"4146\":{\"id\":\"4146\",\"name\":\"Courtyard view\"}},\"occupancy\":{\"max_allowed\":{\"total\":5,\"children\":2,\"adults\":4},\"age_categories\":{\"Adult\":{\"name\":\"Adult\",\"minimum_age\":9}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"AB-012-987-1234-01\",\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"spoken_languages\":{\"vi\":{\"id\":\"vi\",\"name\":\"Vietnamese\"}},\"multi_unit\":true,\"payment_registration_recommended\":false,\"vacation_rental_details\": {\"registry_number\": \"Property Registration Number 123456\",\"private_host\": \"true\",\"property_manager\": {\"name\": \"Victor\",\"links\": {\"image\": {\"method\": \"GET\",\"href\": \"https://test-image/test/test/836f1097-fbcf-43b5-bc02-c8ff6658cb90.c1.jpg\"}}},\"rental_agreement\": {\"links\": {\"rental_agreement\": {\"method\": \"GET\",\"href\": \"https://test-link.test.amazonaws.com/rentalconditions_property_d65e7eb5-4a7c-4a80-a8a3-171999f9f444.pdf\"}}},\"house_rules\": [\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\": {\"4296\": {\"id\": \"4296\",\"name\": \"Furnished balcony or patio\"},\"2859\": {\"id\": \"2859\",\"name\": \"Private pool\"}},\"vrbo_srp_id\": \"123.1234567.5678910\",\"listing_id\": \"1234567\",\"listing_number\": \"5678910\",\"listing_source\": \"HOMEAWAY_US\",\"listing_unit\": \"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838},\"obfuscated_coordinates\":{\"latitude\":28.339303,\"longitude\":-81.47791},\"obfuscation_required\":true},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true,\"updated_expedia_collect\":true},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\",\"instructions\":\"The host requests you complete the following cleaning tasks before checking out:
    Load and start the dishwasher
    Strip any used beds, gather used towels, and store extra beds
    Remove personal items, remove leftover food and drinks, and take out the trash\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":17},\"views\":{\"4134\":{\"id\":\"4134\",\"name\":\"City view\"}},\"occupancy\":{\"max_allowed\":{\"total\":3,\"children\":2,\"adults\":3},\"age_categories\":{\"ChildAgeA\":{\"name\":\"ChildAgeA\",\"minimum_age\":3}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"CD-012-987-1234-02\",\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"spoken_languages\":{\"en\":{\"id\":\"en\",\"name\":\"English\"}},\"multi_unit\":true,\"payment_registration_recommended\":true,\"vacation_rental_details\":{\"registry_number\":\"Property Registration Number 123456\",\"private_host\":\"true\",\"property_manager\":{\"name\":\"John Smith\",\"links\":{\"image\":{\"method\":\"GET\",\"href\":\"https://example.com/profile.jpg\"}}},\"rental_agreement\":{\"links\":{\"rental_agreement\":{\"method\":\"GET\",\"href\":\"https:/example.com/rentalconditions.pdf\"}}},\"house_rules\":[\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\":{\"2859\":{\"id\":\"2859\",\"name\":\"Private pool\"},\"4296\":{\"id\":\"4296\",\"name\":\"Furnished balcony or patio\"}},\"vrbo_srp_id\":\"123.1234567.5678910\",\"listing_id\":\"1234567\",\"listing_number\":\"5678910\",\"listing_source\":\"HOMEAWAY_US\",\"listing_unit\":\"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} ``` * @param operation [GetPropertyContentFileOperation] * @throws ExpediaGroupApiErrorException * @return a [Response] object with a body of type Link @@ -3498,7 +4611,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat /** * Property Content File - * Returns a link to download all content for all of EPS’s active properties in the requested language. The response includes property-level, room-level and rate-level information.
    This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is the same as the schema of each JSON object from the Property Content call.
    Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":20,\"square_feet\":215},\"views\":{\"4146\":{\"id\":\"4146\",\"name\":\"Courtyard view\"}},\"occupancy\":{\"max_allowed\":{\"total\":5,\"children\":2,\"adults\":4},\"age_categories\":{\"Adult\":{\"name\":\"Adult\",\"minimum_age\":9}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"AB-012-987-1234-01\",\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"spoken_languages\":{\"vi\":{\"id\":\"vi\",\"name\":\"Vietnamese\"}},\"multi_unit\":true,\"payment_registration_recommended\":false,\"vacation_rental_details\": {\"registry_number\": \"Property Registration Number 123456\",\"private_host\": \"true\",\"property_manager\": {\"name\": \"Victor\",\"links\": {\"image\": {\"method\": \"GET\",\"href\": \"https://test-image/test/test/836f1097-fbcf-43b5-bc02-c8ff6658cb90.c1.jpg\"}}},\"rental_agreement\": {\"links\": {\"rental_agreement\": {\"method\": \"GET\",\"href\": \"https://test-link.test.amazonaws.com/rentalconditions_property_d65e7eb5-4a7c-4a80-a8a3-171999f9f444.pdf\"}}},\"house_rules\": [\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\": {\"4296\": {\"id\": \"4296\",\"name\": \"Furnished balcony or patio\"},\"2859\": {\"id\": \"2859\",\"name\": \"Private pool\"}},\"vrbo_srp_id\": \"123.1234567.5678910\",\"listing_id\": \"1234567\",\"listing_number\": \"5678910\",\"listing_source\": \"HOMEAWAY_US\",\"listing_unit\": \"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838},\"obfuscated_coordinates\":{\"latitude\":28.339303,\"longitude\":-81.47791},\"obfuscation_required\":true},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":17},\"views\":{\"4134\":{\"id\":\"4134\",\"name\":\"City view\"}},\"occupancy\":{\"max_allowed\":{\"total\":3,\"children\":2,\"adults\":3},\"age_categories\":{\"ChildAgeA\":{\"name\":\"ChildAgeA\",\"minimum_age\":3}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"CD-012-987-1234-02\",\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"spoken_languages\":{\"en\":{\"id\":\"en\",\"name\":\"English\"}},\"multi_unit\":true,\"payment_registration_recommended\":true,\"vacation_rental_details\":{\"registry_number\":\"Property Registration Number 123456\",\"private_host\":\"true\",\"property_manager\":{\"name\":\"John Smith\",\"links\":{\"image\":{\"method\":\"GET\",\"href\":\"https://example.com/profile.jpg\"}}},\"rental_agreement\":{\"links\":{\"rental_agreement\":{\"method\":\"GET\",\"href\":\"https:/example.com/rentalconditions.pdf\"}}},\"house_rules\":[\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\":{\"2859\":{\"id\":\"2859\",\"name\":\"Private pool\"},\"4296\":{\"id\":\"4296\",\"name\":\"Furnished balcony or patio\"}},\"vrbo_srp_id\":\"123.1234567.5678910\",\"listing_id\":\"1234567\",\"listing_number\":\"5678910\",\"listing_source\":\"HOMEAWAY_US\",\"listing_unit\":\"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} ``` + * Returns a link to download all content for all of EPS’s active properties in the requested language. The response includes property-level, room-level and rate-level information.
    This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is the same as the schema of each JSON object from the Property Content call.
    Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false,\"updated_expedia_collect\":false},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\",\"instructions\":\"The host requests you complete the following cleaning tasks before checking out:
    Load and start the dishwasher
    Strip any used beds, gather used towels, and store extra beds
    Remove personal items, remove leftover food and drinks, and take out the trash\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":20,\"square_feet\":215},\"views\":{\"4146\":{\"id\":\"4146\",\"name\":\"Courtyard view\"}},\"occupancy\":{\"max_allowed\":{\"total\":5,\"children\":2,\"adults\":4},\"age_categories\":{\"Adult\":{\"name\":\"Adult\",\"minimum_age\":9}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"AB-012-987-1234-01\",\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"spoken_languages\":{\"vi\":{\"id\":\"vi\",\"name\":\"Vietnamese\"}},\"multi_unit\":true,\"payment_registration_recommended\":false,\"vacation_rental_details\": {\"registry_number\": \"Property Registration Number 123456\",\"private_host\": \"true\",\"property_manager\": {\"name\": \"Victor\",\"links\": {\"image\": {\"method\": \"GET\",\"href\": \"https://test-image/test/test/836f1097-fbcf-43b5-bc02-c8ff6658cb90.c1.jpg\"}}},\"rental_agreement\": {\"links\": {\"rental_agreement\": {\"method\": \"GET\",\"href\": \"https://test-link.test.amazonaws.com/rentalconditions_property_d65e7eb5-4a7c-4a80-a8a3-171999f9f444.pdf\"}}},\"house_rules\": [\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\": {\"4296\": {\"id\": \"4296\",\"name\": \"Furnished balcony or patio\"},\"2859\": {\"id\": \"2859\",\"name\": \"Private pool\"}},\"vrbo_srp_id\": \"123.1234567.5678910\",\"listing_id\": \"1234567\",\"listing_number\": \"5678910\",\"listing_source\": \"HOMEAWAY_US\",\"listing_unit\": \"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838},\"obfuscated_coordinates\":{\"latitude\":28.339303,\"longitude\":-81.47791},\"obfuscation_required\":true},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true,\"updated_expedia_collect\":true},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\",\"instructions\":\"The host requests you complete the following cleaning tasks before checking out:
    Load and start the dishwasher
    Strip any used beds, gather used towels, and store extra beds
    Remove personal items, remove leftover food and drinks, and take out the trash\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":17},\"views\":{\"4134\":{\"id\":\"4134\",\"name\":\"City view\"}},\"occupancy\":{\"max_allowed\":{\"total\":3,\"children\":2,\"adults\":3},\"age_categories\":{\"ChildAgeA\":{\"name\":\"ChildAgeA\",\"minimum_age\":3}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"CD-012-987-1234-02\",\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"spoken_languages\":{\"en\":{\"id\":\"en\",\"name\":\"English\"}},\"multi_unit\":true,\"payment_registration_recommended\":true,\"vacation_rental_details\":{\"registry_number\":\"Property Registration Number 123456\",\"private_host\":\"true\",\"property_manager\":{\"name\":\"John Smith\",\"links\":{\"image\":{\"method\":\"GET\",\"href\":\"https://example.com/profile.jpg\"}}},\"rental_agreement\":{\"links\":{\"rental_agreement\":{\"method\":\"GET\",\"href\":\"https:/example.com/rentalconditions.pdf\"}}},\"house_rules\":[\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\":{\"2859\":{\"id\":\"2859\",\"name\":\"Private pool\"},\"4296\":{\"id\":\"4296\",\"name\":\"Furnished balcony or patio\"}},\"vrbo_srp_id\":\"123.1234567.5678910\",\"listing_id\":\"1234567\",\"listing_number\":\"5678910\",\"listing_source\":\"HOMEAWAY_US\",\"listing_unit\":\"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} ``` * @param operation [GetPropertyContentFileOperation] * @throws ExpediaGroupApiErrorException * @return a [CompletableFuture] object with a body of type Link @@ -3540,7 +4653,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat /** * Property Content File - * Returns a link to download all content for all of EPS’s active properties in the requested language. The response includes property-level, room-level and rate-level information.
    This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is the same as the schema of each JSON object from the Property Content call.
    Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":20,\"square_feet\":215},\"views\":{\"4146\":{\"id\":\"4146\",\"name\":\"Courtyard view\"}},\"occupancy\":{\"max_allowed\":{\"total\":5,\"children\":2,\"adults\":4},\"age_categories\":{\"Adult\":{\"name\":\"Adult\",\"minimum_age\":9}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"AB-012-987-1234-01\",\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"spoken_languages\":{\"vi\":{\"id\":\"vi\",\"name\":\"Vietnamese\"}},\"multi_unit\":true,\"payment_registration_recommended\":false,\"vacation_rental_details\": {\"registry_number\": \"Property Registration Number 123456\",\"private_host\": \"true\",\"property_manager\": {\"name\": \"Victor\",\"links\": {\"image\": {\"method\": \"GET\",\"href\": \"https://test-image/test/test/836f1097-fbcf-43b5-bc02-c8ff6658cb90.c1.jpg\"}}},\"rental_agreement\": {\"links\": {\"rental_agreement\": {\"method\": \"GET\",\"href\": \"https://test-link.test.amazonaws.com/rentalconditions_property_d65e7eb5-4a7c-4a80-a8a3-171999f9f444.pdf\"}}},\"house_rules\": [\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\": {\"4296\": {\"id\": \"4296\",\"name\": \"Furnished balcony or patio\"},\"2859\": {\"id\": \"2859\",\"name\": \"Private pool\"}},\"vrbo_srp_id\": \"123.1234567.5678910\",\"listing_id\": \"1234567\",\"listing_number\": \"5678910\",\"listing_source\": \"HOMEAWAY_US\",\"listing_unit\": \"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838},\"obfuscated_coordinates\":{\"latitude\":28.339303,\"longitude\":-81.47791},\"obfuscation_required\":true},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":17},\"views\":{\"4134\":{\"id\":\"4134\",\"name\":\"City view\"}},\"occupancy\":{\"max_allowed\":{\"total\":3,\"children\":2,\"adults\":3},\"age_categories\":{\"ChildAgeA\":{\"name\":\"ChildAgeA\",\"minimum_age\":3}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"CD-012-987-1234-02\",\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"spoken_languages\":{\"en\":{\"id\":\"en\",\"name\":\"English\"}},\"multi_unit\":true,\"payment_registration_recommended\":true,\"vacation_rental_details\":{\"registry_number\":\"Property Registration Number 123456\",\"private_host\":\"true\",\"property_manager\":{\"name\":\"John Smith\",\"links\":{\"image\":{\"method\":\"GET\",\"href\":\"https://example.com/profile.jpg\"}}},\"rental_agreement\":{\"links\":{\"rental_agreement\":{\"method\":\"GET\",\"href\":\"https:/example.com/rentalconditions.pdf\"}}},\"house_rules\":[\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\":{\"2859\":{\"id\":\"2859\",\"name\":\"Private pool\"},\"4296\":{\"id\":\"4296\",\"name\":\"Furnished balcony or patio\"}},\"vrbo_srp_id\":\"123.1234567.5678910\",\"listing_id\":\"1234567\",\"listing_number\":\"5678910\",\"listing_source\":\"HOMEAWAY_US\",\"listing_unit\":\"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} ``` + * Returns a link to download all content for all of EPS’s active properties in the requested language. The response includes property-level, room-level and rate-level information.
    This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is the same as the schema of each JSON object from the Property Content call.
    Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false,\"updated_expedia_collect\":false},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\",\"instructions\":\"The host requests you complete the following cleaning tasks before checking out:
    Load and start the dishwasher
    Strip any used beds, gather used towels, and store extra beds
    Remove personal items, remove leftover food and drinks, and take out the trash\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":20,\"square_feet\":215},\"views\":{\"4146\":{\"id\":\"4146\",\"name\":\"Courtyard view\"}},\"occupancy\":{\"max_allowed\":{\"total\":5,\"children\":2,\"adults\":4},\"age_categories\":{\"Adult\":{\"name\":\"Adult\",\"minimum_age\":9}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"AB-012-987-1234-01\",\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"spoken_languages\":{\"vi\":{\"id\":\"vi\",\"name\":\"Vietnamese\"}},\"multi_unit\":true,\"payment_registration_recommended\":false,\"vacation_rental_details\": {\"registry_number\": \"Property Registration Number 123456\",\"private_host\": \"true\",\"property_manager\": {\"name\": \"Victor\",\"links\": {\"image\": {\"method\": \"GET\",\"href\": \"https://test-image/test/test/836f1097-fbcf-43b5-bc02-c8ff6658cb90.c1.jpg\"}}},\"rental_agreement\": {\"links\": {\"rental_agreement\": {\"method\": \"GET\",\"href\": \"https://test-link.test.amazonaws.com/rentalconditions_property_d65e7eb5-4a7c-4a80-a8a3-171999f9f444.pdf\"}}},\"house_rules\": [\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\": {\"4296\": {\"id\": \"4296\",\"name\": \"Furnished balcony or patio\"},\"2859\": {\"id\": \"2859\",\"name\": \"Private pool\"}},\"vrbo_srp_id\": \"123.1234567.5678910\",\"listing_id\": \"1234567\",\"listing_number\": \"5678910\",\"listing_source\": \"HOMEAWAY_US\",\"listing_unit\": \"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838},\"obfuscated_coordinates\":{\"latitude\":28.339303,\"longitude\":-81.47791},\"obfuscation_required\":true},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true,\"updated_expedia_collect\":true},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\",\"instructions\":\"The host requests you complete the following cleaning tasks before checking out:
    Load and start the dishwasher
    Strip any used beds, gather used towels, and store extra beds
    Remove personal items, remove leftover food and drinks, and take out the trash\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":17},\"views\":{\"4134\":{\"id\":\"4134\",\"name\":\"City view\"}},\"occupancy\":{\"max_allowed\":{\"total\":3,\"children\":2,\"adults\":3},\"age_categories\":{\"ChildAgeA\":{\"name\":\"ChildAgeA\",\"minimum_age\":3}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"CD-012-987-1234-02\",\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"spoken_languages\":{\"en\":{\"id\":\"en\",\"name\":\"English\"}},\"multi_unit\":true,\"payment_registration_recommended\":true,\"vacation_rental_details\":{\"registry_number\":\"Property Registration Number 123456\",\"private_host\":\"true\",\"property_manager\":{\"name\":\"John Smith\",\"links\":{\"image\":{\"method\":\"GET\",\"href\":\"https://example.com/profile.jpg\"}}},\"rental_agreement\":{\"links\":{\"rental_agreement\":{\"method\":\"GET\",\"href\":\"https:/example.com/rentalconditions.pdf\"}}},\"house_rules\":[\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\":{\"2859\":{\"id\":\"2859\",\"name\":\"Private pool\"},\"4296\":{\"id\":\"4296\",\"name\":\"Furnished balcony or patio\"}},\"vrbo_srp_id\":\"123.1234567.5678910\",\"listing_id\":\"1234567\",\"listing_number\":\"5678910\",\"listing_source\":\"HOMEAWAY_US\",\"listing_unit\":\"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} ``` * @param language Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes.

    Reference: * [W3 Language Tags](https://www.w3.org/International/articles/language-tags/) * [Language Options](https://developers.expediagroup.com/docs/rapid/resources/reference/language-options) * @param supplySource Options for which supply source you would like returned in the content response. This parameter may only be supplied once and will return all properties that match the requested supply source. An error is thrown if the parameter is provided multiple times. * `expedia` - Standard Expedia supply. * `vrbo` - VRBO supply - This option is restricted to partners who have VRBO supply enabled for their profile. See [Vacation Rentals](https://developers.expediagroup.com/docs/rapid/lodging/vacation-rentals) for more information. * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
    Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. (optional) @@ -3573,7 +4686,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat /** * Property Content File - * Returns a link to download all content for all of EPS’s active properties in the requested language. The response includes property-level, room-level and rate-level information.
    This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is the same as the schema of each JSON object from the Property Content call.
    Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":20,\"square_feet\":215},\"views\":{\"4146\":{\"id\":\"4146\",\"name\":\"Courtyard view\"}},\"occupancy\":{\"max_allowed\":{\"total\":5,\"children\":2,\"adults\":4},\"age_categories\":{\"Adult\":{\"name\":\"Adult\",\"minimum_age\":9}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"AB-012-987-1234-01\",\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"spoken_languages\":{\"vi\":{\"id\":\"vi\",\"name\":\"Vietnamese\"}},\"multi_unit\":true,\"payment_registration_recommended\":false,\"vacation_rental_details\": {\"registry_number\": \"Property Registration Number 123456\",\"private_host\": \"true\",\"property_manager\": {\"name\": \"Victor\",\"links\": {\"image\": {\"method\": \"GET\",\"href\": \"https://test-image/test/test/836f1097-fbcf-43b5-bc02-c8ff6658cb90.c1.jpg\"}}},\"rental_agreement\": {\"links\": {\"rental_agreement\": {\"method\": \"GET\",\"href\": \"https://test-link.test.amazonaws.com/rentalconditions_property_d65e7eb5-4a7c-4a80-a8a3-171999f9f444.pdf\"}}},\"house_rules\": [\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\": {\"4296\": {\"id\": \"4296\",\"name\": \"Furnished balcony or patio\"},\"2859\": {\"id\": \"2859\",\"name\": \"Private pool\"}},\"vrbo_srp_id\": \"123.1234567.5678910\",\"listing_id\": \"1234567\",\"listing_number\": \"5678910\",\"listing_source\": \"HOMEAWAY_US\",\"listing_unit\": \"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838},\"obfuscated_coordinates\":{\"latitude\":28.339303,\"longitude\":-81.47791},\"obfuscation_required\":true},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":17},\"views\":{\"4134\":{\"id\":\"4134\",\"name\":\"City view\"}},\"occupancy\":{\"max_allowed\":{\"total\":3,\"children\":2,\"adults\":3},\"age_categories\":{\"ChildAgeA\":{\"name\":\"ChildAgeA\",\"minimum_age\":3}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"CD-012-987-1234-02\",\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"spoken_languages\":{\"en\":{\"id\":\"en\",\"name\":\"English\"}},\"multi_unit\":true,\"payment_registration_recommended\":true,\"vacation_rental_details\":{\"registry_number\":\"Property Registration Number 123456\",\"private_host\":\"true\",\"property_manager\":{\"name\":\"John Smith\",\"links\":{\"image\":{\"method\":\"GET\",\"href\":\"https://example.com/profile.jpg\"}}},\"rental_agreement\":{\"links\":{\"rental_agreement\":{\"method\":\"GET\",\"href\":\"https:/example.com/rentalconditions.pdf\"}}},\"house_rules\":[\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\":{\"2859\":{\"id\":\"2859\",\"name\":\"Private pool\"},\"4296\":{\"id\":\"4296\",\"name\":\"Furnished balcony or patio\"}},\"vrbo_srp_id\":\"123.1234567.5678910\",\"listing_id\":\"1234567\",\"listing_number\":\"5678910\",\"listing_source\":\"HOMEAWAY_US\",\"listing_unit\":\"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} ``` + * Returns a link to download all content for all of EPS’s active properties in the requested language. The response includes property-level, room-level and rate-level information.
    This file is in JSONL format and is gzipped. The schema of each JSON object in the JSONL file is the same as the schema of each JSON object from the Property Content call.
    Example of a JSONL file with 2 properties: ``` {\"property_id\":\"12345\",\"name\":\"Test Property Name\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":false,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345\"},\"fr-FR\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":48382,\"overall\":\"3.1\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"73%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838}},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":false,\"updated_expedia_collect\":false},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\",\"instructions\":\"The host requests you complete the following cleaning tasks before checking out:
    Load and start the dishwasher
    Strip any used beds, gather used towels, and store extra beds
    Remove personal items, remove leftover food and drinks, and take out the trash\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":20,\"square_feet\":215},\"views\":{\"4146\":{\"id\":\"4146\",\"name\":\"Courtyard view\"}},\"occupancy\":{\"max_allowed\":{\"total\":5,\"children\":2,\"adults\":4},\"age_categories\":{\"Adult\":{\"name\":\"Adult\",\"minimum_age\":9}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-19T05:00:00.000Z\",\"updated\":\"2018-03-22T07:23:14.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"AB-012-987-1234-01\",\"chain\":{\"id\":\"-6\",\"name\":\"Hyatt Hotels\"},\"brand\":{\"id\":\"2209\",\"name\":\"Hyatt Place\"},\"spoken_languages\":{\"vi\":{\"id\":\"vi\",\"name\":\"Vietnamese\"}},\"multi_unit\":true,\"payment_registration_recommended\":false,\"vacation_rental_details\": {\"registry_number\": \"Property Registration Number 123456\",\"private_host\": \"true\",\"property_manager\": {\"name\": \"Victor\",\"links\": {\"image\": {\"method\": \"GET\",\"href\": \"https://test-image/test/test/836f1097-fbcf-43b5-bc02-c8ff6658cb90.c1.jpg\"}}},\"rental_agreement\": {\"links\": {\"rental_agreement\": {\"method\": \"GET\",\"href\": \"https://test-link.test.amazonaws.com/rentalconditions_property_d65e7eb5-4a7c-4a80-a8a3-171999f9f444.pdf\"}}},\"house_rules\": [\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\": {\"4296\": {\"id\": \"4296\",\"name\": \"Furnished balcony or patio\"},\"2859\": {\"id\": \"2859\",\"name\": \"Private pool\"}},\"vrbo_srp_id\": \"123.1234567.5678910\",\"listing_id\": \"1234567\",\"listing_number\": \"5678910\",\"listing_source\": \"HOMEAWAY_US\",\"listing_unit\": \"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} {\"property_id\":\"67890\",\"name\":\"Test Property Name 2\",\"address\":{\"line_1\":\"123 Main St\",\"line_2\":\"Apt A\",\"city\":\"Springfield\",\"state_province_code\":\"MO\",\"state_province_name\":\"Missouri\",\"postal_code\":\"65804\",\"country_code\":\"US\",\"obfuscation_required\":true,\"localized\":{\"links\":{\"es-ES\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890\"},\"de-DE\":{\"method\":\"GET\",\"href\":\"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890\"}}}},\"ratings\":{\"property\":{\"rating\":\"3.5\",\"type\":\"Star\"},\"guest\":{\"count\":7651,\"overall\":\"4.3\",\"cleanliness\":\"4.2\",\"service\":\"1.1\",\"comfort\":\"4.3\",\"condition\":\"1.6\",\"location\":\"4.0\",\"neighborhood\":\"3.4\",\"quality\":\"3.4\",\"value\":\"2.2\",\"amenities\":\"1.4\",\"recommendation_percent\":\"80%\"}},\"location\":{\"coordinates\":{\"latitude\":37.15845,\"longitude\":-93.26838},\"obfuscated_coordinates\":{\"latitude\":28.339303,\"longitude\":-81.47791},\"obfuscation_required\":true},\"phone\":\"1-417-862-0153\",\"fax\":\"1-417-863-7249\",\"category\":{\"id\":\"1\",\"name\":\"Hotel\"},\"rank\":42,\"business_model\":{\"expedia_collect\":true,\"property_collect\":true,\"updated_expedia_collect\":true},\"checkin\":{\"24_hour\":\"24-hour check-in\",\"begin_time\":\"3:00 PM\",\"end_time\":\"11:00 PM\",\"instructions\":\"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />\",\"special_instructions\":\"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.\",\"min_age\":18},\"checkout\":{\"time\":\"11:00 AM\",\"instructions\":\"The host requests you complete the following cleaning tasks before checking out:
    Load and start the dishwasher
    Strip any used beds, gather used towels, and store extra beds
    Remove personal items, remove leftover food and drinks, and take out the trash\"},\"fees\":{\"mandatory\":\"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    \",\"optional\":\"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • \"},\"policies\":{\"know_before_you_go\":\"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • \"},\"attributes\":{\"general\":{\"2549\":{\"id\":\"2549\",\"name\":\"No elevators\"},\"3357\":{\"id\":\"3357\",\"name\":\"Caters to adults only\"}},\"pets\":{\"51\":{\"id\":\"51\",\"name\":\"Pets allowed\"},\"2809\":{\"id\":\"2809\",\"name\":\"Dogs only\"},\"3321\":{\"id\":\"3321\",\"name\":\"Pet maximum weight in kg is - 24\",\"value\":24}}},\"amenities\":{\"9\":{\"id\":\"9\",\"name\":\"Fitness facilities\"},\"2820\":{\"id\":\"2820\",\"name\":\"Number of indoor pools - 10\",\"value\":10}},\"images\":[{\"caption\":\"Featured Image\",\"hero_image\":true,\"category\":3,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}}}],\"onsite_payments\":{\"currency\":\"USD\",\"types\":{\"171\":{\"id\":\"171\",\"name\":\"American Express\"}}},\"rooms\":{\"224829\":{\"id\":\"224829\",\"name\":\"Single Room\",\"descriptions\":{\"overview\":\"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    \"},\"amenities\":{\"130\":{\"id\":\"130\",\"name\":\"Refrigerator\"},\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"}},\"images\":[{\"hero_image\":true,\"category\":21001,\"links\":{\"70px\":{\"method\":\"GET\",\"href\":\"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg\"}},\"caption\":\"Guestroom\"}],\"bed_groups\":{\"37321\":{\"id\":\"37321\",\"description\":\"1 King Bed\",\"configuration\":[{\"type\":\"KingBed\",\"size\":\"King\",\"quantity\":1}]}},\"area\":{\"square_meters\":17},\"views\":{\"4134\":{\"id\":\"4134\",\"name\":\"City view\"}},\"occupancy\":{\"max_allowed\":{\"total\":3,\"children\":2,\"adults\":3},\"age_categories\":{\"ChildAgeA\":{\"name\":\"ChildAgeA\",\"minimum_age\":3}}}}},\"rates\":{\"333abc\":{\"id\":\"333abc\",\"amenities\":{\"1234\":{\"id\":\"1234\",\"name\":\"Test Amenity - 200\",\"value\":\"200\"},\"2104\":{\"id\":\"2104\",\"name\":\"Full Breakfast\"}},\"special_offer_description\":\"Breakfast for 2 - Rate includes the following:\\r\\n
    • Accommodations as selected
    • \\r\\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \\r\\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\\r\\n\"}},\"dates\":{\"added\":\"1998-07-20T05:00:00.000Z\",\"updated\":\"2018-03-22T13:33:17.000Z\"},\"descriptions\":{\"amenities\":\"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.\",\"dining\":\"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.\",\"renovations\":\"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    \",\"national_ratings\":\"For the benefit of our customers, we have provided a rating based on our rating system.\",\"business_amenities\":\"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.\",\"rooms\":\"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.\",\"attractions\":\"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    \",\"location\":\"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.\",\"headline\":\"Near National Museum of Natural Science\",\"general\":\"General description\"},\"statistics\":{\"52\":{\"id\":\"52\",\"name\":\"Total number of rooms - 820\",\"value\":\"820\"},\"54\":{\"id\":\"54\",\"name\":\"Number of floors - 38\",\"value\":\"38\"}},\"airports\":{\"preferred\":{\"iata_airport_code\":\"SGF\"}},\"themes\":{\"2337\":{\"id\":\"2337\",\"name\":\"Luxury Hotel\"},\"2341\":{\"id\":\"2341\",\"name\":\"Spa Hotel\"}},\"all_inclusive\":{\"all_rate_plans\":true,\"some_rate_plans\":false,\"details\":\"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    \"},\"tax_id\":\"CD-012-987-1234-02\",\"chain\":{\"id\":\"-5\",\"name\":\"Hilton Worldwide\"},\"brand\":{\"id\":\"358\",\"name\":\"Hampton Inn\"},\"spoken_languages\":{\"en\":{\"id\":\"en\",\"name\":\"English\"}},\"multi_unit\":true,\"payment_registration_recommended\":true,\"vacation_rental_details\":{\"registry_number\":\"Property Registration Number 123456\",\"private_host\":\"true\",\"property_manager\":{\"name\":\"John Smith\",\"links\":{\"image\":{\"method\":\"GET\",\"href\":\"https://example.com/profile.jpg\"}}},\"rental_agreement\":{\"links\":{\"rental_agreement\":{\"method\":\"GET\",\"href\":\"https:/example.com/rentalconditions.pdf\"}}},\"house_rules\":[\"Children welcome\",\"No pets\",\"No smoking\",\"No parties or events\"],\"amenities\":{\"2859\":{\"id\":\"2859\",\"name\":\"Private pool\"},\"4296\":{\"id\":\"4296\",\"name\":\"Furnished balcony or patio\"}},\"vrbo_srp_id\":\"123.1234567.5678910\",\"listing_id\":\"1234567\",\"listing_number\":\"5678910\",\"listing_source\":\"HOMEAWAY_US\",\"listing_unit\":\"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60\"},\"supply_source\":\"vrbo\",\"registry_number\":\"Property Registration Number 123456\"} ``` * @param language Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes.

    Reference: * [W3 Language Tags](https://www.w3.org/International/articles/language-tags/) * [Language Options](https://developers.expediagroup.com/docs/rapid/resources/reference/language-options) * @param supplySource Options for which supply source you would like returned in the content response. This parameter may only be supplied once and will return all properties that match the requested supply source. An error is thrown if the parameter is provided multiple times. * `expedia` - Standard Expedia supply. * `vrbo` - VRBO supply - This option is restricted to partners who have VRBO supply enabled for their profile. See [Vacation Rentals](https://developers.expediagroup.com/docs/rapid/lodging/vacation-rentals) for more information. * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
    Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. (optional) @@ -4473,7 +5586,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat * @param email Email associated with the booking. Special characters in the local part or domain should be encoded.
    * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
    Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. (optional) * @param test The retrieve call has a test header that can be used to return set responses with the following keywords:
    * `standard` - Requires valid test booking. * `degraded_response` - Requires valid test booking * `service_unavailable` * `internal_server_error` (optional) - * @param include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See the [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. (optional) + * @param include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. * `marketing_fee_details` - Displays a more granular view of marketing fees in the response. (optional) * @throws ExpediaGroupApiErrorException * @return kotlin.collections.List */ @@ -4504,7 +5617,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat * @param email Email associated with the booking. Special characters in the local part or domain should be encoded.
    * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
    Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. (optional) * @param test The retrieve call has a test header that can be used to return set responses with the following keywords:
    * `standard` - Requires valid test booking. * `degraded_response` - Requires valid test booking * `service_unavailable` * `internal_server_error` (optional) - * @param include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See the [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. (optional) + * @param include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. * `marketing_fee_details` - Displays a more granular view of marketing fees in the response. (optional) * @throws ExpediaGroupApiErrorException * @return a [Response] object with a body of type kotlin.collections.List */ @@ -4597,7 +5710,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat * @param test The retrieve call has a test header that can be used to return set responses. Passing standard in the Test header will retrieve a test booking, and passing any of the errors listed below will return a stubbed error response that you can use to test your error handling code. Additionally, refer to the Test Request documentation for more details on how these header values are used. * `standard` - Requires valid test booking. * `degraded_response` - Requires valid test booking * `service_unavailable` * `internal_server_error` (optional) * @param token Provided as part of the link object and used to maintain state across calls. This simplifies each subsequent call by limiting the amount of information required at each step and reduces the potential for errors. Token values cannot be viewed or changed. (optional) * @param email Email associated with the booking. Special characters in the local part or domain should be encoded. (Email is required if the token is not provided the request)
    (optional) - * @param include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See the [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. (optional) + * @param include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. * `marketing_fee_details` - Displays a more granular view of marketing fees in the response. (optional) * @throws ExpediaGroupApiErrorException * @return Itinerary */ @@ -4632,7 +5745,7 @@ class RapidClient private constructor(clientConfiguration: RapidClientConfigurat * @param test The retrieve call has a test header that can be used to return set responses. Passing standard in the Test header will retrieve a test booking, and passing any of the errors listed below will return a stubbed error response that you can use to test your error handling code. Additionally, refer to the Test Request documentation for more details on how these header values are used. * `standard` - Requires valid test booking. * `degraded_response` - Requires valid test booking * `service_unavailable` * `internal_server_error` (optional) * @param token Provided as part of the link object and used to maintain state across calls. This simplifies each subsequent call by limiting the amount of information required at each step and reduces the potential for errors. Token values cannot be viewed or changed. (optional) * @param email Email associated with the booking. Special characters in the local part or domain should be encoded. (Email is required if the token is not provided the request)
    (optional) - * @param include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See the [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. (optional) + * @param include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. * `marketing_fee_details` - Displays a more granular view of marketing fees in the response. (optional) * @throws ExpediaGroupApiErrorException * @return a [Response] object with a body of type Itinerary */ diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/AdditionalHandling.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/AdditionalHandling.kt new file mode 100644 index 0000000000..e657111b4a --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/AdditionalHandling.kt @@ -0,0 +1,231 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.AdditionalHandlingCardContact +import com.expediagroup.sdk.rapid.models.Amount +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation +import javax.validation.constraints.NotNull + +/** + * Parent object for additional VCC handling instructions, to be included as part of the payment object when virtual_card is the requested payment type for property collect inventory. If not included, existing behavior regarding handling of VCCs with property collect inventory is to be preserved. This object will be ignored for non-property collect/non-VCC transactions. total_charges_allowed represents the total ceiling of all charges allowed on the VCC, including the booking price and any allowed incidentals. The value of total_charges_allowed must be at least the booking value. + * @param authorizedExpenses Indicates which types of expenses are authorized to be charged to the VCC. * `prestay_expenses_only` - Indicates that the provided VCC is for pre-stay charges only (e.g., deposits, cancellation fees, no-show fees). A physical card must be presented at check-in for any remaining balance, as well as incidentals. * `total_booking_amount` - Indicates that both pre-stay charges and the total booking amount are authorized, but no incidentals are authorized. A physical card must be presented at check-in for any incidentals. * `total_plus_incidentals` - Indicates that pre-stay, total booking, and incidental expenses are authorized. See `specified_incidental_expenses`. A physical card may be required for additional incidental expenses. * `see_authorization_form` - Indicates that a property should refer to the authorization form that will be sent either by the card provider or the authorizing company. + * @param specifiedIncidentalExpenses Included list of enumerated categories to restrict the authorized incidentals. This is only utilized when `authorized_expenses` is supplied with `total_plus_incidentals` and restrictions on incidentals are desired.
    Example: To allow any incidental expenses, specify `authorized_expenses` equal to `total_plus_incidentals` and omit `specified_incidental_expenses`. + * @param totalChargesAllowed + * @param isCvcRequired Indicates whether a CVC is required for the provided VCC. If this is marked required, the security_code field for the payment MUST be provided. + * @param authorizingCompany Company that will issue the authorization form for the virtual credit card payment. + * @param cardContact + * @param maxPaymentAttemptCount Requested limit to number of payment attempts. + * @param paymentAllowablePeriodStart Start date for valid range of the VCC payment instrument, in ISO 8601 format (YYYY-MM-DD). + * @param paymentAllowablePeriodEnd End date for valid range of the VCC payment instrument, in ISO 8601 format (YYYY-MM-DD). + */ +data class AdditionalHandling( + // Indicates which types of expenses are authorized to be charged to the VCC. * `prestay_expenses_only` - Indicates that the provided VCC is for pre-stay charges only (e.g., deposits, cancellation fees, no-show fees). A physical card must be presented at check-in for any remaining balance, as well as incidentals. * `total_booking_amount` - Indicates that both pre-stay charges and the total booking amount are authorized, but no incidentals are authorized. A physical card must be presented at check-in for any incidentals. * `total_plus_incidentals` - Indicates that pre-stay, total booking, and incidental expenses are authorized. See `specified_incidental_expenses`. A physical card may be required for additional incidental expenses. * `see_authorization_form` - Indicates that a property should refer to the authorization form that will be sent either by the card provider or the authorizing company. + @JsonProperty("authorized_expenses") + @field:NotNull + val authorizedExpenses: AdditionalHandling.AuthorizedExpenses, + // Included list of enumerated categories to restrict the authorized incidentals. This is only utilized when `authorized_expenses` is supplied with `total_plus_incidentals` and restrictions on incidentals are desired.
    Example: To allow any incidental expenses, specify `authorized_expenses` equal to `total_plus_incidentals` and omit `specified_incidental_expenses`. + @JsonProperty("specified_incidental_expenses") + val specifiedIncidentalExpenses: kotlin.collections.List? = null, + @JsonProperty("total_charges_allowed") + @field:Valid + val totalChargesAllowed: Amount? = null, + // Indicates whether a CVC is required for the provided VCC. If this is marked required, the security_code field for the payment MUST be provided. + @JsonProperty("is_cvc_required") + @field:Valid + val isCvcRequired: kotlin.Boolean? = null, + // Company that will issue the authorization form for the virtual credit card payment. + @JsonProperty("authorizing_company") + @field:Valid + val authorizingCompany: kotlin.String? = null, + @JsonProperty("card_contact") + @field:Valid + val cardContact: AdditionalHandlingCardContact? = null, + // Requested limit to number of payment attempts. + @JsonProperty("max_payment_attempt_count") + @field:Valid + val maxPaymentAttemptCount: java.math.BigDecimal? = null, + // Start date for valid range of the VCC payment instrument, in ISO 8601 format (YYYY-MM-DD). + @JsonProperty("payment_allowable_period_start") + @field:Valid + val paymentAllowablePeriodStart: kotlin.String? = null, + // End date for valid range of the VCC payment instrument, in ISO 8601 format (YYYY-MM-DD). + @JsonProperty("payment_allowable_period_end") + @field:Valid + val paymentAllowablePeriodEnd: kotlin.String? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var authorizedExpenses: AdditionalHandling.AuthorizedExpenses? = null, + private var specifiedIncidentalExpenses: kotlin.collections.List? = null, + private var totalChargesAllowed: Amount? = null, + private var isCvcRequired: kotlin.Boolean? = null, + private var authorizingCompany: kotlin.String? = null, + private var cardContact: AdditionalHandlingCardContact? = null, + private var maxPaymentAttemptCount: java.math.BigDecimal? = null, + private var paymentAllowablePeriodStart: kotlin.String? = null, + private var paymentAllowablePeriodEnd: kotlin.String? = null + ) { + fun authorizedExpenses(authorizedExpenses: AdditionalHandling.AuthorizedExpenses) = apply { this.authorizedExpenses = authorizedExpenses } + + fun specifiedIncidentalExpenses(specifiedIncidentalExpenses: kotlin.collections.List?) = + apply { + this.specifiedIncidentalExpenses = + specifiedIncidentalExpenses + } + + fun totalChargesAllowed(totalChargesAllowed: Amount?) = apply { this.totalChargesAllowed = totalChargesAllowed } + + fun isCvcRequired(isCvcRequired: kotlin.Boolean?) = apply { this.isCvcRequired = isCvcRequired } + + fun authorizingCompany(authorizingCompany: kotlin.String?) = apply { this.authorizingCompany = authorizingCompany } + + fun cardContact(cardContact: AdditionalHandlingCardContact?) = apply { this.cardContact = cardContact } + + fun maxPaymentAttemptCount(maxPaymentAttemptCount: java.math.BigDecimal?) = apply { this.maxPaymentAttemptCount = maxPaymentAttemptCount } + + fun paymentAllowablePeriodStart(paymentAllowablePeriodStart: kotlin.String?) = apply { this.paymentAllowablePeriodStart = paymentAllowablePeriodStart } + + fun paymentAllowablePeriodEnd(paymentAllowablePeriodEnd: kotlin.String?) = apply { this.paymentAllowablePeriodEnd = paymentAllowablePeriodEnd } + + fun build(): AdditionalHandling { + val instance = + AdditionalHandling( + authorizedExpenses = authorizedExpenses!!, + specifiedIncidentalExpenses = specifiedIncidentalExpenses, + totalChargesAllowed = totalChargesAllowed, + isCvcRequired = isCvcRequired, + authorizingCompany = authorizingCompany, + cardContact = cardContact, + maxPaymentAttemptCount = maxPaymentAttemptCount, + paymentAllowablePeriodStart = paymentAllowablePeriodStart, + paymentAllowablePeriodEnd = paymentAllowablePeriodEnd + ) + + validate(instance) + + return instance + } + + private fun validate(instance: AdditionalHandling) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + authorizedExpenses = authorizedExpenses!!, + specifiedIncidentalExpenses = specifiedIncidentalExpenses, + totalChargesAllowed = totalChargesAllowed, + isCvcRequired = isCvcRequired, + authorizingCompany = authorizingCompany, + cardContact = cardContact, + maxPaymentAttemptCount = maxPaymentAttemptCount, + paymentAllowablePeriodStart = paymentAllowablePeriodStart, + paymentAllowablePeriodEnd = paymentAllowablePeriodEnd + ) + + /** + * Indicates which types of expenses are authorized to be charged to the VCC. * `prestay_expenses_only` - Indicates that the provided VCC is for pre-stay charges only (e.g., deposits, cancellation fees, no-show fees). A physical card must be presented at check-in for any remaining balance, as well as incidentals. * `total_booking_amount` - Indicates that both pre-stay charges and the total booking amount are authorized, but no incidentals are authorized. A physical card must be presented at check-in for any incidentals. * `total_plus_incidentals` - Indicates that pre-stay, total booking, and incidental expenses are authorized. See `specified_incidental_expenses`. A physical card may be required for additional incidental expenses. * `see_authorization_form` - Indicates that a property should refer to the authorization form that will be sent either by the card provider or the authorizing company. + * Values: PRESTAY_EXPENSES_ONLY,TOTAL_BOOKING_AMOUNT,TOTAL_PLUS_INCIDENTALS,SEE_AUTHORIZATION_FORM + */ + enum class AuthorizedExpenses(val value: kotlin.String) { + @JsonProperty("prestay_expenses_only") + PRESTAY_EXPENSES_ONLY("prestay_expenses_only"), + + @JsonProperty("total_booking_amount") + TOTAL_BOOKING_AMOUNT("total_booking_amount"), + + @JsonProperty("total_plus_incidentals") + TOTAL_PLUS_INCIDENTALS("total_plus_incidentals"), + + @JsonProperty("see_authorization_form") + SEE_AUTHORIZATION_FORM("see_authorization_form") + } + + /** + * Included list of enumerated categories to restrict the authorized incidentals. This is only utilized when `authorized_expenses` is supplied with `total_plus_incidentals` and restrictions on incidentals are desired.
    Example: To allow any incidental expenses, specify `authorized_expenses` equal to `total_plus_incidentals` and omit `specified_incidental_expenses`. + * Values: BREAKFAST,ENTERTAINMENT,INTERNET,MEETING_EXPENSES,OTHER_FOOD_BEVERAGE,PARKING,PHONE,TAXES,TRANSFER,OTHER + */ + enum class SpecifiedIncidentalExpenses(val value: kotlin.String) { + @JsonProperty("breakfast") + BREAKFAST("breakfast"), + + @JsonProperty("entertainment") + ENTERTAINMENT("entertainment"), + + @JsonProperty("internet") + INTERNET("internet"), + + @JsonProperty("meeting_expenses") + MEETING_EXPENSES("meeting_expenses"), + + @JsonProperty("other_food_beverage") + OTHER_FOOD_BEVERAGE("other_food_beverage"), + + @JsonProperty("parking") + PARKING("parking"), + + @JsonProperty("phone") + PHONE("phone"), + + @JsonProperty("taxes") + TAXES("taxes"), + + @JsonProperty("transfer") + TRANSFER("transfer"), + + @JsonProperty("other") + OTHER("other") + } +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/AdditionalHandlingCardContact.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/AdditionalHandlingCardContact.kt new file mode 100644 index 0000000000..546156212c --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/AdditionalHandlingCardContact.kt @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.Phone +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * Object to hold information for a contact the supplier can reach in the event of any issues with the provided payment. + * @param email The email address of the VCC contact. + * @param phone + */ +data class AdditionalHandlingCardContact( + // The email address of the VCC contact. + @JsonProperty("email") + @field:Valid + val email: kotlin.String? = null, + @JsonProperty("phone") + @field:Valid + val phone: Phone? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var email: kotlin.String? = null, + private var phone: Phone? = null + ) { + fun email(email: kotlin.String?) = apply { this.email = email } + + fun phone(phone: Phone?) = apply { this.phone = phone } + + fun build(): AdditionalHandlingCardContact { + val instance = + AdditionalHandlingCardContact( + email = email, + phone = phone + ) + + validate(instance) + + return instance + } + + private fun validate(instance: AdditionalHandlingCardContact) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + email = email, + phone = phone + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/BlockoutDate.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/BlockoutDate.kt new file mode 100644 index 0000000000..fa64696bb4 --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/BlockoutDate.kt @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * An array of blockout dates that apply to the promotion. + * @param end End date of blockout date range in ISO 8601 format. + * @param start Start date of blockout date range in ISO 8601 format. + */ +data class BlockoutDate( + // End date of blockout date range in ISO 8601 format. + @JsonProperty("end") + @field:Valid + val end: kotlin.String? = null, + // Start date of blockout date range in ISO 8601 format. + @JsonProperty("start") + @field:Valid + val start: kotlin.String? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var end: kotlin.String? = null, + private var start: kotlin.String? = null + ) { + fun end(end: kotlin.String?) = apply { this.end = end } + + fun start(start: kotlin.String?) = apply { this.start = start } + + fun build(): BlockoutDate { + val instance = + BlockoutDate( + end = end, + start = start + ) + + validate(instance) + + return instance + } + + private fun validate(instance: BlockoutDate) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + end = end, + start = start + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/BusinessModel.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/BusinessModel.kt index 5916f9dfd4..d14d114d6c 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/BusinessModel.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/BusinessModel.kt @@ -40,6 +40,7 @@ import javax.validation.Validation * How and when the payment can be taken. * @param expediaCollect Whether or not a payment for this property can be taken by Expedia at the time of booking. * @param propertyCollect Whether or not a payment for this property can be taken by the property upon arrival. + * @param updatedExpediaCollect Whether or not a payment for this property can be taken by Expedia at the time of booking and whether a VAT invoice can be requested from the property if the property is accountable to provide such a document. */ data class BusinessModel( // Whether or not a payment for this property can be taken by Expedia at the time of booking. @@ -49,7 +50,11 @@ data class BusinessModel( // Whether or not a payment for this property can be taken by the property upon arrival. @JsonProperty("property_collect") @field:Valid - val propertyCollect: kotlin.Boolean? = null + val propertyCollect: kotlin.Boolean? = null, + // Whether or not a payment for this property can be taken by Expedia at the time of booking and whether a VAT invoice can be requested from the property if the property is accountable to provide such a document. + @JsonProperty("updated_expedia_collect") + @field:Valid + val updatedExpediaCollect: kotlin.Boolean? = null ) { companion object { @JvmStatic @@ -58,17 +63,21 @@ data class BusinessModel( class Builder( private var expediaCollect: kotlin.Boolean? = null, - private var propertyCollect: kotlin.Boolean? = null + private var propertyCollect: kotlin.Boolean? = null, + private var updatedExpediaCollect: kotlin.Boolean? = null ) { fun expediaCollect(expediaCollect: kotlin.Boolean?) = apply { this.expediaCollect = expediaCollect } fun propertyCollect(propertyCollect: kotlin.Boolean?) = apply { this.propertyCollect = propertyCollect } + fun updatedExpediaCollect(updatedExpediaCollect: kotlin.Boolean?) = apply { this.updatedExpediaCollect = updatedExpediaCollect } + fun build(): BusinessModel { val instance = BusinessModel( expediaCollect = expediaCollect, - propertyCollect = propertyCollect + propertyCollect = propertyCollect, + updatedExpediaCollect = updatedExpediaCollect ) validate(instance) @@ -98,6 +107,7 @@ data class BusinessModel( fun toBuilder() = Builder( expediaCollect = expediaCollect, - propertyCollect = propertyCollect + propertyCollect = propertyCollect, + updatedExpediaCollect = updatedExpediaCollect ) } diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Campaign.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Campaign.kt new file mode 100644 index 0000000000..c5f43db203 --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Campaign.kt @@ -0,0 +1,203 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.CampaignCuratedContent +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * + * @param campaignId Unique identifier for the campaign + * @param blockoutDates Boolean value indicating if promotions with blockout dates are included in this campaign. + * @param bookableEnd The last date that bookings can be made on in this campaign, in ISO 8601 format (YYYY-MM-DD). + * @param bookableStart The first date that bookings can be made on in this campaign, in ISO 8601 format (YYYY-MM-DD). + * @param curatedContent + * @param lifetime The type of lifetime of this campaign. + * @param maxDiscount The maximum discount amount that is included in a campaign. + * @param minDiscount The minimum discount amount that is included in a campaign. + * @param name The name of the campaign. + * @param propertyCount The number of properties participating in this campaign. + * @param stayEnd The last date that check-ins can be set to in this campaign in ISO 8601 format (YYYY-MM-DD). + * @param stayStart The first date that check-ins can be set to in this campaign in ISO 8601 format (YYYY-MM-DD). + */ +data class Campaign( + // Unique identifier for the campaign + @JsonProperty("campaign_id") + @field:Valid + val campaignId: kotlin.String? = null, + // Boolean value indicating if promotions with blockout dates are included in this campaign. + @JsonProperty("blockout_dates") + @field:Valid + val blockoutDates: kotlin.Boolean? = null, + // The last date that bookings can be made on in this campaign, in ISO 8601 format (YYYY-MM-DD). + @JsonProperty("bookable_end") + @field:Valid + val bookableEnd: kotlin.String? = null, + // The first date that bookings can be made on in this campaign, in ISO 8601 format (YYYY-MM-DD). + @JsonProperty("bookable_start") + @field:Valid + val bookableStart: kotlin.String? = null, + @JsonProperty("curated_content") + @field:Valid + val curatedContent: CampaignCuratedContent? = null, + // The type of lifetime of this campaign. + @JsonProperty("lifetime") + @field:Valid + val lifetime: kotlin.String? = null, + // The maximum discount amount that is included in a campaign. + @JsonProperty("max_discount") + @field:Valid + val maxDiscount: kotlin.String? = null, + // The minimum discount amount that is included in a campaign. + @JsonProperty("min_discount") + @field:Valid + val minDiscount: kotlin.String? = null, + // The name of the campaign. + @JsonProperty("name") + @field:Valid + val name: kotlin.String? = null, + // The number of properties participating in this campaign. + @JsonProperty("property_count") + @field:Valid + val propertyCount: kotlin.String? = null, + // The last date that check-ins can be set to in this campaign in ISO 8601 format (YYYY-MM-DD). + @JsonProperty("stay_end") + @field:Valid + val stayEnd: kotlin.String? = null, + // The first date that check-ins can be set to in this campaign in ISO 8601 format (YYYY-MM-DD). + @JsonProperty("stay_start") + @field:Valid + val stayStart: kotlin.String? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var campaignId: kotlin.String? = null, + private var blockoutDates: kotlin.Boolean? = null, + private var bookableEnd: kotlin.String? = null, + private var bookableStart: kotlin.String? = null, + private var curatedContent: CampaignCuratedContent? = null, + private var lifetime: kotlin.String? = null, + private var maxDiscount: kotlin.String? = null, + private var minDiscount: kotlin.String? = null, + private var name: kotlin.String? = null, + private var propertyCount: kotlin.String? = null, + private var stayEnd: kotlin.String? = null, + private var stayStart: kotlin.String? = null + ) { + fun campaignId(campaignId: kotlin.String?) = apply { this.campaignId = campaignId } + + fun blockoutDates(blockoutDates: kotlin.Boolean?) = apply { this.blockoutDates = blockoutDates } + + fun bookableEnd(bookableEnd: kotlin.String?) = apply { this.bookableEnd = bookableEnd } + + fun bookableStart(bookableStart: kotlin.String?) = apply { this.bookableStart = bookableStart } + + fun curatedContent(curatedContent: CampaignCuratedContent?) = apply { this.curatedContent = curatedContent } + + fun lifetime(lifetime: kotlin.String?) = apply { this.lifetime = lifetime } + + fun maxDiscount(maxDiscount: kotlin.String?) = apply { this.maxDiscount = maxDiscount } + + fun minDiscount(minDiscount: kotlin.String?) = apply { this.minDiscount = minDiscount } + + fun name(name: kotlin.String?) = apply { this.name = name } + + fun propertyCount(propertyCount: kotlin.String?) = apply { this.propertyCount = propertyCount } + + fun stayEnd(stayEnd: kotlin.String?) = apply { this.stayEnd = stayEnd } + + fun stayStart(stayStart: kotlin.String?) = apply { this.stayStart = stayStart } + + fun build(): Campaign { + val instance = + Campaign( + campaignId = campaignId, + blockoutDates = blockoutDates, + bookableEnd = bookableEnd, + bookableStart = bookableStart, + curatedContent = curatedContent, + lifetime = lifetime, + maxDiscount = maxDiscount, + minDiscount = minDiscount, + name = name, + propertyCount = propertyCount, + stayEnd = stayEnd, + stayStart = stayStart + ) + + validate(instance) + + return instance + } + + private fun validate(instance: Campaign) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + campaignId = campaignId, + blockoutDates = blockoutDates, + bookableEnd = bookableEnd, + bookableStart = bookableStart, + curatedContent = curatedContent, + lifetime = lifetime, + maxDiscount = maxDiscount, + minDiscount = minDiscount, + name = name, + propertyCount = propertyCount, + stayEnd = stayEnd, + stayStart = stayStart + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CampaignCuratedContent.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CampaignCuratedContent.kt new file mode 100644 index 0000000000..f314a7a98e --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CampaignCuratedContent.kt @@ -0,0 +1,138 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.MarketRegionContent +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * Curated content object containing map of campaign regions containing various curated content objects + * @param anz + * @param asia + * @param ca + * @param emea + * @param latam + * @param us + */ +data class CampaignCuratedContent( + @JsonProperty("anz") + @field:Valid + val anz: MarketRegionContent? = null, + @JsonProperty("asia") + @field:Valid + val asia: MarketRegionContent? = null, + @JsonProperty("ca") + @field:Valid + val ca: MarketRegionContent? = null, + @JsonProperty("emea") + @field:Valid + val emea: MarketRegionContent? = null, + @JsonProperty("latam") + @field:Valid + val latam: MarketRegionContent? = null, + @JsonProperty("us") + @field:Valid + val us: MarketRegionContent? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var anz: MarketRegionContent? = null, + private var asia: MarketRegionContent? = null, + private var ca: MarketRegionContent? = null, + private var emea: MarketRegionContent? = null, + private var latam: MarketRegionContent? = null, + private var us: MarketRegionContent? = null + ) { + fun anz(anz: MarketRegionContent?) = apply { this.anz = anz } + + fun asia(asia: MarketRegionContent?) = apply { this.asia = asia } + + fun ca(ca: MarketRegionContent?) = apply { this.ca = ca } + + fun emea(emea: MarketRegionContent?) = apply { this.emea = emea } + + fun latam(latam: MarketRegionContent?) = apply { this.latam = latam } + + fun us(us: MarketRegionContent?) = apply { this.us = us } + + fun build(): CampaignCuratedContent { + val instance = + CampaignCuratedContent( + anz = anz, + asia = asia, + ca = ca, + emea = emea, + latam = latam, + us = us + ) + + validate(instance) + + return instance + } + + private fun validate(instance: CampaignCuratedContent) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + anz = anz, + asia = asia, + ca = ca, + emea = emea, + latam = latam, + us = us + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/ChangeRoomDetailsRequest.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/ChangeRoomDetailsRequest.kt index 27db848e86..896ef5d965 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/ChangeRoomDetailsRequest.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/ChangeRoomDetailsRequest.kt @@ -31,6 +31,7 @@ package com.expediagroup.sdk.rapid.models import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.ChangeRoomDetailsRequestSensitiveTravelerDetails import com.expediagroup.sdk.rapid.models.Loyalty import com.fasterxml.jackson.annotation.JsonProperty import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator @@ -41,6 +42,7 @@ import javax.validation.Validation * * @param givenName First name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. * @param familyName Last name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. + * @param sensitiveTravelerDetails * @param smoking Specify if the guest would prefer a smoking room. This field is only a request and the property is not guaranteed to honor it, it will not override any non-smoking policies by the hotel. * @param specialRequest Special requests to send to hotel (not guaranteed). Do not use this field to communicate B2B customer service requests or pass any sensitive personal or financial information (PII). Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. * @param loyaltyId Deprecated. Please use the loyalty id inside the loyalty object. @@ -55,6 +57,9 @@ data class ChangeRoomDetailsRequest( @JsonProperty("family_name") @field:Valid val familyName: kotlin.String? = null, + @JsonProperty("sensitive_traveler_details") + @field:Valid + val sensitiveTravelerDetails: ChangeRoomDetailsRequestSensitiveTravelerDetails? = null, // Specify if the guest would prefer a smoking room. This field is only a request and the property is not guaranteed to honor it, it will not override any non-smoking policies by the hotel. @JsonProperty("smoking") @field:Valid @@ -80,6 +85,7 @@ data class ChangeRoomDetailsRequest( class Builder( private var givenName: kotlin.String? = null, private var familyName: kotlin.String? = null, + private var sensitiveTravelerDetails: ChangeRoomDetailsRequestSensitiveTravelerDetails? = null, private var smoking: kotlin.Boolean? = null, private var specialRequest: kotlin.String? = null, private var loyaltyId: kotlin.String? = null, @@ -89,6 +95,8 @@ data class ChangeRoomDetailsRequest( fun familyName(familyName: kotlin.String?) = apply { this.familyName = familyName } + fun sensitiveTravelerDetails(sensitiveTravelerDetails: ChangeRoomDetailsRequestSensitiveTravelerDetails?) = apply { this.sensitiveTravelerDetails = sensitiveTravelerDetails } + fun smoking(smoking: kotlin.Boolean?) = apply { this.smoking = smoking } fun specialRequest(specialRequest: kotlin.String?) = apply { this.specialRequest = specialRequest } @@ -102,6 +110,7 @@ data class ChangeRoomDetailsRequest( ChangeRoomDetailsRequest( givenName = givenName, familyName = familyName, + sensitiveTravelerDetails = sensitiveTravelerDetails, smoking = smoking, specialRequest = specialRequest, loyaltyId = loyaltyId, @@ -136,6 +145,7 @@ data class ChangeRoomDetailsRequest( Builder( givenName = givenName, familyName = familyName, + sensitiveTravelerDetails = sensitiveTravelerDetails, smoking = smoking, specialRequest = specialRequest, loyaltyId = loyaltyId, diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/ChangeRoomDetailsRequestSensitiveTravelerDetails.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/ChangeRoomDetailsRequestSensitiveTravelerDetails.kt new file mode 100644 index 0000000000..a7885e58a6 --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/ChangeRoomDetailsRequestSensitiveTravelerDetails.kt @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.Address1 +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * Additional sensitive (PII) data about a traveler that should only be submitted in cases where it is necessary to clarify the identity of the traveler. + * @param middleName Middle name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. + * @param dateOfBirth The date of birth of room guest, in ISO 8601 format (YYYY-MM-DD). + * @param address + */ +data class ChangeRoomDetailsRequestSensitiveTravelerDetails( + // Middle name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. + @JsonProperty("middle_name") + @field:Valid + val middleName: kotlin.String? = null, + // The date of birth of room guest, in ISO 8601 format (YYYY-MM-DD). + @JsonProperty("date_of_birth") + @field:Valid + val dateOfBirth: kotlin.String? = null, + @JsonProperty("address") + @field:Valid + val address: Address1? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var middleName: kotlin.String? = null, + private var dateOfBirth: kotlin.String? = null, + private var address: Address1? = null + ) { + fun middleName(middleName: kotlin.String?) = apply { this.middleName = middleName } + + fun dateOfBirth(dateOfBirth: kotlin.String?) = apply { this.dateOfBirth = dateOfBirth } + + fun address(address: Address1?) = apply { this.address = address } + + fun build(): ChangeRoomDetailsRequestSensitiveTravelerDetails { + val instance = + ChangeRoomDetailsRequestSensitiveTravelerDetails( + middleName = middleName, + dateOfBirth = dateOfBirth, + address = address + ) + + validate(instance) + + return instance + } + + private fun validate(instance: ChangeRoomDetailsRequestSensitiveTravelerDetails) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + middleName = middleName, + dateOfBirth = dateOfBirth, + address = address + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Checkout.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Checkout.kt index 563716ed7a..e325d4a7b7 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Checkout.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Checkout.kt @@ -39,12 +39,17 @@ import javax.validation.Validation /** * The property's check-out information. * @param time The time by which a guest must check out. + * @param instructions The property's check-out policy. */ data class Checkout( // The time by which a guest must check out. @JsonProperty("time") @field:Valid - val time: kotlin.String? = null + val time: kotlin.String? = null, + // The property's check-out policy. + @JsonProperty("instructions") + @field:Valid + val instructions: kotlin.String? = null ) { companion object { @JvmStatic @@ -52,14 +57,18 @@ data class Checkout( } class Builder( - private var time: kotlin.String? = null + private var time: kotlin.String? = null, + private var instructions: kotlin.String? = null ) { fun time(time: kotlin.String?) = apply { this.time = time } + fun instructions(instructions: kotlin.String?) = apply { this.instructions = instructions } + fun build(): Checkout { val instance = Checkout( - time = time + time = time, + instructions = instructions ) validate(instance) @@ -88,6 +97,7 @@ data class Checkout( fun toBuilder() = Builder( - time = time + time = time, + instructions = instructions ) } diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Coordinates.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Coordinates.kt index 16b7d147fe..9ec0ba5fa0 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Coordinates.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Coordinates.kt @@ -37,16 +37,14 @@ import javax.validation.Valid import javax.validation.Validation /** - * The coordinates of the property. - * @param latitude The latitude of the property. - * @param longitude The longitude of the property. + * + * @param latitude + * @param longitude */ data class Coordinates( - // The latitude of the property. @JsonProperty("latitude") @field:Valid val latitude: java.math.BigDecimal? = null, - // The longitude of the property. @JsonProperty("longitude") @field:Valid val longitude: java.math.BigDecimal? = null diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Copy.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Copy.kt new file mode 100644 index 0000000000..5ce0daf25f --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Copy.kt @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * A copy object containing both copy and subcopy that should be used with promotion for this region. + * @param copy The marketing copy that should be used for this campaign. + * @param subcopy The marketing subcopy that should be used for this campaign. + */ +data class Copy( + // The marketing copy that should be used for this campaign. + @JsonProperty("copy") + @field:Valid + val copy: kotlin.String? = null, + // The marketing subcopy that should be used for this campaign. + @JsonProperty("subcopy") + @field:Valid + val subcopy: kotlin.String? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var copy: kotlin.String? = null, + private var subcopy: kotlin.String? = null + ) { + fun copy(copy: kotlin.String?) = apply { this.copy = copy } + + fun subcopy(subcopy: kotlin.String?) = apply { this.subcopy = subcopy } + + fun build(): Copy { + val instance = + Copy( + copy = copy, + subcopy = subcopy + ) + + validate(instance) + + return instance + } + + private fun validate(instance: Copy) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + copy = copy, + subcopy = subcopy + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequest.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequest.kt index 2269231c33..06650adcfc 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequest.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequest.kt @@ -31,10 +31,11 @@ package com.expediagroup.sdk.rapid.models import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException -import com.expediagroup.sdk.rapid.models.CreateItineraryRequestInvoicing import com.expediagroup.sdk.rapid.models.CreateItineraryRequestRoom +import com.expediagroup.sdk.rapid.models.Invoicing import com.expediagroup.sdk.rapid.models.PaymentRequest import com.expediagroup.sdk.rapid.models.PhoneRequest +import com.expediagroup.sdk.rapid.models.SupplierTransparency import com.fasterxml.jackson.annotation.JsonProperty import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator import javax.validation.Valid @@ -50,9 +51,10 @@ import javax.validation.constraints.NotNull * @param hold Flag for placing a booking on hold. The booking will be released if the resume link is not followed within the hold period. Please refer to our Hold and Resume documentation. * @param payments Required if payment information prior to booking was not submitted. If register payments was called prior to this call, do not submit payment information again. * @param affiliateMetadata Field that stores up to 256 characters of additional metadata with the itinerary. Will be returned on all retrieve responses for this itinerary. The data must be in the format 'key1:value|key2:value|key3:value'. Other Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. - * @param taxRegistrationNumber The customer's taxpayer identification number that is provided by the government to nationals or resident aliens. This number should be collected from individuals that pay taxes or participate in activities that provide revenue for one or more tax types. Note: This value is only needed from Brazilian and Indian customers. + * @param taxRegistrationNumber The customer's taxpayer identification number that is provided by the government to nationals or resident aliens. This number should be collected from individuals that pay taxes or participate in activities that provide revenue for one or more tax types. *Note:* This value is only needed from Brazilian and Indian customers. * @param travelerHandlingInstructions Custom traveler handling instructions for the hotel. Do not include PCI sensitive data, such as credit card numbers, in this field. * @param invoicing + * @param supplierTransparency */ data class CreateItineraryRequest( // Email address for the customer. Must adhere to standard RFC 822 email format. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. @@ -87,7 +89,7 @@ data class CreateItineraryRequest( @JsonProperty("affiliate_metadata") @field:Valid val affiliateMetadata: kotlin.String? = null, - // The customer's taxpayer identification number that is provided by the government to nationals or resident aliens. This number should be collected from individuals that pay taxes or participate in activities that provide revenue for one or more tax types. Note: This value is only needed from Brazilian and Indian customers. + // The customer's taxpayer identification number that is provided by the government to nationals or resident aliens. This number should be collected from individuals that pay taxes or participate in activities that provide revenue for one or more tax types. *Note:* This value is only needed from Brazilian and Indian customers. @JsonProperty("tax_registration_number") @field:Valid val taxRegistrationNumber: kotlin.String? = null, @@ -97,7 +99,10 @@ data class CreateItineraryRequest( val travelerHandlingInstructions: kotlin.String? = null, @JsonProperty("invoicing") @field:Valid - val invoicing: CreateItineraryRequestInvoicing? = null + val invoicing: Invoicing? = null, + @JsonProperty("supplier_transparency") + @field:Valid + val supplierTransparency: SupplierTransparency? = null ) { companion object { @JvmStatic @@ -114,7 +119,8 @@ data class CreateItineraryRequest( private var affiliateMetadata: kotlin.String? = null, private var taxRegistrationNumber: kotlin.String? = null, private var travelerHandlingInstructions: kotlin.String? = null, - private var invoicing: CreateItineraryRequestInvoicing? = null + private var invoicing: Invoicing? = null, + private var supplierTransparency: SupplierTransparency? = null ) { fun email(email: kotlin.String) = apply { this.email = email } @@ -134,7 +140,9 @@ data class CreateItineraryRequest( fun travelerHandlingInstructions(travelerHandlingInstructions: kotlin.String?) = apply { this.travelerHandlingInstructions = travelerHandlingInstructions } - fun invoicing(invoicing: CreateItineraryRequestInvoicing?) = apply { this.invoicing = invoicing } + fun invoicing(invoicing: Invoicing?) = apply { this.invoicing = invoicing } + + fun supplierTransparency(supplierTransparency: SupplierTransparency?) = apply { this.supplierTransparency = supplierTransparency } fun build(): CreateItineraryRequest { val instance = @@ -148,7 +156,8 @@ data class CreateItineraryRequest( affiliateMetadata = affiliateMetadata, taxRegistrationNumber = taxRegistrationNumber, travelerHandlingInstructions = travelerHandlingInstructions, - invoicing = invoicing + invoicing = invoicing, + supplierTransparency = supplierTransparency ) validate(instance) @@ -186,6 +195,7 @@ data class CreateItineraryRequest( affiliateMetadata = affiliateMetadata, taxRegistrationNumber = taxRegistrationNumber, travelerHandlingInstructions = travelerHandlingInstructions, - invoicing = invoicing + invoicing = invoicing, + supplierTransparency = supplierTransparency ) } diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequestRoom.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequestRoom.kt index 424f438b25..c76d97b523 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequestRoom.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequestRoom.kt @@ -31,6 +31,7 @@ package com.expediagroup.sdk.rapid.models import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.CreateItineraryRequestRoomSensitiveTravelerDetails import com.expediagroup.sdk.rapid.models.Loyalty import com.fasterxml.jackson.annotation.JsonProperty import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator @@ -40,24 +41,28 @@ import javax.validation.constraints.NotNull /** * - * @param givenName First name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. - * @param familyName Last name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. + * @param givenName Given name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. + * @param familyName Family name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. + * @param sensitiveTravelerDetails * @param smoking Specify if the guest would prefer a smoking room. This field is only a request and the property is not guaranteed to honor it, it will not override any non-smoking policies by the hotel. * @param specialRequest Special requests to send to hotel (not guaranteed). Do not use this field to communicate B2B customer service requests or pass any sensitive personal or financial information (PII). Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. * @param loyaltyId Deprecated. Please use the loyalty id inside the loyalty object. * @param loyalty */ data class CreateItineraryRequestRoom( - // First name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. + // Given name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. @JsonProperty("given_name") @field:NotNull @field:Valid val givenName: kotlin.String, - // Last name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. + // Family name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. @JsonProperty("family_name") @field:NotNull @field:Valid val familyName: kotlin.String, + @JsonProperty("sensitive_traveler_details") + @field:Valid + val sensitiveTravelerDetails: CreateItineraryRequestRoomSensitiveTravelerDetails? = null, // Specify if the guest would prefer a smoking room. This field is only a request and the property is not guaranteed to honor it, it will not override any non-smoking policies by the hotel. @JsonProperty("smoking") @field:Valid @@ -83,6 +88,7 @@ data class CreateItineraryRequestRoom( class Builder( private var givenName: kotlin.String? = null, private var familyName: kotlin.String? = null, + private var sensitiveTravelerDetails: CreateItineraryRequestRoomSensitiveTravelerDetails? = null, private var smoking: kotlin.Boolean? = null, private var specialRequest: kotlin.String? = null, private var loyaltyId: kotlin.String? = null, @@ -92,6 +98,8 @@ data class CreateItineraryRequestRoom( fun familyName(familyName: kotlin.String) = apply { this.familyName = familyName } + fun sensitiveTravelerDetails(sensitiveTravelerDetails: CreateItineraryRequestRoomSensitiveTravelerDetails?) = apply { this.sensitiveTravelerDetails = sensitiveTravelerDetails } + fun smoking(smoking: kotlin.Boolean?) = apply { this.smoking = smoking } fun specialRequest(specialRequest: kotlin.String?) = apply { this.specialRequest = specialRequest } @@ -105,6 +113,7 @@ data class CreateItineraryRequestRoom( CreateItineraryRequestRoom( givenName = givenName!!, familyName = familyName!!, + sensitiveTravelerDetails = sensitiveTravelerDetails, smoking = smoking, specialRequest = specialRequest, loyaltyId = loyaltyId, @@ -139,6 +148,7 @@ data class CreateItineraryRequestRoom( Builder( givenName = givenName!!, familyName = familyName!!, + sensitiveTravelerDetails = sensitiveTravelerDetails, smoking = smoking, specialRequest = specialRequest, loyaltyId = loyaltyId, diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequestRoomSensitiveTravelerDetails.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequestRoomSensitiveTravelerDetails.kt new file mode 100644 index 0000000000..0c46171ecd --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequestRoomSensitiveTravelerDetails.kt @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.Address1 +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * Additional sensitive (PII) data about a traveler that should only be submitted in cases where it is necessary to clarify the identity of the traveler. + * @param middleName Middle name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. + * @param dateOfBirth The date of birth of room guest, in ISO 8601 format (YYYY-MM-DD). + * @param address + */ +data class CreateItineraryRequestRoomSensitiveTravelerDetails( + // Middle name of room guest. Max 60 characters. Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be re-encoded. + @JsonProperty("middle_name") + @field:Valid + val middleName: kotlin.String? = null, + // The date of birth of room guest, in ISO 8601 format (YYYY-MM-DD). + @JsonProperty("date_of_birth") + @field:Valid + val dateOfBirth: kotlin.String? = null, + @JsonProperty("address") + @field:Valid + val address: Address1? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var middleName: kotlin.String? = null, + private var dateOfBirth: kotlin.String? = null, + private var address: Address1? = null + ) { + fun middleName(middleName: kotlin.String?) = apply { this.middleName = middleName } + + fun dateOfBirth(dateOfBirth: kotlin.String?) = apply { this.dateOfBirth = dateOfBirth } + + fun address(address: Address1?) = apply { this.address = address } + + fun build(): CreateItineraryRequestRoomSensitiveTravelerDetails { + val instance = + CreateItineraryRequestRoomSensitiveTravelerDetails( + middleName = middleName, + dateOfBirth = dateOfBirth, + address = address + ) + + validate(instance) + + return instance + } + + private fun validate(instance: CreateItineraryRequestRoomSensitiveTravelerDetails) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + middleName = middleName, + dateOfBirth = dateOfBirth, + address = address + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Image2.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Image2.kt new file mode 100644 index 0000000000..91209aa594 --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Image2.kt @@ -0,0 +1,103 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * An image object containing the link to the image and tags for the image. + * @param image A link to the image. + * @param tags Tags for the image. + */ +data class Image2( + // A link to the image. + @JsonProperty("image") + @field:Valid + val image: kotlin.String? = null, + // Tags for the image. + @JsonProperty("tags") + @field:Valid + val tags: kotlin.collections.List? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var image: kotlin.String? = null, + private var tags: kotlin.collections.List? = null + ) { + fun image(image: kotlin.String?) = apply { this.image = image } + + fun tags(tags: kotlin.collections.List?) = apply { this.tags = tags } + + fun build(): Image2 { + val instance = + Image2( + image = image, + tags = tags + ) + + validate(instance) + + return instance + } + + private fun validate(instance: Image2) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + image = image, + tags = tags + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequestInvoicing.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Invoicing.kt similarity index 71% rename from code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequestInvoicing.kt rename to code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Invoicing.kt index 13dd45cef3..f6a59596af 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/CreateItineraryRequestInvoicing.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Invoicing.kt @@ -39,12 +39,18 @@ import javax.validation.Validation /** * To be included if invoicing is requested. + * @param consentToShare Whether the partner and traveler consent to share the invoicing section information with the supplier and property. If not provided, this invoicing data will not be shared with the supplier or property. * @param companyName The traveler's company name to appear on the invoice. * @param companyAddress * @param pointOfSaleDisplay Provide this when a specific site or branding should be used on the invoice instead of partner name. * @param email Email address to send invoices + * @param vatNumber A custom VAT number to include on invoices */ -data class CreateItineraryRequestInvoicing( +data class Invoicing( + // Whether the partner and traveler consent to share the invoicing section information with the supplier and property. If not provided, this invoicing data will not be shared with the supplier or property. + @JsonProperty("consent_to_share") + @field:Valid + val consentToShare: kotlin.Boolean? = null, // The traveler's company name to appear on the invoice. @JsonProperty("company_name") @field:Valid @@ -59,7 +65,11 @@ data class CreateItineraryRequestInvoicing( // Email address to send invoices @JsonProperty("email") @field:Valid - val email: kotlin.String? = null + val email: kotlin.String? = null, + // A custom VAT number to include on invoices + @JsonProperty("vat_number") + @field:Valid + val vatNumber: kotlin.String? = null ) { companion object { @JvmStatic @@ -67,11 +77,15 @@ data class CreateItineraryRequestInvoicing( } class Builder( + private var consentToShare: kotlin.Boolean? = null, private var companyName: kotlin.String? = null, private var companyAddress: Address1? = null, private var pointOfSaleDisplay: kotlin.String? = null, - private var email: kotlin.String? = null + private var email: kotlin.String? = null, + private var vatNumber: kotlin.String? = null ) { + fun consentToShare(consentToShare: kotlin.Boolean?) = apply { this.consentToShare = consentToShare } + fun companyName(companyName: kotlin.String?) = apply { this.companyName = companyName } fun companyAddress(companyAddress: Address1?) = apply { this.companyAddress = companyAddress } @@ -80,13 +94,17 @@ data class CreateItineraryRequestInvoicing( fun email(email: kotlin.String?) = apply { this.email = email } - fun build(): CreateItineraryRequestInvoicing { + fun vatNumber(vatNumber: kotlin.String?) = apply { this.vatNumber = vatNumber } + + fun build(): Invoicing { val instance = - CreateItineraryRequestInvoicing( + Invoicing( + consentToShare = consentToShare, companyName = companyName, companyAddress = companyAddress, pointOfSaleDisplay = pointOfSaleDisplay, - email = email + email = email, + vatNumber = vatNumber ) validate(instance) @@ -94,7 +112,7 @@ data class CreateItineraryRequestInvoicing( return instance } - private fun validate(instance: CreateItineraryRequestInvoicing) { + private fun validate(instance: Invoicing) { val validator = Validation .byDefaultProvider() @@ -115,9 +133,11 @@ data class CreateItineraryRequestInvoicing( fun toBuilder() = Builder( + consentToShare = consentToShare, companyName = companyName, companyAddress = companyAddress, pointOfSaleDisplay = pointOfSaleDisplay, - email = email + email = email, + vatNumber = vatNumber ) } diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Itinerary.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Itinerary.kt index 1843d57416..a50b40bead 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Itinerary.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Itinerary.kt @@ -31,15 +31,18 @@ package com.expediagroup.sdk.rapid.models import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.AdditionalHandling import com.expediagroup.sdk.rapid.models.Adjustment import com.expediagroup.sdk.rapid.models.BillingContact import com.expediagroup.sdk.rapid.models.Conversations import com.expediagroup.sdk.rapid.models.EssentialInformation +import com.expediagroup.sdk.rapid.models.Invoicing import com.expediagroup.sdk.rapid.models.ItineraryHistoryItem import com.expediagroup.sdk.rapid.models.ItineraryLinks import com.expediagroup.sdk.rapid.models.Phone import com.expediagroup.sdk.rapid.models.RoomHistoryItem import com.expediagroup.sdk.rapid.models.RoomItinerary +import com.expediagroup.sdk.rapid.models.SupplierTransparency import com.expediagroup.sdk.rapid.models.TraderInformation import com.fasterxml.jackson.annotation.JsonProperty import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator @@ -63,6 +66,9 @@ import javax.validation.Validation * @param traderInformation * @param essentialInformation * @param travelPurpose Value potentially passed in during the availability request to indicate the purpose of the trip designated by the traveler. + * @param supplierTransparency + * @param additionalHandling + * @param invoicing * @param itineraryHistory * @param roomHistory An array of rooms each containing an array of room history events. * @param impactedFields @@ -119,6 +125,15 @@ data class Itinerary( // Value potentially passed in during the availability request to indicate the purpose of the trip designated by the traveler. @JsonProperty("travel_purpose") val travelPurpose: Itinerary.TravelPurpose? = null, + @JsonProperty("supplier_transparency") + @field:Valid + val supplierTransparency: SupplierTransparency? = null, + @JsonProperty("additional_handling") + @field:Valid + val additionalHandling: AdditionalHandling? = null, + @JsonProperty("invoicing") + @field:Valid + val invoicing: Invoicing? = null, @JsonProperty("itinerary_history") @field:Valid val itineraryHistory: kotlin.collections.List? = null, @@ -151,6 +166,9 @@ data class Itinerary( private var traderInformation: TraderInformation? = null, private var essentialInformation: EssentialInformation? = null, private var travelPurpose: Itinerary.TravelPurpose? = null, + private var supplierTransparency: SupplierTransparency? = null, + private var additionalHandling: AdditionalHandling? = null, + private var invoicing: Invoicing? = null, private var itineraryHistory: kotlin.collections.List? = null, private var roomHistory: kotlin.collections.List>? = null, private var impactedFields: kotlin.collections.List? = null @@ -185,6 +203,12 @@ data class Itinerary( fun travelPurpose(travelPurpose: Itinerary.TravelPurpose?) = apply { this.travelPurpose = travelPurpose } + fun supplierTransparency(supplierTransparency: SupplierTransparency?) = apply { this.supplierTransparency = supplierTransparency } + + fun additionalHandling(additionalHandling: AdditionalHandling?) = apply { this.additionalHandling = additionalHandling } + + fun invoicing(invoicing: Invoicing?) = apply { this.invoicing = invoicing } + fun itineraryHistory(itineraryHistory: kotlin.collections.List?) = apply { this.itineraryHistory = itineraryHistory } fun roomHistory(roomHistory: kotlin.collections.List>?) = apply { this.roomHistory = roomHistory } @@ -209,6 +233,9 @@ data class Itinerary( traderInformation = traderInformation, essentialInformation = essentialInformation, travelPurpose = travelPurpose, + supplierTransparency = supplierTransparency, + additionalHandling = additionalHandling, + invoicing = invoicing, itineraryHistory = itineraryHistory, roomHistory = roomHistory, impactedFields = impactedFields @@ -255,6 +282,9 @@ data class Itinerary( traderInformation = traderInformation, essentialInformation = essentialInformation, travelPurpose = travelPurpose, + supplierTransparency = supplierTransparency, + additionalHandling = additionalHandling, + invoicing = invoicing, itineraryHistory = itineraryHistory, roomHistory = roomHistory, impactedFields = impactedFields diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/MarketRegionContent.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/MarketRegionContent.kt new file mode 100644 index 0000000000..2b0b0b7035 --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/MarketRegionContent.kt @@ -0,0 +1,125 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.Copy +import com.expediagroup.sdk.rapid.models.Image2 +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * + * @param copy An array of copy objects that should be used for this campaign and region. + * @param destinations An array of places a campaign is limited to having promotions in. + * @param images An array of images associated with this campaign. + * @param themes An array of themes associated with this campaign. + */ +data class MarketRegionContent( + // An array of copy objects that should be used for this campaign and region. + @JsonProperty("copy") + @field:Valid + val copy: kotlin.collections.List? = null, + // An array of places a campaign is limited to having promotions in. + @JsonProperty("destinations") + @field:Valid + val destinations: kotlin.collections.List? = null, + // An array of images associated with this campaign. + @JsonProperty("images") + @field:Valid + val images: kotlin.collections.List? = null, + // An array of themes associated with this campaign. + @JsonProperty("themes") + @field:Valid + val themes: kotlin.collections.List? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var copy: kotlin.collections.List? = null, + private var destinations: kotlin.collections.List? = null, + private var images: kotlin.collections.List? = null, + private var themes: kotlin.collections.List? = null + ) { + fun copy(copy: kotlin.collections.List?) = apply { this.copy = copy } + + fun destinations(destinations: kotlin.collections.List?) = apply { this.destinations = destinations } + + fun images(images: kotlin.collections.List?) = apply { this.images = images } + + fun themes(themes: kotlin.collections.List?) = apply { this.themes = themes } + + fun build(): MarketRegionContent { + val instance = + MarketRegionContent( + copy = copy, + destinations = destinations, + images = images, + themes = themes + ) + + validate(instance) + + return instance + } + + private fun validate(instance: MarketRegionContent) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + copy = copy, + destinations = destinations, + images = images, + themes = themes + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/MarketingFeeDetails.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/MarketingFeeDetails.kt new file mode 100644 index 0000000000..a91390d641 --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/MarketingFeeDetails.kt @@ -0,0 +1,120 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.Charge +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * An object representing a more granular view and key components contributing to Marketing Fee estimates, in line with contracted commercial terms between Expedia and partner. * `base` - Potential earnings derived from standard or flat commission rates. * `overrides` - Potential earnings derived from additional variable commission rates, typically subject to achievement of specific revenue targets. * `incentives` - Potential earnings derived from additional incentives, applicable for a limited time period. * `other` - Potential earnings derived from a category not yet covered by the above components. + * @param base + * @param overrides + * @param incentives + * @param other + */ +data class MarketingFeeDetails( + @JsonProperty("base") + @field:Valid + val base: Charge? = null, + @JsonProperty("overrides") + @field:Valid + val overrides: Charge? = null, + @JsonProperty("incentives") + @field:Valid + val incentives: Charge? = null, + @JsonProperty("other") + @field:Valid + val other: Charge? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var base: Charge? = null, + private var overrides: Charge? = null, + private var incentives: Charge? = null, + private var other: Charge? = null + ) { + fun base(base: Charge?) = apply { this.base = base } + + fun overrides(overrides: Charge?) = apply { this.overrides = overrides } + + fun incentives(incentives: Charge?) = apply { this.incentives = incentives } + + fun other(other: Charge?) = apply { this.other = other } + + fun build(): MarketingFeeDetails { + val instance = + MarketingFeeDetails( + base = base, + overrides = overrides, + incentives = incentives, + other = other + ) + + validate(instance) + + return instance + } + + private fun validate(instance: MarketingFeeDetails) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + base = base, + overrides = overrides, + incentives = incentives, + other = other + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/MerchantOfRecord.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/MerchantOfRecord.kt index b867e0d383..46a3bd412d 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/MerchantOfRecord.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/MerchantOfRecord.kt @@ -33,7 +33,7 @@ package com.expediagroup.sdk.rapid.models import com.fasterxml.jackson.annotation.JsonProperty /** -* * `expedia` - Payment is taken by Expedia. * `property` - Payment is taken by the property. +* Merchant of Record * `expedia` - Payment is taken by Expedia. * `property` - Payment is taken by the property. * Values: EXPEDIA,PROPERTY */ enum class MerchantOfRecord(val value: kotlin.String) { diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/NightChargeType.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/NightChargeType.kt index 2f31fa0555..9dedd271b2 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/NightChargeType.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/NightChargeType.kt @@ -33,7 +33,7 @@ package com.expediagroup.sdk.rapid.models import com.fasterxml.jackson.annotation.JsonProperty /** -* The price breakout type. * `base_rate` - The room rate without any taxes and fees applied. * `tax_and_service_fee` - Tax recovery charges, service fees, and taxes. Ensure that you capture these values and display as: \"Taxes and Fees\" * `extra_person_fee` - A per night fee that is charged by a hotel for additional adults over the nightly rate. This fee is included as part of the total. * `property_fee` - The property fee surcharge type must be displayed beginning on the initial hotel room selection page, immediately after your hotel search results page. This placement is required by the U.S. Federal Trade Commission (FTC). Display this surcharge as \"Property Fee\" on your room selection page, as described above, and in all subsequent price breakdowns for the following Points of Sale: * `US` * `Canada` * `Brazil` * `LATAM` * `sales_tax` - Taxes that must be displayed by certain jurisdictional laws. Ensure that you capture these values and display as \"Taxes\". * `adjustment` - This is the amount that the individual night have been adjusted/discounted. * `recovery_charges_and_fees` - Tax recovery charges, service fees, and taxes. Ensure that you capture these values and display as: \"Taxes and Fees\" * `traveler_service_fee` - Fee charged by Vrbo to support use of online tools, services and functions on its platform which enable guest self service. May be displayed as 'Traveler Service Fee' or 'Service Fee' any time fees are broken out for display on partner sites. +* The price breakout type. * `base_rate` - The room rate without any taxes and fees applied. * `tax_and_service_fee` - Tax recovery charges, service fees, and taxes. Ensure that you capture these values and display as: \"Taxes and Fees\" * `extra_person_fee` - A per night fee that is charged by a hotel for additional adults over the nightly rate. This fee is included as part of the total. * `property_fee` - For US POS: The property fee surcharge type must be displayed, combined with the base rate, wherever you show a price, from the first display of the price throughout the booking path. * `sales_tax` - Taxes that must be displayed by certain jurisdictional laws. Ensure that you capture these values and display as \"Taxes\". * `adjustment` - This is the amount that the individual night have been adjusted/discounted. * `recovery_charges_and_fees` - Tax recovery charges, service fees, and taxes. Ensure that you capture these values and display as: \"Taxes and Fees\" * `traveler_service_fee` - Fee charged by Vrbo to support use of online tools, services and functions on its platform which enable guest self service. May be displayed as 'Traveler Service Fee' or 'Service Fee' any time fees are broken out for display on partner sites. * Values: BASE_RATE,TAX_AND_SERVICE_FEE,EXTRA_PERSON_FEE,PROPERTY_FEE,SALES_TAX,ADJUSTMENT,RECOVERY_CHARGES_AND_FEES,TRAVELER_SERVICE_FEE */ enum class NightChargeType(val value: kotlin.String) { diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PaymentRequest.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PaymentRequest.kt index b079288a36..488b28f489 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PaymentRequest.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PaymentRequest.kt @@ -31,6 +31,7 @@ package com.expediagroup.sdk.rapid.models import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.AdditionalHandling import com.expediagroup.sdk.rapid.models.BillingContactRequest import com.expediagroup.sdk.rapid.models.ThirdPartyAuthRequest import com.fasterxml.jackson.annotation.JsonProperty @@ -49,6 +50,7 @@ import javax.validation.constraints.NotNull * @param expirationYear Year the credit card will expire. Required for credit card transactions. * @param thirdPartyAuthentication * @param enrollmentDate Date the payment account was enrolled in the cardholder's account with the merchant, in ISO 8601 format (YYYY-MM-DD). + * @param additionalHandling */ data class PaymentRequest( // Identifier for the type of payment. If affiliate_collect, card information is not required as EPS will not be processing the payment. However, billing contact information is still required. @@ -81,7 +83,10 @@ data class PaymentRequest( // Date the payment account was enrolled in the cardholder's account with the merchant, in ISO 8601 format (YYYY-MM-DD). @JsonProperty("enrollment_date") @field:Valid - val enrollmentDate: kotlin.String? = null + val enrollmentDate: kotlin.String? = null, + @JsonProperty("additional_handling") + @field:Valid + val additionalHandling: AdditionalHandling? = null ) { companion object { @JvmStatic @@ -96,7 +101,8 @@ data class PaymentRequest( private var expirationMonth: kotlin.String? = null, private var expirationYear: kotlin.String? = null, private var thirdPartyAuthentication: ThirdPartyAuthRequest? = null, - private var enrollmentDate: kotlin.String? = null + private var enrollmentDate: kotlin.String? = null, + private var additionalHandling: AdditionalHandling? = null ) { fun type(type: PaymentRequest.Type) = apply { this.type = type } @@ -114,6 +120,8 @@ data class PaymentRequest( fun enrollmentDate(enrollmentDate: kotlin.String?) = apply { this.enrollmentDate = enrollmentDate } + fun additionalHandling(additionalHandling: AdditionalHandling?) = apply { this.additionalHandling = additionalHandling } + fun build(): PaymentRequest { val instance = PaymentRequest( @@ -124,7 +132,8 @@ data class PaymentRequest( expirationMonth = expirationMonth, expirationYear = expirationYear, thirdPartyAuthentication = thirdPartyAuthentication, - enrollmentDate = enrollmentDate + enrollmentDate = enrollmentDate, + additionalHandling = additionalHandling ) validate(instance) @@ -160,7 +169,8 @@ data class PaymentRequest( expirationMonth = expirationMonth, expirationYear = expirationYear, thirdPartyAuthentication = thirdPartyAuthentication, - enrollmentDate = enrollmentDate + enrollmentDate = enrollmentDate, + additionalHandling = additionalHandling ) /** diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PricingInformation.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PricingInformation.kt index e101676d63..c35e97bff3 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PricingInformation.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PricingInformation.kt @@ -32,6 +32,7 @@ package com.expediagroup.sdk.rapid.models import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException import com.expediagroup.sdk.rapid.models.FeesPricingInformation +import com.expediagroup.sdk.rapid.models.MarketingFeeDetails import com.expediagroup.sdk.rapid.models.NightCharge import com.expediagroup.sdk.rapid.models.Stay import com.expediagroup.sdk.rapid.models.Totals @@ -46,6 +47,7 @@ import javax.validation.Validation * @param stay Array of amount objects. Details any charges that apply to the entire stay (not divided per-night). Any per-room adjustments are applied to the `base_rate` amount within this object. * @param totals * @param fees + * @param marketingFeeDetails */ data class PricingInformation( // Array of arrays of amount objects. Each sub-array of amount objects represents a single night's charges. @@ -61,7 +63,10 @@ data class PricingInformation( val totals: Totals? = null, @JsonProperty("fees") @field:Valid - val fees: FeesPricingInformation? = null + val fees: FeesPricingInformation? = null, + @JsonProperty("marketing_fee_details") + @field:Valid + val marketingFeeDetails: MarketingFeeDetails? = null ) { companion object { @JvmStatic @@ -72,7 +77,8 @@ data class PricingInformation( private var nightly: kotlin.collections.List>? = null, private var stay: kotlin.collections.List? = null, private var totals: Totals? = null, - private var fees: FeesPricingInformation? = null + private var fees: FeesPricingInformation? = null, + private var marketingFeeDetails: MarketingFeeDetails? = null ) { fun nightly(nightly: kotlin.collections.List>?) = apply { this.nightly = nightly } @@ -82,13 +88,16 @@ data class PricingInformation( fun fees(fees: FeesPricingInformation?) = apply { this.fees = fees } + fun marketingFeeDetails(marketingFeeDetails: MarketingFeeDetails?) = apply { this.marketingFeeDetails = marketingFeeDetails } + fun build(): PricingInformation { val instance = PricingInformation( nightly = nightly, stay = stay, totals = totals, - fees = fees + fees = fees, + marketingFeeDetails = marketingFeeDetails ) validate(instance) @@ -120,6 +129,7 @@ data class PricingInformation( nightly = nightly, stay = stay, totals = totals, - fees = fees + fees = fees, + marketingFeeDetails = marketingFeeDetails ) } diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Promotion.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Promotion.kt new file mode 100644 index 0000000000..4a3cd28c42 --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Promotion.kt @@ -0,0 +1,334 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.BlockoutDate +import com.expediagroup.sdk.rapid.models.PromotionLinks +import com.expediagroup.sdk.rapid.models.PromotionRank +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * + * @param promotionId Unique identifier for the promotion + * @param blockoutDates An array of stay date ranges within this check-in / check-out range that are not eligible for this promotion. The stay dates are determined by the would be check-in of that night. With a check-in date of 2023-09-01, and a check-out date of 2023-09-06, this would be a 5 night stay. A `blockout_dates` with start: '2023-09-02' and end: 2023-09-03 would mean 2 of the nights are not eligible. The 1st night is eligible, the 2nd and 3rd nights are not eligible, and the 4th and 5th nights are eligible. + * @param bookableEnd The last date that bookings can be made on in this promotion, in ISO 8601 format (YYYY-MM-DD). + * @param bookableStart The first date that bookings can be made on in this promotion, in ISO 8601 format (YYYY-MM-DD). + * @param campaignId The campaign id this promotion is associated with. + * @param categoryId The category id of the property. + * @param chainId The chain id for the property. + * @param description The description of the promotion. + * @param discountPercentage The percent off of the cost of the property when using this promotion. This will only be returned for percentage based promotions + * @param guestRating The overall rating for the property, averaged from all guest reviews. Returns a value between 1.0 and 5.0. + * @param lifetime The type of lifetime of this promotion. + * @param links + * @param marketRegion The market region for the promotion. + * @param membersOnly Boolean value indicating if a promotion is for members only. + * @param minAdvancePurchaseDays The least number of days before check-in a stay must be booked to use this promotion. + * @param minStay The least number of days that must be booked to use this promotion. + * @param mobileOnly Boolean value indicating if a promotion is for mobile only. + * @param productLines The list of product lines. + * @param propertyId Unique Expedia property ID. + * @param rank + * @param regionId The region id for the property. + * @param starRating The rating assigned to this property. Returns a value between 0.0 and 5.0. A value of 0.0 or a blank value indicates no rating is available. + * @param stayEnd The last date that check-ins can be set to in this promotion in ISO 8601 format (YYYY-MM-DD). + * @param stayStart The first date that check-ins can be set to in this promotion in ISO 8601 format (YYYY-MM-DD). + * @param supplySource The supply source of the property. + */ +data class Promotion( + // Unique identifier for the promotion + @JsonProperty("promotion_id") + @field:Valid + val promotionId: kotlin.String? = null, + // An array of stay date ranges within this check-in / check-out range that are not eligible for this promotion. The stay dates are determined by the would be check-in of that night. With a check-in date of 2023-09-01, and a check-out date of 2023-09-06, this would be a 5 night stay. A `blockout_dates` with start: '2023-09-02' and end: 2023-09-03 would mean 2 of the nights are not eligible. The 1st night is eligible, the 2nd and 3rd nights are not eligible, and the 4th and 5th nights are eligible. + @JsonProperty("blockout_dates") + @field:Valid + val blockoutDates: kotlin.collections.List? = null, + // The last date that bookings can be made on in this promotion, in ISO 8601 format (YYYY-MM-DD). + @JsonProperty("bookable_end") + @field:Valid + val bookableEnd: kotlin.String? = null, + // The first date that bookings can be made on in this promotion, in ISO 8601 format (YYYY-MM-DD). + @JsonProperty("bookable_start") + @field:Valid + val bookableStart: kotlin.String? = null, + // The campaign id this promotion is associated with. + @JsonProperty("campaign_id") + @field:Valid + val campaignId: kotlin.String? = null, + // The category id of the property. + @JsonProperty("category_id") + @field:Valid + val categoryId: kotlin.String? = null, + // The chain id for the property. + @JsonProperty("chain_id") + @field:Valid + val chainId: kotlin.String? = null, + // The description of the promotion. + @JsonProperty("description") + @field:Valid + val description: kotlin.String? = null, + // The percent off of the cost of the property when using this promotion. This will only be returned for percentage based promotions + @JsonProperty("discount_percentage") + @field:Valid + val discountPercentage: kotlin.String? = null, + // The overall rating for the property, averaged from all guest reviews. Returns a value between 1.0 and 5.0. + @JsonProperty("guest_rating") + @field:Valid + val guestRating: kotlin.String? = null, + // The type of lifetime of this promotion. + @JsonProperty("lifetime") + @field:Valid + val lifetime: kotlin.String? = null, + @JsonProperty("links") + @field:Valid + val links: PromotionLinks? = null, + // The market region for the promotion. + @JsonProperty("market_region") + @field:Valid + val marketRegion: kotlin.String? = null, + // Boolean value indicating if a promotion is for members only. + @JsonProperty("members_only") + @field:Valid + val membersOnly: kotlin.String? = null, + // The least number of days before check-in a stay must be booked to use this promotion. + @JsonProperty("min_advance_purchase_days") + @field:Valid + val minAdvancePurchaseDays: kotlin.String? = null, + // The least number of days that must be booked to use this promotion. + @JsonProperty("min_stay") + @field:Valid + val minStay: kotlin.String? = null, + // Boolean value indicating if a promotion is for mobile only. + @JsonProperty("mobile_only") + @field:Valid + val mobileOnly: kotlin.String? = null, + // The list of product lines. + @JsonProperty("product_lines") + @field:Valid + val productLines: kotlin.collections.List? = null, + // Unique Expedia property ID. + @JsonProperty("property_id") + @field:Valid + val propertyId: kotlin.String? = null, + @JsonProperty("rank") + @field:Valid + val rank: PromotionRank? = null, + // The region id for the property. + @JsonProperty("region_id") + @field:Valid + val regionId: kotlin.String? = null, + // The rating assigned to this property. Returns a value between 0.0 and 5.0. A value of 0.0 or a blank value indicates no rating is available. + @JsonProperty("star_rating") + @field:Valid + val starRating: kotlin.String? = null, + // The last date that check-ins can be set to in this promotion in ISO 8601 format (YYYY-MM-DD). + @JsonProperty("stay_end") + @field:Valid + val stayEnd: kotlin.String? = null, + // The first date that check-ins can be set to in this promotion in ISO 8601 format (YYYY-MM-DD). + @JsonProperty("stay_start") + @field:Valid + val stayStart: kotlin.String? = null, + // The supply source of the property. + @JsonProperty("supply_source") + @field:Valid + val supplySource: kotlin.String? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var promotionId: kotlin.String? = null, + private var blockoutDates: kotlin.collections.List? = null, + private var bookableEnd: kotlin.String? = null, + private var bookableStart: kotlin.String? = null, + private var campaignId: kotlin.String? = null, + private var categoryId: kotlin.String? = null, + private var chainId: kotlin.String? = null, + private var description: kotlin.String? = null, + private var discountPercentage: kotlin.String? = null, + private var guestRating: kotlin.String? = null, + private var lifetime: kotlin.String? = null, + private var links: PromotionLinks? = null, + private var marketRegion: kotlin.String? = null, + private var membersOnly: kotlin.String? = null, + private var minAdvancePurchaseDays: kotlin.String? = null, + private var minStay: kotlin.String? = null, + private var mobileOnly: kotlin.String? = null, + private var productLines: kotlin.collections.List? = null, + private var propertyId: kotlin.String? = null, + private var rank: PromotionRank? = null, + private var regionId: kotlin.String? = null, + private var starRating: kotlin.String? = null, + private var stayEnd: kotlin.String? = null, + private var stayStart: kotlin.String? = null, + private var supplySource: kotlin.String? = null + ) { + fun promotionId(promotionId: kotlin.String?) = apply { this.promotionId = promotionId } + + fun blockoutDates(blockoutDates: kotlin.collections.List?) = apply { this.blockoutDates = blockoutDates } + + fun bookableEnd(bookableEnd: kotlin.String?) = apply { this.bookableEnd = bookableEnd } + + fun bookableStart(bookableStart: kotlin.String?) = apply { this.bookableStart = bookableStart } + + fun campaignId(campaignId: kotlin.String?) = apply { this.campaignId = campaignId } + + fun categoryId(categoryId: kotlin.String?) = apply { this.categoryId = categoryId } + + fun chainId(chainId: kotlin.String?) = apply { this.chainId = chainId } + + fun description(description: kotlin.String?) = apply { this.description = description } + + fun discountPercentage(discountPercentage: kotlin.String?) = apply { this.discountPercentage = discountPercentage } + + fun guestRating(guestRating: kotlin.String?) = apply { this.guestRating = guestRating } + + fun lifetime(lifetime: kotlin.String?) = apply { this.lifetime = lifetime } + + fun links(links: PromotionLinks?) = apply { this.links = links } + + fun marketRegion(marketRegion: kotlin.String?) = apply { this.marketRegion = marketRegion } + + fun membersOnly(membersOnly: kotlin.String?) = apply { this.membersOnly = membersOnly } + + fun minAdvancePurchaseDays(minAdvancePurchaseDays: kotlin.String?) = apply { this.minAdvancePurchaseDays = minAdvancePurchaseDays } + + fun minStay(minStay: kotlin.String?) = apply { this.minStay = minStay } + + fun mobileOnly(mobileOnly: kotlin.String?) = apply { this.mobileOnly = mobileOnly } + + fun productLines(productLines: kotlin.collections.List?) = apply { this.productLines = productLines } + + fun propertyId(propertyId: kotlin.String?) = apply { this.propertyId = propertyId } + + fun rank(rank: PromotionRank?) = apply { this.rank = rank } + + fun regionId(regionId: kotlin.String?) = apply { this.regionId = regionId } + + fun starRating(starRating: kotlin.String?) = apply { this.starRating = starRating } + + fun stayEnd(stayEnd: kotlin.String?) = apply { this.stayEnd = stayEnd } + + fun stayStart(stayStart: kotlin.String?) = apply { this.stayStart = stayStart } + + fun supplySource(supplySource: kotlin.String?) = apply { this.supplySource = supplySource } + + fun build(): Promotion { + val instance = + Promotion( + promotionId = promotionId, + blockoutDates = blockoutDates, + bookableEnd = bookableEnd, + bookableStart = bookableStart, + campaignId = campaignId, + categoryId = categoryId, + chainId = chainId, + description = description, + discountPercentage = discountPercentage, + guestRating = guestRating, + lifetime = lifetime, + links = links, + marketRegion = marketRegion, + membersOnly = membersOnly, + minAdvancePurchaseDays = minAdvancePurchaseDays, + minStay = minStay, + mobileOnly = mobileOnly, + productLines = productLines, + propertyId = propertyId, + rank = rank, + regionId = regionId, + starRating = starRating, + stayEnd = stayEnd, + stayStart = stayStart, + supplySource = supplySource + ) + + validate(instance) + + return instance + } + + private fun validate(instance: Promotion) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + promotionId = promotionId, + blockoutDates = blockoutDates, + bookableEnd = bookableEnd, + bookableStart = bookableStart, + campaignId = campaignId, + categoryId = categoryId, + chainId = chainId, + description = description, + discountPercentage = discountPercentage, + guestRating = guestRating, + lifetime = lifetime, + links = links, + marketRegion = marketRegion, + membersOnly = membersOnly, + minAdvancePurchaseDays = minAdvancePurchaseDays, + minStay = minStay, + mobileOnly = mobileOnly, + productLines = productLines, + propertyId = propertyId, + rank = rank, + regionId = regionId, + starRating = starRating, + stayEnd = stayEnd, + stayStart = stayStart, + supplySource = supplySource + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PromotionLinks.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PromotionLinks.kt new file mode 100644 index 0000000000..566a5213eb --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PromotionLinks.kt @@ -0,0 +1,93 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.expediagroup.sdk.rapid.models.Link +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * A map of links, including link to get the property content. + * @param content + */ +data class PromotionLinks( + @JsonProperty("content") + @field:Valid + val content: Link? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var content: Link? = null + ) { + fun content(content: Link?) = apply { this.content = content } + + fun build(): PromotionLinks { + val instance = + PromotionLinks( + content = content + ) + + validate(instance) + + return instance + } + + private fun validate(instance: PromotionLinks) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + content = content + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PromotionRank.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PromotionRank.kt new file mode 100644 index 0000000000..d9d4ce46c0 --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/PromotionRank.kt @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * A map of ranks with 1 being the best and descending from there. + * @param destination Rank of the destination associated with the promotion. + * @param promotion Rank of the promotion itself. + * @param `property` Rank of the property associated with the promotion. + */ +data class PromotionRank( + // Rank of the destination associated with the promotion. + @JsonProperty("destination") + @field:Valid + val destination: kotlin.String? = null, + // Rank of the promotion itself. + @JsonProperty("promotion") + @field:Valid + val promotion: kotlin.String? = null, + // Rank of the property associated with the promotion. + @JsonProperty("property") + @field:Valid + val `property`: kotlin.String? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var destination: kotlin.String? = null, + private var promotion: kotlin.String? = null, + private var `property`: kotlin.String? = null + ) { + fun destination(destination: kotlin.String?) = apply { this.destination = destination } + + fun promotion(promotion: kotlin.String?) = apply { this.promotion = promotion } + + fun `property`(`property`: kotlin.String?) = apply { this.`property` = `property` } + + fun build(): PromotionRank { + val instance = + PromotionRank( + destination = destination, + promotion = promotion, + `property` = `property` + ) + + validate(instance) + + return instance + } + + private fun validate(instance: PromotionRank) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + destination = destination, + promotion = promotion, + `property` = `property` + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Rate.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Rate.kt index 09b3aa84d5..5ab5a014c2 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Rate.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Rate.kt @@ -43,7 +43,6 @@ import com.expediagroup.sdk.rapid.models.PricingInformation import com.expediagroup.sdk.rapid.models.Promotions import com.expediagroup.sdk.rapid.models.RateLinks import com.expediagroup.sdk.rapid.models.SaleScenario -import com.expediagroup.sdk.rapid.models.Status import com.fasterxml.jackson.annotation.JsonProperty import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator import javax.validation.Valid @@ -52,9 +51,10 @@ import javax.validation.Validation /** * A rate. * @param id Unique Identifier for a rate. - * @param status + * @param status Rates returned are always available. * @param availableRooms The number of bookable rooms remaining with this rate in EPS inventory. Use this value to create rules for urgency messaging to alert users to low availability on busy travel dates or at popular properties. If the value returns as 2147483647 (max int value), the actual value could not be determined. Ensure your urgency messaging ignores such instances when returned. * @param refundable Indicates if the rate is fully refundable at the time of booking. Cancel penalties may still apply. Please refer to the cancel penalties section for reference. + * @param holdable Indicates whether the rate supports [Booking Hold and Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume). This field will only be present if `include=rooms.rates.holdable` is passed as a request parameter.. * @param currentRefundability Indicates the current refundability of the rate. This is a more detailed version of the `refundable` field. * @param memberDealAvailable Indicates if a \"Member Only Deal\" is available for this rate. * @param saleScenario @@ -76,9 +76,9 @@ data class Rate( @JsonProperty("id") @field:Valid val id: kotlin.String? = null, + // Rates returned are always available. @JsonProperty("status") - @field:Valid - val status: Status? = null, + val status: Rate.Status? = null, // The number of bookable rooms remaining with this rate in EPS inventory. Use this value to create rules for urgency messaging to alert users to low availability on busy travel dates or at popular properties. If the value returns as 2147483647 (max int value), the actual value could not be determined. Ensure your urgency messaging ignores such instances when returned. @JsonProperty("available_rooms") @field:Valid @@ -87,6 +87,10 @@ data class Rate( @JsonProperty("refundable") @field:Valid val refundable: kotlin.Boolean? = null, + // Indicates whether the rate supports [Booking Hold and Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume). This field will only be present if `include=rooms.rates.holdable` is passed as a request parameter.. + @JsonProperty("holdable") + @field:Valid + val holdable: kotlin.Boolean? = null, // Indicates the current refundability of the rate. This is a more detailed version of the `refundable` field. @JsonProperty("current_refundability") val currentRefundability: Rate.CurrentRefundability? = null, @@ -148,9 +152,10 @@ data class Rate( class Builder( private var id: kotlin.String? = null, - private var status: Status? = null, + private var status: Rate.Status? = null, private var availableRooms: java.math.BigDecimal? = null, private var refundable: kotlin.Boolean? = null, + private var holdable: kotlin.Boolean? = null, private var currentRefundability: Rate.CurrentRefundability? = null, private var memberDealAvailable: kotlin.Boolean? = null, private var saleScenario: SaleScenario? = null, @@ -169,12 +174,14 @@ data class Rate( ) { fun id(id: kotlin.String?) = apply { this.id = id } - fun status(status: Status?) = apply { this.status = status } + fun status(status: Rate.Status?) = apply { this.status = status } fun availableRooms(availableRooms: java.math.BigDecimal?) = apply { this.availableRooms = availableRooms } fun refundable(refundable: kotlin.Boolean?) = apply { this.refundable = refundable } + fun holdable(holdable: kotlin.Boolean?) = apply { this.holdable = holdable } + fun currentRefundability(currentRefundability: Rate.CurrentRefundability?) = apply { this.currentRefundability = currentRefundability } fun memberDealAvailable(memberDealAvailable: kotlin.Boolean?) = apply { this.memberDealAvailable = memberDealAvailable } @@ -212,6 +219,7 @@ data class Rate( status = status, availableRooms = availableRooms, refundable = refundable, + holdable = holdable, currentRefundability = currentRefundability, memberDealAvailable = memberDealAvailable, saleScenario = saleScenario, @@ -259,6 +267,7 @@ data class Rate( status = status, availableRooms = availableRooms, refundable = refundable, + holdable = holdable, currentRefundability = currentRefundability, memberDealAvailable = memberDealAvailable, saleScenario = saleScenario, @@ -276,6 +285,15 @@ data class Rate( deposits = deposits ) + /** + * Rates returned are always available. + * Values: AVAILABLE + */ + enum class Status(val value: kotlin.String) { + @JsonProperty("available") + AVAILABLE("available") + } + /** * Indicates the current refundability of the rate. This is a more detailed version of the `refundable` field. * Values: REFUNDABLE,NON_REFUNDABLE,PARTIALLY_REFUNDABLE diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/RoomPriceCheck.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/RoomPriceCheck.kt index 5b23a0d247..62e59ccd0f 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/RoomPriceCheck.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/RoomPriceCheck.kt @@ -46,6 +46,7 @@ import javax.validation.Validation /** * The price check response. * @param status + * @param holdable Indicates whether the rate supports [Booking Hold and Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume). * @param occupancyPricing A map of room information by occupancy. * @param links * @param cardOnFileLimit @@ -60,6 +61,10 @@ data class RoomPriceCheck( @JsonProperty("status") @field:Valid val status: StatusPriceCheck? = null, + // Indicates whether the rate supports [Booking Hold and Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume). + @JsonProperty("holdable") + @field:Valid + val holdable: kotlin.Boolean? = null, // A map of room information by occupancy. @JsonProperty("occupancy_pricing") @field:Valid @@ -97,6 +102,7 @@ data class RoomPriceCheck( class Builder( private var status: StatusPriceCheck? = null, + private var holdable: kotlin.Boolean? = null, private var occupancyPricing: kotlin.collections.Map? = null, private var links: RoomPriceCheckLinks? = null, private var cardOnFileLimit: Amount? = null, @@ -109,6 +115,8 @@ data class RoomPriceCheck( ) { fun status(status: StatusPriceCheck?) = apply { this.status = status } + fun holdable(holdable: kotlin.Boolean?) = apply { this.holdable = holdable } + fun occupancyPricing(occupancyPricing: kotlin.collections.Map?) = apply { this.occupancyPricing = occupancyPricing } fun links(links: RoomPriceCheckLinks?) = apply { this.links = links } @@ -131,6 +139,7 @@ data class RoomPriceCheck( val instance = RoomPriceCheck( status = status, + holdable = holdable, occupancyPricing = occupancyPricing, links = links, cardOnFileLimit = cardOnFileLimit, @@ -169,6 +178,7 @@ data class RoomPriceCheck( fun toBuilder() = Builder( status = status, + holdable = holdable, occupancyPricing = occupancyPricing, links = links, cardOnFileLimit = cardOnFileLimit, diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Status.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Status.kt index 3985f54b94..6081511490 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Status.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/Status.kt @@ -13,13 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -/** - * - * Please note: - * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). - * Do not edit this file manually. - * - */ @file:Suppress( "ArrayInDataClass", @@ -33,16 +26,20 @@ package com.expediagroup.sdk.rapid.models import com.fasterxml.jackson.annotation.JsonProperty /** -* Indicates the status of the rate. If the rate is still available then available will be returned. If the rate is no longer available at that price then price_changed will be returned. If the rate is no longer available at all then sold_out will be returned. -* Values: AVAILABLE,PRICE_CHANGED,SOLD_OUT -*/ + * Rates returned are always AVAILABLE. PRICE_CHANGED and SOLD_OUT are never returned for rates in the Availability + * call. + * Values: AVAILABLE, PRICE_CHANGED, SOLD_OUT + */ +@Deprecated("This is replaced by Rate.Status") enum class Status(val value: kotlin.String) { @JsonProperty("available") AVAILABLE("available"), + @Deprecated("Never Returned") @JsonProperty("price_changed") PRICE_CHANGED("price_changed"), + @Deprecated("Never Returned") @JsonProperty("sold_out") SOLD_OUT("sold_out") } diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/StatusPriceCheck.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/StatusPriceCheck.kt index 5aa441fe47..d96153db44 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/StatusPriceCheck.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/StatusPriceCheck.kt @@ -33,13 +33,16 @@ package com.expediagroup.sdk.rapid.models import com.fasterxml.jackson.annotation.JsonProperty /** -* Indicates the status of the rate. If the rate is still available then available will be returned. If the rate is no longer available at that price then price_changed will be returned. If the rate is no longer available at all then sold_out will be returned. -* Values: AVAILABLE,PRICE_CHANGED,SOLD_OUT +* Indicates the status of the rate. * `available` - The rate is still available at or below the price returned in the shop response. * `available_no_change` - **Only in Hard Change flows** - The rate is available but matches the booked rate. * `price_changed` - The rate is no longer available at the previous price. Use the `additional_rates` link to present updated rooms and rates for this property to travelers. * `sold_out` - The rate is no longer available at any price. Use the `additional_rates` link to present updated rooms and rates for this property to travelers. +* Values: AVAILABLE,AVAILABLE_NO_CHANGE,PRICE_CHANGED,SOLD_OUT */ enum class StatusPriceCheck(val value: kotlin.String) { @JsonProperty("available") AVAILABLE("available"), + @JsonProperty("available_no_change") + AVAILABLE_NO_CHANGE("available_no_change"), + @JsonProperty("price_changed") PRICE_CHANGED("price_changed"), diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/SupplierTransparency.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/SupplierTransparency.kt new file mode 100644 index 0000000000..751bcaabab --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/SupplierTransparency.kt @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/** + * + * Please note: + * This class is auto generated by OpenAPI Generator (https://openapi-generator.tech). + * Do not edit this file manually. + * + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.fasterxml.jackson.annotation.JsonProperty +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation + +/** + * To be used for collecting and sharing partner and client information with the supplier. + * @param pointOfSaleDisplayToShare The name of the point of sale to be shared. + * @param companyNameToShare The name of the company to be shared. + * @param consentToShare Whether or not this info should be shared. + */ +data class SupplierTransparency( + // The name of the point of sale to be shared. + @JsonProperty("point_of_sale_display_to_share") + @field:Valid + val pointOfSaleDisplayToShare: kotlin.String? = null, + // The name of the company to be shared. + @JsonProperty("company_name_to_share") + @field:Valid + val companyNameToShare: kotlin.String? = null, + // Whether or not this info should be shared. + @JsonProperty("consent_to_share") + @field:Valid + val consentToShare: kotlin.Boolean? = null +) { + companion object { + @JvmStatic + fun builder() = Builder() + } + + class Builder( + private var pointOfSaleDisplayToShare: kotlin.String? = null, + private var companyNameToShare: kotlin.String? = null, + private var consentToShare: kotlin.Boolean? = null + ) { + fun pointOfSaleDisplayToShare(pointOfSaleDisplayToShare: kotlin.String?) = apply { this.pointOfSaleDisplayToShare = pointOfSaleDisplayToShare } + + fun companyNameToShare(companyNameToShare: kotlin.String?) = apply { this.companyNameToShare = companyNameToShare } + + fun consentToShare(consentToShare: kotlin.Boolean?) = apply { this.consentToShare = consentToShare } + + fun build(): SupplierTransparency { + val instance = + SupplierTransparency( + pointOfSaleDisplayToShare = pointOfSaleDisplayToShare, + companyNameToShare = companyNameToShare, + consentToShare = consentToShare + ) + + validate(instance) + + return instance + } + + private fun validate(instance: SupplierTransparency) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(instance) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + pointOfSaleDisplayToShare = pointOfSaleDisplayToShare, + companyNameToShare = companyNameToShare, + consentToShare = consentToShare + ) +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/UnavailableReason.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/UnavailableReason.kt index f33abda24c..7798a11076 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/UnavailableReason.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/UnavailableReason.kt @@ -102,7 +102,7 @@ data class UnavailableReason( /** * The code representing the reason. * `adults_exceed_threshold` - Number of adults requested exceeds room threshold. `data` will contain the maximum value. * `children_exceed_threshold` - Number of children requested exceeds room threshold. `data` will contain the maximum value. * `infants_exceed_threshold` - Number of infants requested exceeds room threshold. `data` will contain the maximum value. * `minimum_child_age` - Child age requested is less than the minimum age specified for the room. `data` will contain the minimum value. * `maximum_occupancy` - Number of occupants exceed the specified room limit. `data` will contain the maximum value. * `checkin_not_allowed` - Check-in not allowed for this stay date. * `checkout_not_allowed` - Check-out not allowed for this stay date. * `minimum_stay` - Length of stay is less than minimum. `data` will contain the minimum value. * `maximum_stay` - Length of stay is greater than maximum. `data` will contain the maximum value. * `restricted_stay_lengths` - Some stay lengths are not available for this check-in date. `data` will contain the allowed lengths separated by pipe `|`. eg. `3|5|6` * `same_day_restrictions` - Room is not available due to same day booking restrictions. * `maximum_rooms` - Room count exceeds provider limit. `data` will contain the maximum value. * `children_not_supported` - The property is restricted to adults only. * `minimum_advance_purchase` - Minimum Advance Purchase requirement not met. `data` will contain the minimum value. * `maximum_advance_purchase` - Maximum Advance Purchase requirement not met. `data` will contain the maximum value. * `partial_inventory_available` - Some of the dates have no inventory available for the specified duration. `data` will contain the unavailable dates separated by pipe `|`. eg. `2023-10-21|2023-10-23` * `no_inventory_available` - No inventory is available for the specified duration. - * Values: ADULTS_EXCEED_THRESHOLD,CHILDREN_EXCEED_THRESHOLD,INFANTS_EXCEED_THRESHOLD,MINIMUM_CHILD_AGE,MAXIMUM_OCCUPANCY,CHECKIN_NOT_ALLOWED,CHECKOUT_NOT_ALLOWED,MINIMUM_STAY,MAXIMUM_STAY,RESTRICTED_DATES,SAME_DAY_RESTRICTIONS,MAXIMUM_ROOMS,CHILDREN_NOT_SUPPORTED,MINIMUM_ADVANCE_PURCHASE,MAXIMUM_ADVANCE_PURCHASE,PARTIAL_INVENTORY_AVAILABLE,NO_INVENTORY_AVAILABLE + * Values: ADULTS_EXCEED_THRESHOLD,CHILDREN_EXCEED_THRESHOLD,INFANTS_EXCEED_THRESHOLD,MINIMUM_CHILD_AGE,MAXIMUM_OCCUPANCY,CHECKIN_NOT_ALLOWED,CHECKOUT_NOT_ALLOWED,MINIMUM_STAY,MAXIMUM_STAY,RESTRICTED_STAY_LENGTHS,SAME_DAY_RESTRICTIONS,MAXIMUM_ROOMS,CHILDREN_NOT_SUPPORTED,MINIMUM_ADVANCE_PURCHASE,MAXIMUM_ADVANCE_PURCHASE,PARTIAL_INVENTORY_AVAILABLE,NO_INVENTORY_AVAILABLE */ enum class Code(val value: kotlin.String) { @JsonProperty("adults_exceed_threshold") @@ -132,8 +132,8 @@ data class UnavailableReason( @JsonProperty("maximum_stay") MAXIMUM_STAY("maximum_stay"), - @JsonProperty("restricted_dates") - RESTRICTED_DATES("restricted_dates"), + @JsonProperty("restricted_stay_lengths") + RESTRICTED_STAY_LENGTHS("restricted_stay_lengths"), @JsonProperty("same_day_restrictions") SAME_DAY_RESTRICTIONS("same_day_restrictions"), diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/exception/ApiException.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/exception/ApiException.kt index c72e29f1de..36d5e2c08c 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/exception/ApiException.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/models/exception/ApiException.kt @@ -188,6 +188,20 @@ internal object ErrorObjectMapper { DefaultHttpStatusCodeRange ) ), + Pair( + "getCampaigns", + listOf( + HttpStatusCodeRange("400") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("401") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("403") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("410") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("426") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("429") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("500") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("503") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + DefaultHttpStatusCodeRange + ) + ), Pair( "getCategoriesReference", listOf( @@ -303,6 +317,20 @@ internal object ErrorObjectMapper { DefaultHttpStatusCodeRange ) ), + Pair( + "getPromotions", + listOf( + HttpStatusCodeRange("400") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("401") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("403") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("410") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("426") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("429") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("500") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + HttpStatusCodeRange("503") { ExpediaGroupApiErrorException(it.status.value, fetchErrorObject(it) as Error, it.headers.getTransactionId()) }, + DefaultHttpStatusCodeRange + ) + ), Pair( "getPropertyCatalogFile", listOf( diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetAdditionalAvailabilityOperationParams.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetAdditionalAvailabilityOperationParams.kt index 11e8c900fa..4f6c9fd68f 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetAdditionalAvailabilityOperationParams.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetAdditionalAvailabilityOperationParams.kt @@ -35,7 +35,7 @@ import javax.validation.constraints.NotNull * @property checkin Check-in date, in ISO 8601 format (YYYY-MM-DD). This can be up to 365 days in the future. Some partner configurations may extend this up to 500 days.
    Note: Only needed for hard change if desired check-in date is different than original booking. If specified must also specify `checkout`. * @property checkout Check-out date, in ISO 8601 format (YYYY-MM-DD). Total length of stay cannot exceed 28 nights or 365 nights depending on Vacation Rental configurations.
    Note: Only needed for hard change if desired check-out date is different than original booking. If specified must also specify `checkin`.
    * @property exclusion Single exclusion type. Send multiple instances of this parameter to request multiple exclusions.
    Note: Optional parameter for use with hard change requests.
    * `refundable_damage_deposit` - Excludes Rapid supplied Vrbo rates with refundable damage deposits from the response. * `card_on_file` - Excludes Rapid supplied Vrbo rates with card-on-file damage collection from the response. - * @property filter Single filter type. Send multiple instances of this parameter to request multiple filters.
    Note: Optional parameter for use with hard change requests.
    This parameter cannot be set to `property_collect` if the existing booking is `expedia_collect` and vice versa.
    * `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. + * @property filter Single filter type. Send multiple instances of this parameter to request multiple filters.
    Note: Optional parameter for use with hard change requests.
    This parameter cannot be set to `property_collect` if the existing booking is `expedia_collect` and vice versa.
    * `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. * `deal` - Filters results to only show rates that have a promotion that is of the type deal. * @property include Modify the response by including types of responses that are not provided by default.
    * `sale_scenario.mobile_promotion` - Enable the `mobile_promotion` flag under the `sale_scenario` section of the response. * @property occupancy Defines the requested occupancy for a single room. Each room must have at least 1 adult occupant.
    Format: `numberOfAdults[-firstChildAge[,nextChildAge]]`
    To request multiple rooms (of the same type), include one instance of occupancy for each room requested. Up to 8 rooms may be requested or booked at once.
    Note: Only needed for hard change if desired occupancy is different than original booking.
    Examples: * 2 adults, one 9-year-old and one 4-year-old would be represented by `occupancy=2-9,4`.
    * A multi-room request to lodge an additional 2 adults would be represented by `occupancy=2-9,4&occupancy=2` * @property rateOption Request specific rate options for each property. Send multiple instances of this parameter to request multiple rate options. Note: Optional parameter for use with hard change requests.
    Accepted values:
    * `member` - Return member rates for each property. This feature must be enabled and requires a user to be logged in to request these rates. * `net_rates` - Return net rates for each property. This feature must be enabled to request these rates. * `cross_sell` - Identify if the traffic is coming from a cross sell booking. Where the traveler has booked another service (flight, car, activities...) before hotel. @@ -172,7 +172,9 @@ data class GetAdditionalAvailabilityOperationParams ) { REFUNDABLE("refundable"), EXPEDIA_COLLECT("expedia_collect"), - PROPERTY_COLLECT("property_collect") + PROPERTY_COLLECT("property_collect"), + LOYALTY("loyalty"), + DEAL("deal") } enum class Include( @@ -260,7 +262,7 @@ data class GetAdditionalAvailabilityOperationParams ) = apply { this.exclusion = exclusion } /** - * @param filter Single filter type. Send multiple instances of this parameter to request multiple filters.
    Note: Optional parameter for use with hard change requests.
    This parameter cannot be set to `property_collect` if the existing booking is `expedia_collect` and vice versa.
    * `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. + * @param filter Single filter type. Send multiple instances of this parameter to request multiple filters.
    Note: Optional parameter for use with hard change requests.
    This parameter cannot be set to `property_collect` if the existing booking is `expedia_collect` and vice versa.
    * `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. * `deal` - Filters results to only show rates that have a promotion that is of the type deal. */ fun filter( filter: kotlin.collections.List< diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetAvailabilityOperationContext.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetAvailabilityOperationContext.kt index e0e7496b4f..f518f9a314 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetAvailabilityOperationContext.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetAvailabilityOperationContext.kt @@ -19,12 +19,15 @@ import com.fasterxml.jackson.annotation.JsonProperty import com.fasterxml.jackson.databind.annotation.JsonDeserialize /** + * @property campaignId The Merchandising `Campaign-Id` that was involved in the traveler shopping for these properties. * @property customerIp IP address of the customer, as captured by your integration.
    Ensure your integration passes the customer's IP, not your own. This value helps determine their location and assign the correct payment gateway.
    Also used for fraud recovery and other important analytics. * @property customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
    Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. * @property test Shop calls have a test header that can be used to return set responses with the following keywords:
    * `standard` * `service_unavailable` * `unknown_internal_error` */ @JsonDeserialize(builder = GetAvailabilityOperationParams.Builder::class) data class GetAvailabilityOperationContext( + val campaignId: kotlin.String? = + null, val customerIp: kotlin.String? = null, val customerSessionId: kotlin.String? = @@ -38,10 +41,16 @@ data class GetAvailabilityOperationContext( } class Builder( + @JsonProperty("Campaign-Id") private var campaignId: kotlin.String? = null, @JsonProperty("Customer-Ip") private var customerIp: kotlin.String? = null, @JsonProperty("Customer-Session-Id") private var customerSessionId: kotlin.String? = null, @JsonProperty("Test") private var test: GetAvailabilityOperationParams.Test? = null ) { + /** + * @param campaignId The Merchandising `Campaign-Id` that was involved in the traveler shopping for these properties. + */ + fun campaignId(campaignId: kotlin.String) = apply { this.campaignId = campaignId } + /** * @param customerIp IP address of the customer, as captured by your integration.
    Ensure your integration passes the customer's IP, not your own. This value helps determine their location and assign the correct payment gateway.
    Also used for fraud recovery and other important analytics. */ @@ -61,6 +70,7 @@ data class GetAvailabilityOperationContext( validateNullity() return GetAvailabilityOperationContext( + campaignId = campaignId, customerIp = customerIp, customerSessionId = customerSessionId, test = test @@ -73,6 +83,9 @@ data class GetAvailabilityOperationContext( fun getHeaders(): Map = buildMap { + campaignId?.also { + put("Campaign-Id", campaignId) + } customerIp?.also { put("Customer-Ip", customerIp) } diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetAvailabilityOperationParams.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetAvailabilityOperationParams.kt index d76879872d..2b6de19804 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetAvailabilityOperationParams.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetAvailabilityOperationParams.kt @@ -27,6 +27,7 @@ import javax.validation.Validation import javax.validation.constraints.NotNull /** + * @property campaignId The Merchandising `Campaign-Id` that was involved in the traveler shopping for these properties. * @property customerIp IP address of the customer, as captured by your integration.
    Ensure your integration passes the customer's IP, not your own. This value helps determine their location and assign the correct payment gateway.
    Also used for fraud recovery and other important analytics. * @property customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
    Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. * @property test Shop calls have a test header that can be used to return set responses with the following keywords:
    * `standard` * `service_unavailable` * `unknown_internal_error` @@ -42,8 +43,8 @@ import javax.validation.constraints.NotNull * @property salesEnvironment You must provide the sales environment in which rates will be sold. EPS dynamically provides the best content for optimal conversion. If you have a sales environment that is not currently supported in this list, please contact our support team.
    * `hotel_package` - Use when selling the hotel with a transport product, e.g. flight & hotel. * `hotel_only` - Use when selling the hotel as an individual product. * `loyalty` - Use when you are selling the hotel as part of a loyalty program and the price is converted to points. * @property amenityCategory Single amenity category. Send multiple instances of this parameter to request rates that match multiple amenity categories.
    See the Amenity Categories section of the [Content Reference Lists](https://developers.expediagroup.com/docs/rapid/lodging/content/content-reference-lists) for a list of values. * @property exclusion Single exclusion type. Send multiple instances of this parameter to request multiple exclusions.
    * `refundable_damage_deposit` - Excludes Rapid supplied Vrbo rates with refundable damage deposits from the response. * `card_on_file` - Excludes Rapid supplied Vrbo rates with card-on-file damage collection from the response. - * @property filter Single filter type. Send multiple instances of this parameter to request multiple filters.
    * `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. - * @property include Modify the response by including types of responses that are not provided by default.
    * `unavailable_reason` - When a property is unavailable for an actionable reason, return a response with that reason - See [Unavailable Reason Codes](https://developers.expediagroup.com/docs/rapid/resources/reference/unavailable-reason-codes) for possible values. * `sale_scenario.mobile_promotion` - Enable the `mobile_promotion` flag under the `room.rate.sale_scenario` section of the response. * `rooms.rates.marketing_fee_incentives` - When a rate has a marketing fee incentive applied, the response will include the `marketing_fee_incentives` array if this flag is provided in the request. * `rooms.rates.current_refundability` - Displays the current `refundability` of a rate. + * @property filter Single filter type. Send multiple instances of this parameter to request multiple filters.
    * `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. * `deal` - Filters results to only show rates that have a promotion that is of the type deal. + * @property include Modify the response by including types of responses that are not provided by default.
    * `unavailable_reason` - When a property is unavailable for an actionable reason, return a response with that reason - See [Unavailable Reason Codes](https://developers.expediagroup.com/docs/rapid/resources/reference/unavailable-reason-codes) for possible values. * `sale_scenario.mobile_promotion` - Enable the `mobile_promotion` flag under the `room.rate.sale_scenario` section of the response. * `rooms.rates.marketing_fee_incentives` - When a rate has a marketing fee incentive applied, the response will include the `marketing_fee_incentives` array if this flag is provided in the request. * `rooms.rates.current_refundability` - Displays the current `refundability` of a rate. * `rooms.rates.holdable` - Enables the `holdable` flag on the response to indicate whether the rate supports [Booking Hold and Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume). * `rooms.rates.marketing_fee_details` - Displays a more granular view of marketing fees in the response. * @property rateOption Request specific rate options for each property. Send multiple instances of this parameter to request multiple rate options. Accepted values:
    * `member` - Return member rates for each property. This feature must be enabled and requires a user to be logged in to request these rates. * `net_rates` - Return net rates for each property. This feature must be enabled to request these rates. * `cross_sell` - Identify if the traffic is coming from a cross sell booking. Where the traveler has booked another service (flight, car, activities...) before hotel. * @property travelPurpose This parameter is to specify the travel purpose of the booking. This may impact available rate plans, pricing, or tax calculations. * `leisure` * `business` * @property billingTerms This parameter is to specify the terms of how a resulting booking should be billed. If this field is needed, the value for this will be provided to you separately. @@ -54,6 +55,8 @@ import javax.validation.constraints.NotNull @JsonDeserialize(builder = GetAvailabilityOperationParams.Builder::class) data class GetAvailabilityOperationParams internal constructor( + @field:Valid + val campaignId: kotlin.String? = null, @field:Valid val customerIp: kotlin.String? = null, @field:Valid @@ -127,6 +130,8 @@ data class GetAvailabilityOperationParams } constructor( + campaignId: kotlin.String? = + null, customerIp: kotlin.String? = null, customerSessionId: kotlin.String? = @@ -178,6 +183,7 @@ data class GetAvailabilityOperationParams platformName: kotlin.String? = null ) : this( + campaignId = campaignId, customerIp = customerIp, customerSessionId = customerSessionId, test = test, @@ -205,6 +211,7 @@ data class GetAvailabilityOperationParams ) constructor(context: GetAvailabilityOperationContext?) : this( + campaignId = context?.campaignId, customerIp = context?.customerIp, customerSessionId = context?.customerSessionId, test = context?.test, @@ -231,7 +238,9 @@ data class GetAvailabilityOperationParams ) { REFUNDABLE("refundable"), EXPEDIA_COLLECT("expedia_collect"), - PROPERTY_COLLECT("property_collect") + PROPERTY_COLLECT("property_collect"), + LOYALTY("loyalty"), + DEAL("deal") } enum class Include( @@ -240,7 +249,9 @@ data class GetAvailabilityOperationParams UNAVAILABLE_REASON("unavailable_reason"), SALE_SCENARIO_PERIOD_MOBILE_PROMOTION("sale_scenario.mobile_promotion"), ROOMS_PERIOD_RATES_PERIOD_MARKETING_FEE_INCENTIVES("rooms.rates.marketing_fee_incentives"), - ROOMS_PERIOD_RATES_PERIOD_CURRENT_REFUNDABILITY("rooms.rates.current_refundability") + ROOMS_PERIOD_RATES_PERIOD_CURRENT_REFUNDABILITY("rooms.rates.current_refundability"), + ROOMS_PERIOD_RATES_PERIOD_HOLDABLE("rooms.rates.holdable"), + ROOMS_PERIOD_RATES_PERIOD_MARKETING_FEE_DETAILS("rooms.rates.marketing_fee_details") } enum class RateOption( @@ -259,6 +270,7 @@ data class GetAvailabilityOperationParams } class Builder( + @JsonProperty("Campaign-Id") private var campaignId: kotlin.String? = null, @JsonProperty("Customer-Ip") private var customerIp: kotlin.String? = null, @JsonProperty("Customer-Session-Id") private var customerSessionId: kotlin.String? = null, @JsonProperty("Test") private var test: GetAvailabilityOperationParams.Test? = null, @@ -297,6 +309,11 @@ data class GetAvailabilityOperationParams @JsonProperty("payment_terms") private var paymentTerms: kotlin.String? = null, @JsonProperty("platform_name") private var platformName: kotlin.String? = null ) { + /** + * @param campaignId The Merchandising `Campaign-Id` that was involved in the traveler shopping for these properties. + */ + fun campaignId(campaignId: kotlin.String) = apply { this.campaignId = campaignId } + /** * @param customerIp IP address of the customer, as captured by your integration.
    Ensure your integration passes the customer's IP, not your own. This value helps determine their location and assign the correct payment gateway.
    Also used for fraud recovery and other important analytics. */ @@ -389,7 +406,7 @@ data class GetAvailabilityOperationParams ) = apply { this.exclusion = exclusion } /** - * @param filter Single filter type. Send multiple instances of this parameter to request multiple filters.
    * `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. + * @param filter Single filter type. Send multiple instances of this parameter to request multiple filters.
    * `refundable` - Filters results to only show fully refundable rates. * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. * `deal` - Filters results to only show rates that have a promotion that is of the type deal. */ fun filter( filter: kotlin.collections.List< @@ -398,7 +415,7 @@ data class GetAvailabilityOperationParams ) = apply { this.filter = filter } /** - * @param include Modify the response by including types of responses that are not provided by default.
    * `unavailable_reason` - When a property is unavailable for an actionable reason, return a response with that reason - See [Unavailable Reason Codes](https://developers.expediagroup.com/docs/rapid/resources/reference/unavailable-reason-codes) for possible values. * `sale_scenario.mobile_promotion` - Enable the `mobile_promotion` flag under the `room.rate.sale_scenario` section of the response. * `rooms.rates.marketing_fee_incentives` - When a rate has a marketing fee incentive applied, the response will include the `marketing_fee_incentives` array if this flag is provided in the request. * `rooms.rates.current_refundability` - Displays the current `refundability` of a rate. + * @param include Modify the response by including types of responses that are not provided by default.
    * `unavailable_reason` - When a property is unavailable for an actionable reason, return a response with that reason - See [Unavailable Reason Codes](https://developers.expediagroup.com/docs/rapid/resources/reference/unavailable-reason-codes) for possible values. * `sale_scenario.mobile_promotion` - Enable the `mobile_promotion` flag under the `room.rate.sale_scenario` section of the response. * `rooms.rates.marketing_fee_incentives` - When a rate has a marketing fee incentive applied, the response will include the `marketing_fee_incentives` array if this flag is provided in the request. * `rooms.rates.current_refundability` - Displays the current `refundability` of a rate. * `rooms.rates.holdable` - Enables the `holdable` flag on the response to indicate whether the rate supports [Booking Hold and Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume). * `rooms.rates.marketing_fee_details` - Displays a more granular view of marketing fees in the response. */ fun include( include: kotlin.collections.List< @@ -443,6 +460,7 @@ data class GetAvailabilityOperationParams fun build(): GetAvailabilityOperationParams { val params = GetAvailabilityOperationParams( + campaignId = campaignId, customerIp = customerIp, customerSessionId = customerSessionId, test = test, @@ -494,6 +512,7 @@ data class GetAvailabilityOperationParams fun toBuilder() = Builder( + campaignId = campaignId, customerIp = customerIp, customerSessionId = customerSessionId, test = test, @@ -521,6 +540,9 @@ data class GetAvailabilityOperationParams override fun getHeaders(): Headers = Headers.build { + campaignId?.let { + append("Campaign-Id", it) + } customerIp?.let { append("Customer-Ip", it) } diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetCampaignsOperation.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetCampaignsOperation.kt new file mode 100644 index 0000000000..1a1c8b7904 --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetCampaignsOperation.kt @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.expediagroup.sdk.rapid.operations + +import com.expediagroup.sdk.core.model.Nothing +import com.expediagroup.sdk.core.model.Operation + +/** + * Campaigns Search + * @property params [GetCampaignsOperationParams] + */ +class GetCampaignsOperation( + params: GetCampaignsOperationParams +) : Operation< + Nothing + >( + "/v3/campaigns", + "GET", + "getCampaigns", + null, + params + ) diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetCampaignsOperationParams.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetCampaignsOperationParams.kt new file mode 100644 index 0000000000..f3b088c3c1 --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetCampaignsOperationParams.kt @@ -0,0 +1,349 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.expediagroup.sdk.rapid.operations + +import com.expediagroup.sdk.core.model.OperationParams +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.databind.annotation.JsonDeserialize +import io.ktor.http.Headers +import io.ktor.http.Parameters +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation +import javax.validation.constraints.NotNull + +/** + * @property customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
    Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. + * @property language Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes.
    **Currently only `en-US` is supported.**

    Reference: * [W3 Language Tags](https://www.w3.org/International/articles/language-tags/) + * @property blockoutDates Specify restrictions to blockout dates. If this parameter is not supplied, campaigns with and without blockout dates will be included. * `true` - Include only campaigns that have blockout dates. * `false` - Do not include campaigns that have blockout dates. + * @property bookableEnd Search for all campaigns with a `bookable_end` date equal to or before the specified date. + * @property bookableStart Search for all campaigns with a `bookable_start` date equal to or after the specified date. + * @property lifetime Search for campaigns that match the lifetime type. + * @property campaignId Search for campaigns with matching `id` values. You can provide 0 to 250 `id` parameters with different values, which will include campaigns that match any of the requested values. + * @property include Each time this parameter is specified will add to the list of fields and associated objects returned in the response. All values and field names are lower case. All field names found at the top level of the response are valid values for inclusion. + * @property minDiscount Search for campaigns that have a `min_discount` equal to or larger than the value. + * @property stayEnd Search for all campaigns with a `stay_end` date equal to or before the specified date. + * @property stayStart Search for all campaigns with a `stay_start` date equal to or after the specified date. + * @property token Only used for requesting additional pages of data. Provided by the `next` URL in the `Link` response header. + * @property billingTerms This parameter is to specify the terms of how a resulting booking should be billed. If this field is needed, the value for this will be provided to you separately. + * @property partnerPointOfSale This parameter is to specify what point of sale is being used to shop and book. If this field is needed, the value for this will be provided to you separately. + * @property paymentTerms This parameter is to specify what terms should be used when being paid for a resulting booking. If this field is needed, the value for this will be provided to you separately. + * @property platformName This parameter is to specify what platform is being used to shop and book. If this field is needed, the value for this will be provided to you separately. + */ +@JsonDeserialize(builder = GetCampaignsOperationParams.Builder::class) +data class GetCampaignsOperationParams( + @field:Valid + val customerSessionId: kotlin.String? = + null, + @field:NotNull + @field:Valid + val language: kotlin.String, + @field:Valid + val blockoutDates: kotlin.Boolean? = + null, + @field:Valid + val bookableEnd: kotlin.String? = + null, + @field:Valid + val bookableStart: kotlin.String? = + null, + val lifetime: GetCampaignsOperationParams.Lifetime? = + null, + @field:Valid + val campaignId: kotlin.collections.List< + kotlin.String + >? = + null, + @field:Valid + val include: kotlin.collections.List< + kotlin.String + >? = + null, + @field:Valid + val minDiscount: kotlin.String? = + null, + @field:Valid + val stayEnd: kotlin.String? = + null, + @field:Valid + val stayStart: kotlin.String? = + null, + @field:Valid + val token: kotlin.String? = + null, + @field:Valid + val billingTerms: kotlin.String? = + null, + @field:Valid + val partnerPointOfSale: kotlin.String? = + null, + @field:Valid + val paymentTerms: kotlin.String? = + null, + @field:Valid + val platformName: kotlin.String? = + null +) : + OperationParams { + companion object { + @JvmStatic + fun builder() = Builder() + } + + enum class Lifetime( + val value: kotlin.String + ) { + LIMITED_TIME_OFFER("limited_time_offer"), + EVERGREEN("evergreen") + } + + class Builder( + @JsonProperty("Customer-Session-Id") private var customerSessionId: kotlin.String? = null, + @JsonProperty("language") private var language: kotlin.String? = null, + @JsonProperty("blockout_dates") private var blockoutDates: kotlin.Boolean? = null, + @JsonProperty("bookable_end") private var bookableEnd: kotlin.String? = null, + @JsonProperty("bookable_start") private var bookableStart: kotlin.String? = null, + @JsonProperty("lifetime") private var lifetime: GetCampaignsOperationParams.Lifetime? = null, + @JsonProperty("campaign_id") private var campaignId: kotlin.collections.List< + kotlin.String + >? = null, + @JsonProperty("include") private var include: kotlin.collections.List< + kotlin.String + >? = null, + @JsonProperty("min_discount") private var minDiscount: kotlin.String? = null, + @JsonProperty("stay_end") private var stayEnd: kotlin.String? = null, + @JsonProperty("stay_start") private var stayStart: kotlin.String? = null, + @JsonProperty("token") private var token: kotlin.String? = null, + @JsonProperty("billing_terms") private var billingTerms: kotlin.String? = null, + @JsonProperty("partner_point_of_sale") private var partnerPointOfSale: kotlin.String? = null, + @JsonProperty("payment_terms") private var paymentTerms: kotlin.String? = null, + @JsonProperty("platform_name") private var platformName: kotlin.String? = null + ) { + /** + * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
    Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. + */ + fun customerSessionId(customerSessionId: kotlin.String) = apply { this.customerSessionId = customerSessionId } + + /** + * @param language Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes.
    **Currently only `en-US` is supported.**

    Reference: * [W3 Language Tags](https://www.w3.org/International/articles/language-tags/) + */ + fun language(language: kotlin.String) = apply { this.language = language } + + /** + * @param blockoutDates Specify restrictions to blockout dates. If this parameter is not supplied, campaigns with and without blockout dates will be included. * `true` - Include only campaigns that have blockout dates. * `false` - Do not include campaigns that have blockout dates. + */ + fun blockoutDates(blockoutDates: kotlin.Boolean) = apply { this.blockoutDates = blockoutDates } + + /** + * @param bookableEnd Search for all campaigns with a `bookable_end` date equal to or before the specified date. + */ + fun bookableEnd(bookableEnd: kotlin.String) = apply { this.bookableEnd = bookableEnd } + + /** + * @param bookableStart Search for all campaigns with a `bookable_start` date equal to or after the specified date. + */ + fun bookableStart(bookableStart: kotlin.String) = apply { this.bookableStart = bookableStart } + + /** + * @param lifetime Search for campaigns that match the lifetime type. + */ + fun lifetime(lifetime: GetCampaignsOperationParams.Lifetime) = apply { this.lifetime = lifetime } + + /** + * @param campaignId Search for campaigns with matching `id` values. You can provide 0 to 250 `id` parameters with different values, which will include campaigns that match any of the requested values. + */ + fun campaignId( + campaignId: kotlin.collections.List< + kotlin.String + > + ) = apply { this.campaignId = campaignId } + + /** + * @param include Each time this parameter is specified will add to the list of fields and associated objects returned in the response. All values and field names are lower case. All field names found at the top level of the response are valid values for inclusion. + */ + fun include( + include: kotlin.collections.List< + kotlin.String + > + ) = apply { this.include = include } + + /** + * @param minDiscount Search for campaigns that have a `min_discount` equal to or larger than the value. + */ + fun minDiscount(minDiscount: kotlin.String) = apply { this.minDiscount = minDiscount } + + /** + * @param stayEnd Search for all campaigns with a `stay_end` date equal to or before the specified date. + */ + fun stayEnd(stayEnd: kotlin.String) = apply { this.stayEnd = stayEnd } + + /** + * @param stayStart Search for all campaigns with a `stay_start` date equal to or after the specified date. + */ + fun stayStart(stayStart: kotlin.String) = apply { this.stayStart = stayStart } + + /** + * @param token Only used for requesting additional pages of data. Provided by the `next` URL in the `Link` response header. + */ + fun token(token: kotlin.String) = apply { this.token = token } + + /** + * @param billingTerms This parameter is to specify the terms of how a resulting booking should be billed. If this field is needed, the value for this will be provided to you separately. + */ + fun billingTerms(billingTerms: kotlin.String) = apply { this.billingTerms = billingTerms } + + /** + * @param partnerPointOfSale This parameter is to specify what point of sale is being used to shop and book. If this field is needed, the value for this will be provided to you separately. + */ + fun partnerPointOfSale(partnerPointOfSale: kotlin.String) = apply { this.partnerPointOfSale = partnerPointOfSale } + + /** + * @param paymentTerms This parameter is to specify what terms should be used when being paid for a resulting booking. If this field is needed, the value for this will be provided to you separately. + */ + fun paymentTerms(paymentTerms: kotlin.String) = apply { this.paymentTerms = paymentTerms } + + /** + * @param platformName This parameter is to specify what platform is being used to shop and book. If this field is needed, the value for this will be provided to you separately. + */ + fun platformName(platformName: kotlin.String) = apply { this.platformName = platformName } + + fun build(): GetCampaignsOperationParams { + val params = + GetCampaignsOperationParams( + customerSessionId = customerSessionId, + language = language!!, + blockoutDates = blockoutDates, + bookableEnd = bookableEnd, + bookableStart = bookableStart, + lifetime = lifetime, + campaignId = campaignId, + include = include, + minDiscount = minDiscount, + stayEnd = stayEnd, + stayStart = stayStart, + token = token, + billingTerms = billingTerms, + partnerPointOfSale = partnerPointOfSale, + paymentTerms = paymentTerms, + platformName = platformName + ) + + validate(params) + + return params + } + + private fun validate(params: GetCampaignsOperationParams) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(params) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + customerSessionId = customerSessionId, + language = language, + blockoutDates = blockoutDates, + bookableEnd = bookableEnd, + bookableStart = bookableStart, + lifetime = lifetime, + campaignId = campaignId, + include = include, + minDiscount = minDiscount, + stayEnd = stayEnd, + stayStart = stayStart, + token = token, + billingTerms = billingTerms, + partnerPointOfSale = partnerPointOfSale, + paymentTerms = paymentTerms, + platformName = platformName + ) + + override fun getHeaders(): Headers = + Headers.build { + customerSessionId?.let { + append("Customer-Session-Id", it) + } + append("Accept", "application/json") + } + + override fun getQueryParams(): Parameters = + Parameters.build { + language?.let { + append("language", it) + } + blockoutDates?.let { + append("blockout_dates", it.toString()) + } + bookableEnd?.let { + append("bookable_end", it) + } + bookableStart?.let { + append("bookable_start", it) + } + lifetime?.let { + append("lifetime", it.value) + } + campaignId?.let { + appendAll("campaign_id", it) + } + include?.let { + appendAll("include", it) + } + minDiscount?.let { + append("min_discount", it) + } + stayEnd?.let { + append("stay_end", it) + } + stayStart?.let { + append("stay_start", it) + } + token?.let { + append("token", it) + } + billingTerms?.let { + append("billing_terms", it) + } + partnerPointOfSale?.let { + append("partner_point_of_sale", it) + } + paymentTerms?.let { + append("payment_terms", it) + } + platformName?.let { + append("platform_name", it) + } + } + + override fun getPathParams(): Map = + buildMap { + } +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetPromotionsOperation.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetPromotionsOperation.kt new file mode 100644 index 0000000000..51ab33ca26 --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetPromotionsOperation.kt @@ -0,0 +1,35 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.expediagroup.sdk.rapid.operations + +import com.expediagroup.sdk.core.model.Nothing +import com.expediagroup.sdk.core.model.Operation + +/** + * Promotions Search + * @property params [GetPromotionsOperationParams] + */ +class GetPromotionsOperation( + params: GetPromotionsOperationParams +) : Operation< + Nothing + >( + "/v3/property-promotions", + "GET", + "getPromotions", + null, + params + ) diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetPromotionsOperationParams.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetPromotionsOperationParams.kt new file mode 100644 index 0000000000..d44407c026 --- /dev/null +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetPromotionsOperationParams.kt @@ -0,0 +1,647 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package com.expediagroup.sdk.rapid.operations + +import com.expediagroup.sdk.core.model.OperationParams +import com.expediagroup.sdk.core.model.exception.client.PropertyConstraintViolationException +import com.fasterxml.jackson.annotation.JsonProperty +import com.fasterxml.jackson.databind.annotation.JsonDeserialize +import io.ktor.http.Headers +import io.ktor.http.Parameters +import org.hibernate.validator.messageinterpolation.ParameterMessageInterpolator +import javax.validation.Valid +import javax.validation.Validation +import javax.validation.constraints.NotNull + +/** + * @property customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
    Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. + * @property language Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes.
    **Currently only `en-US` is supported.**

    Reference: * [W3 Language Tags](https://www.w3.org/International/articles/language-tags/) + * @property sortBy Sorts the returned promotions by the given rank value + * @property blockoutDates Specify restrictions to blockout dates. If this parameter is not supplied, promotions with and without blockout dates will be returned in the results. * `true` - Include only promotions that have blockout dates. * `false` - Include only promotions that do not have blockout dates. + * @property bookableEnd Search for promotions with a `bookable_end` date equal to or before the specified date. + * @property bookableStart Search for promotions with a `bookable_start` date equal to or after the specified date. + * @property campaignId Search for promotions with matching `campaign_id` values. You can provide 0 to 250 `campaign_id` parameters with different values, which will include promotions that match any of the requested values. + * @property categoryId Search for promotions associated with the specified `category_id` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. + * @property chainId Search for promotions associated with the specified `chain_id` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. + * @property lifetime Search for promotions that match the lifetime type. + * @property promotionId Search for promotions with matching `id` values. You can provide 0 to 250 `id` parameters with different values, which will include promotions that match any of the requested values. + * @property include Each time this parameter is specified will add to the list of fields and associated objects returned in the response. All values and field names are lower case. All field names found at the top level of the response are valid values for inclusion. + * @property marketRegion Search for promotions associated with the specified `market_region` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. + * @property membersOnly Specify restrictions to `members_only` values. If this parameter is not supplied, promotions with true or false will be returned in the results. * `true` - Only results with `members_only` equal to true will be returned. * `false` - Only results with `members_only` equal to false will be returned. + * @property minAdvancePurchaseDays Search for promotions that have a `min_advance_purchase_days` equal to the passed in value. + * @property minGuestRating Search for promotions that have a `min_guest_rating` equal to or larger than the value. + * @property minStarRating Search for promotions that have a `min_star_rating` equal to or larger than the value. + * @property minStay Search for promotions that have a `min_stay` equal to the passed in value. + * @property mobileOnly Specify restrictions to `mobile_only` values. If this parameter is not supplied, promotions with true or false will be returned in the results. * `true` - Only results with `mobile_only` equal to true will be returned. * `false` - Only results with `mobile_only` equal to false will be returned. + * @property productLine Search for promotions with a `product_line` that matches the value. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. + * @property promotionCriteria Search for promotions that meet the criteria provided. This criteria is defined as: * type,value For now the only type available will be `percentage` but other types will be added in the future. + * @property propertyId Search for promotions with matching `property_id` values. You can provide 0 to 250 `property_id` parameters with different values, which will include promotions that match any of the requested values. + * @property regionId Search for promotions associated with the specified `region_id` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. + * @property stayEnd Search for all promotions with a `stay_end` date equal to or before the specified date. + * @property stayStart Search for all promotions with a `stay_start` date equal to or after the specified date. + * @property supplySource Search for promotions associated with the specified `supply_source` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. * `expedia` - Standard Expedia supply. * `vrbo` - VRBO supply - This option is restricted to partners who have VRBO supply enabled for their profile. See [Vacation Rentals](https://developers.expediagroup.com/docs/rapid/lodging/vacation-rentals) for more information. + * @property token Only used for requesting additional pages of data. Provided by the `next` URL in the `Link` response header. + * @property billingTerms This parameter is to specify the terms of how a resulting booking should be billed. If this field is needed, the value for this will be provided to you separately. + * @property partnerPointOfSale This parameter is to specify what point of sale is being used to shop and book. If this field is needed, the value for this will be provided to you separately. + * @property paymentTerms This parameter is to specify what terms should be used when being paid for a resulting booking. If this field is needed, the value for this will be provided to you separately. + * @property platformName This parameter is to specify what platform is being used to shop and book. If this field is needed, the value for this will be provided to you separately. + */ +@JsonDeserialize(builder = GetPromotionsOperationParams.Builder::class) +data class GetPromotionsOperationParams( + @field:Valid + val customerSessionId: kotlin.String? = + null, + @field:NotNull + @field:Valid + val language: kotlin.String, + @field:NotNull + val sortBy: GetPromotionsOperationParams.SortBy, + @field:Valid + val blockoutDates: kotlin.Boolean? = + null, + @field:Valid + val bookableEnd: kotlin.String? = + null, + @field:Valid + val bookableStart: kotlin.String? = + null, + @field:Valid + val campaignId: kotlin.collections.List< + kotlin.String + >? = + null, + @field:Valid + val categoryId: kotlin.collections.List< + kotlin.String + >? = + null, + @field:Valid + val chainId: kotlin.collections.List< + kotlin.String + >? = + null, + @field:Valid + val lifetime: kotlin.String? = + null, + @field:Valid + val promotionId: kotlin.collections.List< + kotlin.String + >? = + null, + @field:Valid + val include: kotlin.collections.List< + kotlin.String + >? = + null, + val marketRegion: kotlin.collections.List< + GetPromotionsOperationParams.MarketRegion + >? = + null, + @field:Valid + val membersOnly: kotlin.Boolean? = + null, + @field:Valid + val minAdvancePurchaseDays: kotlin.String? = + null, + @field:Valid + val minGuestRating: kotlin.String? = + null, + @field:Valid + val minStarRating: kotlin.String? = + null, + @field:Valid + val minStay: kotlin.String? = + null, + @field:Valid + val mobileOnly: kotlin.Boolean? = + null, + @field:Valid + val productLine: kotlin.collections.List< + kotlin.String + >? = + null, + @field:Valid + val promotionCriteria: kotlin.String? = + null, + @field:Valid + val propertyId: kotlin.collections.List< + kotlin.String + >? = + null, + @field:Valid + val regionId: kotlin.collections.List< + kotlin.String + >? = + null, + @field:Valid + val stayEnd: kotlin.String? = + null, + @field:Valid + val stayStart: kotlin.String? = + null, + @field:Valid + val supplySource: kotlin.collections.List< + kotlin.String + >? = + null, + @field:Valid + val token: kotlin.String? = + null, + @field:Valid + val billingTerms: kotlin.String? = + null, + @field:Valid + val partnerPointOfSale: kotlin.String? = + null, + @field:Valid + val paymentTerms: kotlin.String? = + null, + @field:Valid + val platformName: kotlin.String? = + null +) : + OperationParams { + companion object { + @JvmStatic + fun builder() = Builder() + } + + enum class SortBy( + val value: kotlin.String + ) { + PROMOTION("promotion"), + PROPERTY("property"), + DESTINATION("destination") + } + + enum class MarketRegion( + val value: kotlin.String + ) { + AMER("amer"), + APAC("apac"), + EMEA("emea"), + LATAM("latam") + } + + class Builder( + @JsonProperty("Customer-Session-Id") private var customerSessionId: kotlin.String? = null, + @JsonProperty("language") private var language: kotlin.String? = null, + @JsonProperty("sort_by") private var sortBy: GetPromotionsOperationParams.SortBy? = null, + @JsonProperty("blockout_dates") private var blockoutDates: kotlin.Boolean? = null, + @JsonProperty("bookable_end") private var bookableEnd: kotlin.String? = null, + @JsonProperty("bookable_start") private var bookableStart: kotlin.String? = null, + @JsonProperty("campaign_id") private var campaignId: kotlin.collections.List< + kotlin.String + >? = null, + @JsonProperty("category_id") private var categoryId: kotlin.collections.List< + kotlin.String + >? = null, + @JsonProperty("chain_id") private var chainId: kotlin.collections.List< + kotlin.String + >? = null, + @JsonProperty("lifetime") private var lifetime: kotlin.String? = null, + @JsonProperty("promotion_id") private var promotionId: kotlin.collections.List< + kotlin.String + >? = null, + @JsonProperty("include") private var include: kotlin.collections.List< + kotlin.String + >? = null, + @JsonProperty("market_region") private var marketRegion: kotlin.collections.List< + GetPromotionsOperationParams.MarketRegion + >? = null, + @JsonProperty("members_only") private var membersOnly: kotlin.Boolean? = null, + @JsonProperty("min_advance_purchase_days") private var minAdvancePurchaseDays: kotlin.String? = null, + @JsonProperty("min_guest_rating") private var minGuestRating: kotlin.String? = null, + @JsonProperty("min_star_rating") private var minStarRating: kotlin.String? = null, + @JsonProperty("min_stay") private var minStay: kotlin.String? = null, + @JsonProperty("mobile_only") private var mobileOnly: kotlin.Boolean? = null, + @JsonProperty("product_line") private var productLine: kotlin.collections.List< + kotlin.String + >? = null, + @JsonProperty("promotion_criteria") private var promotionCriteria: kotlin.String? = null, + @JsonProperty("property_id") private var propertyId: kotlin.collections.List< + kotlin.String + >? = null, + @JsonProperty("region_id") private var regionId: kotlin.collections.List< + kotlin.String + >? = null, + @JsonProperty("stay_end") private var stayEnd: kotlin.String? = null, + @JsonProperty("stay_start") private var stayStart: kotlin.String? = null, + @JsonProperty("supply_source") private var supplySource: kotlin.collections.List< + kotlin.String + >? = null, + @JsonProperty("token") private var token: kotlin.String? = null, + @JsonProperty("billing_terms") private var billingTerms: kotlin.String? = null, + @JsonProperty("partner_point_of_sale") private var partnerPointOfSale: kotlin.String? = null, + @JsonProperty("payment_terms") private var paymentTerms: kotlin.String? = null, + @JsonProperty("platform_name") private var platformName: kotlin.String? = null + ) { + /** + * @param customerSessionId Insert your own unique value for each user session, beginning with the first API call. Continue to pass the same value for each subsequent API call during the user's session, using a new value for every new customer session.
    Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it explicitly links together request paths for individual user's session. + */ + fun customerSessionId(customerSessionId: kotlin.String) = apply { this.customerSessionId = customerSessionId } + + /** + * @param language Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes.
    **Currently only `en-US` is supported.**

    Reference: * [W3 Language Tags](https://www.w3.org/International/articles/language-tags/) + */ + fun language(language: kotlin.String) = apply { this.language = language } + + /** + * @param sortBy Sorts the returned promotions by the given rank value + */ + fun sortBy(sortBy: GetPromotionsOperationParams.SortBy) = apply { this.sortBy = sortBy } + + /** + * @param blockoutDates Specify restrictions to blockout dates. If this parameter is not supplied, promotions with and without blockout dates will be returned in the results. * `true` - Include only promotions that have blockout dates. * `false` - Include only promotions that do not have blockout dates. + */ + fun blockoutDates(blockoutDates: kotlin.Boolean) = apply { this.blockoutDates = blockoutDates } + + /** + * @param bookableEnd Search for promotions with a `bookable_end` date equal to or before the specified date. + */ + fun bookableEnd(bookableEnd: kotlin.String) = apply { this.bookableEnd = bookableEnd } + + /** + * @param bookableStart Search for promotions with a `bookable_start` date equal to or after the specified date. + */ + fun bookableStart(bookableStart: kotlin.String) = apply { this.bookableStart = bookableStart } + + /** + * @param campaignId Search for promotions with matching `campaign_id` values. You can provide 0 to 250 `campaign_id` parameters with different values, which will include promotions that match any of the requested values. + */ + fun campaignId( + campaignId: kotlin.collections.List< + kotlin.String + > + ) = apply { this.campaignId = campaignId } + + /** + * @param categoryId Search for promotions associated with the specified `category_id` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. + */ + fun categoryId( + categoryId: kotlin.collections.List< + kotlin.String + > + ) = apply { this.categoryId = categoryId } + + /** + * @param chainId Search for promotions associated with the specified `chain_id` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. + */ + fun chainId( + chainId: kotlin.collections.List< + kotlin.String + > + ) = apply { this.chainId = chainId } + + /** + * @param lifetime Search for promotions that match the lifetime type. + */ + fun lifetime(lifetime: kotlin.String) = apply { this.lifetime = lifetime } + + /** + * @param promotionId Search for promotions with matching `id` values. You can provide 0 to 250 `id` parameters with different values, which will include promotions that match any of the requested values. + */ + fun promotionId( + promotionId: kotlin.collections.List< + kotlin.String + > + ) = apply { this.promotionId = promotionId } + + /** + * @param include Each time this parameter is specified will add to the list of fields and associated objects returned in the response. All values and field names are lower case. All field names found at the top level of the response are valid values for inclusion. + */ + fun include( + include: kotlin.collections.List< + kotlin.String + > + ) = apply { this.include = include } + + /** + * @param marketRegion Search for promotions associated with the specified `market_region` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. + */ + fun marketRegion( + marketRegion: kotlin.collections.List< + GetPromotionsOperationParams.MarketRegion + > + ) = apply { this.marketRegion = marketRegion } + + /** + * @param membersOnly Specify restrictions to `members_only` values. If this parameter is not supplied, promotions with true or false will be returned in the results. * `true` - Only results with `members_only` equal to true will be returned. * `false` - Only results with `members_only` equal to false will be returned. + */ + fun membersOnly(membersOnly: kotlin.Boolean) = apply { this.membersOnly = membersOnly } + + /** + * @param minAdvancePurchaseDays Search for promotions that have a `min_advance_purchase_days` equal to the passed in value. + */ + fun minAdvancePurchaseDays(minAdvancePurchaseDays: kotlin.String) = apply { this.minAdvancePurchaseDays = minAdvancePurchaseDays } + + /** + * @param minGuestRating Search for promotions that have a `min_guest_rating` equal to or larger than the value. + */ + fun minGuestRating(minGuestRating: kotlin.String) = apply { this.minGuestRating = minGuestRating } + + /** + * @param minStarRating Search for promotions that have a `min_star_rating` equal to or larger than the value. + */ + fun minStarRating(minStarRating: kotlin.String) = apply { this.minStarRating = minStarRating } + + /** + * @param minStay Search for promotions that have a `min_stay` equal to the passed in value. + */ + fun minStay(minStay: kotlin.String) = apply { this.minStay = minStay } + + /** + * @param mobileOnly Specify restrictions to `mobile_only` values. If this parameter is not supplied, promotions with true or false will be returned in the results. * `true` - Only results with `mobile_only` equal to true will be returned. * `false` - Only results with `mobile_only` equal to false will be returned. + */ + fun mobileOnly(mobileOnly: kotlin.Boolean) = apply { this.mobileOnly = mobileOnly } + + /** + * @param productLine Search for promotions with a `product_line` that matches the value. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. + */ + fun productLine( + productLine: kotlin.collections.List< + kotlin.String + > + ) = apply { this.productLine = productLine } + + /** + * @param promotionCriteria Search for promotions that meet the criteria provided. This criteria is defined as: * type,value For now the only type available will be `percentage` but other types will be added in the future. + */ + fun promotionCriteria(promotionCriteria: kotlin.String) = apply { this.promotionCriteria = promotionCriteria } + + /** + * @param propertyId Search for promotions with matching `property_id` values. You can provide 0 to 250 `property_id` parameters with different values, which will include promotions that match any of the requested values. + */ + fun propertyId( + propertyId: kotlin.collections.List< + kotlin.String + > + ) = apply { this.propertyId = propertyId } + + /** + * @param regionId Search for promotions associated with the specified `region_id` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. + */ + fun regionId( + regionId: kotlin.collections.List< + kotlin.String + > + ) = apply { this.regionId = regionId } + + /** + * @param stayEnd Search for all promotions with a `stay_end` date equal to or before the specified date. + */ + fun stayEnd(stayEnd: kotlin.String) = apply { this.stayEnd = stayEnd } + + /** + * @param stayStart Search for all promotions with a `stay_start` date equal to or after the specified date. + */ + fun stayStart(stayStart: kotlin.String) = apply { this.stayStart = stayStart } + + /** + * @param supplySource Search for promotions associated with the specified `supply_source` values. This parameter can be supplied multiple times with different values, which will include promotions that match any of the requested scenarios. * `expedia` - Standard Expedia supply. * `vrbo` - VRBO supply - This option is restricted to partners who have VRBO supply enabled for their profile. See [Vacation Rentals](https://developers.expediagroup.com/docs/rapid/lodging/vacation-rentals) for more information. + */ + fun supplySource( + supplySource: kotlin.collections.List< + kotlin.String + > + ) = apply { this.supplySource = supplySource } + + /** + * @param token Only used for requesting additional pages of data. Provided by the `next` URL in the `Link` response header. + */ + fun token(token: kotlin.String) = apply { this.token = token } + + /** + * @param billingTerms This parameter is to specify the terms of how a resulting booking should be billed. If this field is needed, the value for this will be provided to you separately. + */ + fun billingTerms(billingTerms: kotlin.String) = apply { this.billingTerms = billingTerms } + + /** + * @param partnerPointOfSale This parameter is to specify what point of sale is being used to shop and book. If this field is needed, the value for this will be provided to you separately. + */ + fun partnerPointOfSale(partnerPointOfSale: kotlin.String) = apply { this.partnerPointOfSale = partnerPointOfSale } + + /** + * @param paymentTerms This parameter is to specify what terms should be used when being paid for a resulting booking. If this field is needed, the value for this will be provided to you separately. + */ + fun paymentTerms(paymentTerms: kotlin.String) = apply { this.paymentTerms = paymentTerms } + + /** + * @param platformName This parameter is to specify what platform is being used to shop and book. If this field is needed, the value for this will be provided to you separately. + */ + fun platformName(platformName: kotlin.String) = apply { this.platformName = platformName } + + fun build(): GetPromotionsOperationParams { + val params = + GetPromotionsOperationParams( + customerSessionId = customerSessionId, + language = language!!, + sortBy = sortBy!!, + blockoutDates = blockoutDates, + bookableEnd = bookableEnd, + bookableStart = bookableStart, + campaignId = campaignId, + categoryId = categoryId, + chainId = chainId, + lifetime = lifetime, + promotionId = promotionId, + include = include, + marketRegion = marketRegion, + membersOnly = membersOnly, + minAdvancePurchaseDays = minAdvancePurchaseDays, + minGuestRating = minGuestRating, + minStarRating = minStarRating, + minStay = minStay, + mobileOnly = mobileOnly, + productLine = productLine, + promotionCriteria = promotionCriteria, + propertyId = propertyId, + regionId = regionId, + stayEnd = stayEnd, + stayStart = stayStart, + supplySource = supplySource, + token = token, + billingTerms = billingTerms, + partnerPointOfSale = partnerPointOfSale, + paymentTerms = paymentTerms, + platformName = platformName + ) + + validate(params) + + return params + } + + private fun validate(params: GetPromotionsOperationParams) { + val validator = + Validation + .byDefaultProvider() + .configure() + .messageInterpolator(ParameterMessageInterpolator()) + .buildValidatorFactory() + .validator + + val violations = validator.validate(params) + + if (violations.isNotEmpty()) { + throw PropertyConstraintViolationException( + constraintViolations = violations.map { "${it.propertyPath}: ${it.message}" } + ) + } + } + } + + fun toBuilder() = + Builder( + customerSessionId = customerSessionId, + language = language, + sortBy = sortBy, + blockoutDates = blockoutDates, + bookableEnd = bookableEnd, + bookableStart = bookableStart, + campaignId = campaignId, + categoryId = categoryId, + chainId = chainId, + lifetime = lifetime, + promotionId = promotionId, + include = include, + marketRegion = marketRegion, + membersOnly = membersOnly, + minAdvancePurchaseDays = minAdvancePurchaseDays, + minGuestRating = minGuestRating, + minStarRating = minStarRating, + minStay = minStay, + mobileOnly = mobileOnly, + productLine = productLine, + promotionCriteria = promotionCriteria, + propertyId = propertyId, + regionId = regionId, + stayEnd = stayEnd, + stayStart = stayStart, + supplySource = supplySource, + token = token, + billingTerms = billingTerms, + partnerPointOfSale = partnerPointOfSale, + paymentTerms = paymentTerms, + platformName = platformName + ) + + override fun getHeaders(): Headers = + Headers.build { + customerSessionId?.let { + append("Customer-Session-Id", it) + } + append("Accept", "application/json") + } + + override fun getQueryParams(): Parameters = + Parameters.build { + language?.let { + append("language", it) + } + sortBy?.let { + append("sort_by", it.value) + } + blockoutDates?.let { + append("blockout_dates", it.toString()) + } + bookableEnd?.let { + append("bookable_end", it) + } + bookableStart?.let { + append("bookable_start", it) + } + campaignId?.let { + appendAll("campaign_id", it) + } + categoryId?.let { + appendAll("category_id", it) + } + chainId?.let { + appendAll("chain_id", it) + } + lifetime?.let { + append("lifetime", it) + } + promotionId?.let { + appendAll("promotion_id", it) + } + include?.let { + appendAll("include", it) + } + marketRegion?.let { + appendAll("market_region", it.map { it.value }) + } + membersOnly?.let { + append("members_only", it.toString()) + } + minAdvancePurchaseDays?.let { + append("min_advance_purchase_days", it) + } + minGuestRating?.let { + append("min_guest_rating", it) + } + minStarRating?.let { + append("min_star_rating", it) + } + minStay?.let { + append("min_stay", it) + } + mobileOnly?.let { + append("mobile_only", it.toString()) + } + productLine?.let { + appendAll("product_line", it) + } + promotionCriteria?.let { + append("promotion_criteria", it) + } + propertyId?.let { + appendAll("property_id", it) + } + regionId?.let { + appendAll("region_id", it) + } + stayEnd?.let { + append("stay_end", it) + } + stayStart?.let { + append("stay_start", it) + } + supplySource?.let { + appendAll("supply_source", it) + } + token?.let { + append("token", it) + } + billingTerms?.let { + append("billing_terms", it) + } + partnerPointOfSale?.let { + append("partner_point_of_sale", it) + } + paymentTerms?.let { + append("payment_terms", it) + } + platformName?.let { + append("platform_name", it) + } + } + + override fun getPathParams(): Map = + buildMap { + } +} diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetReservationByItineraryIdOperationParams.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetReservationByItineraryIdOperationParams.kt index fec99c1889..e1eb886974 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetReservationByItineraryIdOperationParams.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetReservationByItineraryIdOperationParams.kt @@ -33,7 +33,7 @@ import javax.validation.constraints.NotNull * @property test The retrieve call has a test header that can be used to return set responses. Passing standard in the Test header will retrieve a test booking, and passing any of the errors listed below will return a stubbed error response that you can use to test your error handling code. Additionally, refer to the Test Request documentation for more details on how these header values are used. * `standard` - Requires valid test booking. * `degraded_response` - Requires valid test booking * `service_unavailable` * `internal_server_error` * @property token Provided as part of the link object and used to maintain state across calls. This simplifies each subsequent call by limiting the amount of information required at each step and reduces the potential for errors. Token values cannot be viewed or changed. * @property email Email associated with the booking. Special characters in the local part or domain should be encoded. (Email is required if the token is not provided the request)
    - * @property include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See the [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. + * @property include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. * `marketing_fee_details` - Displays a more granular view of marketing fees in the response. */ @JsonDeserialize(builder = GetReservationByItineraryIdOperationParams.Builder::class) data class GetReservationByItineraryIdOperationParams @@ -106,7 +106,9 @@ data class GetReservationByItineraryIdOperationParams enum class Include( val value: kotlin.String ) { - HISTORY("history") + HISTORY("history"), + HISTORY_V2("history_v2"), + MARKETING_FEE_DETAILS("marketing_fee_details") } class Builder( @@ -151,7 +153,7 @@ data class GetReservationByItineraryIdOperationParams fun email(email: kotlin.String) = apply { this.email = email } /** - * @param include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See the [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. + * @param include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. * `marketing_fee_details` - Displays a more granular view of marketing fees in the response. */ fun include( include: kotlin.collections.List< diff --git a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetReservationOperationParams.kt b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetReservationOperationParams.kt index 86a88e4d22..acaa236a2f 100644 --- a/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetReservationOperationParams.kt +++ b/code/src/main/kotlin/com/expediagroup/sdk/rapid/operations/GetReservationOperationParams.kt @@ -32,7 +32,7 @@ import javax.validation.constraints.NotNull * @property test The retrieve call has a test header that can be used to return set responses with the following keywords:
    * `standard` - Requires valid test booking. * `degraded_response` - Requires valid test booking * `service_unavailable` * `internal_server_error` * @property affiliateReferenceId The affilliate reference id value. This field supports a maximum of 28 characters. * @property email Email associated with the booking. Special characters in the local part or domain should be encoded.
    - * @property include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See the [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. + * @property include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. * `marketing_fee_details` - Displays a more granular view of marketing fees in the response. */ @JsonDeserialize(builder = GetReservationOperationParams.Builder::class) data class GetReservationOperationParams( @@ -72,7 +72,9 @@ data class GetReservationOperationParams( enum class Include( val value: kotlin.String ) { - HISTORY("history") + HISTORY("history"), + HISTORY_V2("history_v2"), + MARKETING_FEE_DETAILS("marketing_fee_details") } class Builder( @@ -111,7 +113,7 @@ data class GetReservationOperationParams( fun email(email: kotlin.String) = apply { this.email = email } /** - * @param include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See the [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. + * @param include Options for which information to return in the response. The value must be lower case. * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. * `marketing_fee_details` - Displays a more granular view of marketing fees in the response. */ fun include( include: kotlin.collections.List< diff --git a/code/transformedSpecs.yaml b/code/transformedSpecs.yaml index a720f64425..83d318abbd 100644 --- a/code/transformedSpecs.yaml +++ b/code/transformedSpecs.yaml @@ -21,6 +21,9 @@ tags: description: Retrieve existing itineraries or cancel existing rooms. - name: Notifications description: Requests test notifications and undelivered notifications. + - name: Merchandising + description: Information about campaigns, promotions, and other merchandising + opportunities paths: /v3/properties/content: get: @@ -615,6 +618,7 @@ paths: business_model: expedia_collect: true property_collect: false + updated_expedia_collect: true checkin: 24_hour: 24-hour check-in begin_time: 3:00 PM @@ -633,6 +637,12 @@ paths: min_age: 18 checkout: time: 11:00 AM + instructions: The host requests you complete the following cleaning tasks before + checking out:
    Load and start the + dishwasher
    Strip any used beds, gather used + towels, and store extra beds
    Remove personal + items, remove leftover food and drinks, and take out + the trash fees: mandatory: "

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: @@ -930,6 +940,7 @@ paths: business_model: expedia_collect: true property_collect: true + updated_expedia_collect: true rank: 99999999 checkin: begin_time: 4:00 PM @@ -955,6 +966,12 @@ paths: min_age: 21 checkout: time: 10:00 AM + instructions: The host requests you complete the following cleaning tasks before + checking out:
      Load and start the + dishwasher
      Strip any used beds, gather used + towels, and store extra beds
      Remove personal + items, remove leftover food and drinks, and take out + the trash fees: traveler_service: Your credit card statement will show two separate charges, one for the booking amount and property fees and another @@ -1258,6 +1275,7 @@ paths: business_model: expedia_collect: true property_collect: false + updated_expedia_collect: true checkin: 24_hour: 24-hour check-in begin_time: 3:00 PM @@ -1276,6 +1294,12 @@ paths: min_age: 18 checkout: time: 11:00 AM + instructions: The host requests you complete the following cleaning tasks before + checking out:
      Load and start the + dishwasher
      Strip any used beds, gather used + towels, and store extra beds
      Remove personal + items, remove leftover food and drinks, and take out + the trash fees: mandatory: "

      You'll be asked to pay the following charges at the hotel:

      • Deposit: USD 50 per day
      • Resort fee: @@ -1592,6 +1616,7 @@ paths: business_model: expedia_collect: true property_collect: true + updated_expedia_collect: false checkin: 24_hour: 24-hour check-in begin_time: 3:00 PM @@ -1610,6 +1635,12 @@ paths: min_age: 18 checkout: time: 11:00 AM + instructions: The host requests you complete the following cleaning tasks before + checking out:
        Load and start the + dishwasher
        Strip any used beds, gather used + towels, and store extra beds
        Remove personal + items, remove leftover food and drinks, and take out + the trash fees: mandatory: "

        You'll be asked to pay the following charges at the hotel:

        • Deposit: USD 50 per day
        • Resort fee: @@ -2827,8 +2858,8 @@ paths:
          Example of a JSONL file with 2 properties: ``` - {"property_id":"12345","name":"Test Property Name","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":false,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345"},"fr-FR":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":48382,"overall":"3.1","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"73%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838}},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":false},"dates":{"added":"1998-07-19T05:00:00.000Z","updated":"2018-03-22T07:23:14.000Z"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"chain":{"id":"-6","name":"Hyatt Hotels"},"brand":{"id":"2209","name":"Hyatt Place"},"supply_source":"expedia"} - {"property_id":"67890","name":"Test Property Name 2","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":true,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890"},"de-DE":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":7651,"overall":"4.3","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"80%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838}},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":true},"dates":{"added":"1998-07-20T05:00:00.000Z","updated":"2018-03-22T13:33:17.000Z"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"chain":{"id":"-5","name":"Hilton Worldwide"},"brand":{"id":"358","name":"Hampton Inn"},"supply_source":"expedia"} + {"property_id":"12345","name":"Test Property Name","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":false,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345"},"fr-FR":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":48382,"overall":"3.1","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"73%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838}},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":false,"updated_expedia_collect":true},"dates":{"added":"1998-07-19T05:00:00.000Z","updated":"2018-03-22T07:23:14.000Z"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"chain":{"id":"-6","name":"Hyatt Hotels"},"brand":{"id":"2209","name":"Hyatt Place"},"supply_source":"expedia"} + {"property_id":"67890","name":"Test Property Name 2","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":true,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890"},"de-DE":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":7651,"overall":"4.3","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"80%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838}},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":true,"updated_expedia_collect":false},"dates":{"added":"1998-07-20T05:00:00.000Z","updated":"2018-03-22T13:33:17.000Z"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"chain":{"id":"-5","name":"Hilton Worldwide"},"brand":{"id":"358","name":"Hampton Inn"},"supply_source":"expedia"} ``` operationId: getPropertyCatalogFile parameters: @@ -3148,8 +3179,8 @@ paths:
          Example of a JSONL file with 2 properties: ``` - {"property_id":"12345","name":"Test Property Name","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":false,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345"},"fr-FR":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":48382,"overall":"3.1","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"73%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838}},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":false},"checkin":{"24_hour":"24-hour check-in","begin_time":"3:00 PM","end_time":"11:00 PM","instructions":"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />","special_instructions":"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.","min_age":18},"checkout":{"time":"11:00 AM"},"fees":{"mandatory":"

          You'll be asked to pay the following charges at the hotel:

          • Deposit: USD 50 per day
          • Resort fee: USD 29.12 per accommodation, per night
          The hotel resort fee includes:
          • Fitness center access
          • Internet access
          • Phone calls
          • Additional inclusions

          We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

          ","optional":"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
        • Airport shuttle fee: USD 350 per vehicle (one way)
        • Rollaway bed fee: USD 175 per night
        • "},"policies":{"know_before_you_go":"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
        • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
        • Only registered guests are allowed in the guestrooms.
        • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
        "},"attributes":{"general":{"2549":{"id":"2549","name":"No elevators"},"3357":{"id":"3357","name":"Caters to adults only"}},"pets":{"51":{"id":"51","name":"Pets allowed"},"2809":{"id":"2809","name":"Dogs only"},"3321":{"id":"3321","name":"Pet maximum weight in kg is - 24","value":24}}},"amenities":{"9":{"id":"9","name":"Fitness facilities"},"2820":{"id":"2820","name":"Number of indoor pools - 10","value":10}},"images":[{"caption":"Featured Image","hero_image":true,"category":3,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}}}],"onsite_payments":{"currency":"USD","types":{"171":{"id":"171","name":"American Express"}}},"rooms":{"224829":{"id":"224829","name":"Single Room","descriptions":{"overview":"2 Twin Beds
        269-sq-foot (25-sq-meter) room with mountain views

        Internet - Free WiFi
        Entertainment - Flat-screen TV with cable channels
        Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
        Sleep - Premium bedding
        Bathroom - Private bathroom, shower, bathrobes, and free toiletries
        Practical - Safe and desk; cribs/infant beds available on request
        Comfort - Climate-controlled air conditioning and daily housekeeping
        Non-Smoking
        "},"amenities":{"130":{"id":"130","name":"Refrigerator"},"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"}},"images":[{"hero_image":true,"category":21001,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}},"caption":"Guestroom"}],"bed_groups":{"37321":{"id":"37321","description":"1 King Bed","configuration":[{"type":"KingBed","size":"King","quantity":1}]}},"area":{"square_meters":20,"square_feet":215},"views":{"4146":{"id":"4146","name":"Courtyard view"}},"occupancy":{"max_allowed":{"total":5,"children":2,"adults":4},"age_categories":{"Adult":{"name":"Adult","minimum_age":9}}}}},"rates":{"333abc":{"id":"333abc","amenities":{"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"},"2104":{"id":"2104","name":"Full Breakfast"}},"special_offer_description":"Breakfast for 2 - Rate includes the following:\r\n
        • Accommodations as selected
        • \r\n
        • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
        • \r\n
        Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\r\n"}},"dates":{"added":"1998-07-19T05:00:00.000Z","updated":"2018-03-22T07:23:14.000Z"},"descriptions":{"amenities":"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.","dining":"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.","renovations":"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
        • Fitness facilities
        ","national_ratings":"For the benefit of our customers, we have provided a rating based on our rating system.","business_amenities":"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.","rooms":"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.","attractions":"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

        Distances are displayed to the nearest 0.1 mile and kilometer.

        Sogo Department Store - 0.7 km / 0.4 mi
        National Museum of Natural Science - 1.1 km / 0.7 mi
        Shr-Hwa International Tower - 1.4 km / 0.8 mi
        Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
        Taichung Metropolitan Opera House - 1.7 km / 1 mi
        Tiger City Mall - 1.8 km / 1.1 mi
        Maple Garden Park - 1.9 km / 1.2 mi
        National Museum of Fine Arts - 2.1 km / 1.3 mi
        Feng Chia University - 2.4 km / 1.5 mi
        Bao An Temple - 2.5 km / 1.6 mi
        Fengjia Night Market - 2.5 km / 1.6 mi
        Zhonghua Night Market - 2.7 km / 1.7 mi
        Chonglun Park - 2.9 km / 1.8 mi
        Wan He Temple - 2.9 km / 1.8 mi
        Chungyo Department Store - 3.1 km / 1.9 mi

        The nearest airports are:
        Taichung (RMQ) - 12 km / 7.5 mi
        Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
        Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

        ","location":"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.","headline":"Near National Museum of Natural Science","general":"General description"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"airports":{"preferred":{"iata_airport_code":"SGF"}},"themes":{"2337":{"id":"2337","name":"Luxury Hotel"},"2341":{"id":"2341","name":"Spa Hotel"}},"all_inclusive":{"all_rate_plans":true,"some_rate_plans":false,"details":"

        This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

        Activities and facilities/equipment
        Land activities

        • Fitness facilities

        Lessons/classes/games
        • Pilates
        • Yoga

        Entertainment

        • Onsite entertainment and activities
        • Onsite live performances

        "},"tax_id":"AB-012-987-1234-01","chain":{"id":"-6","name":"Hyatt Hotels"},"brand":{"id":"2209","name":"Hyatt Place"},"spoken_languages":{"vi":{"id":"vi","name":"Vietnamese"}},"multi_unit":true,"payment_registration_recommended":false,"vacation_rental_details": {"registry_number": "Property Registration Number 123456","private_host": "true","property_manager": {"name": "Victor","links": {"image": {"method": "GET","href": "https://test-image/test/test/836f1097-fbcf-43b5-bc02-c8ff6658cb90.c1.jpg"}}},"rental_agreement": {"links": {"rental_agreement": {"method": "GET","href": "https://test-link.test.amazonaws.com/rentalconditions_property_d65e7eb5-4a7c-4a80-a8a3-171999f9f444.pdf"}}},"house_rules": ["Children welcome","No pets","No smoking","No parties or events"],"amenities": {"4296": {"id": "4296","name": "Furnished balcony or patio"},"2859": {"id": "2859","name": "Private pool"}},"vrbo_srp_id": "123.1234567.5678910","listing_id": "1234567","listing_number": "5678910","listing_source": "HOMEAWAY_US","listing_unit": "/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60"},"supply_source":"vrbo","registry_number":"Property Registration Number 123456"} - {"property_id":"67890","name":"Test Property Name 2","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":true,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890"},"de-DE":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":7651,"overall":"4.3","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"80%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838},"obfuscated_coordinates":{"latitude":28.339303,"longitude":-81.47791},"obfuscation_required":true},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":true},"checkin":{"24_hour":"24-hour check-in","begin_time":"3:00 PM","end_time":"11:00 PM","instructions":"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />","special_instructions":"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.","min_age":18},"checkout":{"time":"11:00 AM"},"fees":{"mandatory":"

        You'll be asked to pay the following charges at the hotel:

        • Deposit: USD 50 per day
        • Resort fee: USD 29.12 per accommodation, per night
        The hotel resort fee includes:
        • Fitness center access
        • Internet access
        • Phone calls
        • Additional inclusions

        We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

        ","optional":"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
      • Airport shuttle fee: USD 350 per vehicle (one way)
      • Rollaway bed fee: USD 175 per night
      • "},"policies":{"know_before_you_go":"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
      • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
      • Only registered guests are allowed in the guestrooms.
      • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
      "},"attributes":{"general":{"2549":{"id":"2549","name":"No elevators"},"3357":{"id":"3357","name":"Caters to adults only"}},"pets":{"51":{"id":"51","name":"Pets allowed"},"2809":{"id":"2809","name":"Dogs only"},"3321":{"id":"3321","name":"Pet maximum weight in kg is - 24","value":24}}},"amenities":{"9":{"id":"9","name":"Fitness facilities"},"2820":{"id":"2820","name":"Number of indoor pools - 10","value":10}},"images":[{"caption":"Featured Image","hero_image":true,"category":3,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}}}],"onsite_payments":{"currency":"USD","types":{"171":{"id":"171","name":"American Express"}}},"rooms":{"224829":{"id":"224829","name":"Single Room","descriptions":{"overview":"2 Twin Beds
      269-sq-foot (25-sq-meter) room with mountain views

      Internet - Free WiFi
      Entertainment - Flat-screen TV with cable channels
      Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
      Sleep - Premium bedding
      Bathroom - Private bathroom, shower, bathrobes, and free toiletries
      Practical - Safe and desk; cribs/infant beds available on request
      Comfort - Climate-controlled air conditioning and daily housekeeping
      Non-Smoking
      "},"amenities":{"130":{"id":"130","name":"Refrigerator"},"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"}},"images":[{"hero_image":true,"category":21001,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}},"caption":"Guestroom"}],"bed_groups":{"37321":{"id":"37321","description":"1 King Bed","configuration":[{"type":"KingBed","size":"King","quantity":1}]}},"area":{"square_meters":17},"views":{"4134":{"id":"4134","name":"City view"}},"occupancy":{"max_allowed":{"total":3,"children":2,"adults":3},"age_categories":{"ChildAgeA":{"name":"ChildAgeA","minimum_age":3}}}}},"rates":{"333abc":{"id":"333abc","amenities":{"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"},"2104":{"id":"2104","name":"Full Breakfast"}},"special_offer_description":"Breakfast for 2 - Rate includes the following:\r\n
      • Accommodations as selected
      • \r\n
      • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
      • \r\n
      Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\r\n"}},"dates":{"added":"1998-07-20T05:00:00.000Z","updated":"2018-03-22T13:33:17.000Z"},"descriptions":{"amenities":"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.","dining":"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.","renovations":"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
      • Fitness facilities
      ","national_ratings":"For the benefit of our customers, we have provided a rating based on our rating system.","business_amenities":"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.","rooms":"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.","attractions":"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

      Distances are displayed to the nearest 0.1 mile and kilometer.

      Sogo Department Store - 0.7 km / 0.4 mi
      National Museum of Natural Science - 1.1 km / 0.7 mi
      Shr-Hwa International Tower - 1.4 km / 0.8 mi
      Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
      Taichung Metropolitan Opera House - 1.7 km / 1 mi
      Tiger City Mall - 1.8 km / 1.1 mi
      Maple Garden Park - 1.9 km / 1.2 mi
      National Museum of Fine Arts - 2.1 km / 1.3 mi
      Feng Chia University - 2.4 km / 1.5 mi
      Bao An Temple - 2.5 km / 1.6 mi
      Fengjia Night Market - 2.5 km / 1.6 mi
      Zhonghua Night Market - 2.7 km / 1.7 mi
      Chonglun Park - 2.9 km / 1.8 mi
      Wan He Temple - 2.9 km / 1.8 mi
      Chungyo Department Store - 3.1 km / 1.9 mi

      The nearest airports are:
      Taichung (RMQ) - 12 km / 7.5 mi
      Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
      Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

      ","location":"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.","headline":"Near National Museum of Natural Science","general":"General description"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"airports":{"preferred":{"iata_airport_code":"SGF"}},"themes":{"2337":{"id":"2337","name":"Luxury Hotel"},"2341":{"id":"2341","name":"Spa Hotel"}},"all_inclusive":{"all_rate_plans":true,"some_rate_plans":false,"details":"

      This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

      Activities and facilities/equipment
      Land activities

      • Fitness facilities

      Lessons/classes/games
      • Pilates
      • Yoga

      Entertainment

      • Onsite entertainment and activities
      • Onsite live performances

      "},"tax_id":"CD-012-987-1234-02","chain":{"id":"-5","name":"Hilton Worldwide"},"brand":{"id":"358","name":"Hampton Inn"},"spoken_languages":{"en":{"id":"en","name":"English"}},"multi_unit":true,"payment_registration_recommended":true,"vacation_rental_details":{"registry_number":"Property Registration Number 123456","private_host":"true","property_manager":{"name":"John Smith","links":{"image":{"method":"GET","href":"https://example.com/profile.jpg"}}},"rental_agreement":{"links":{"rental_agreement":{"method":"GET","href":"https:/example.com/rentalconditions.pdf"}}},"house_rules":["Children welcome","No pets","No smoking","No parties or events"],"amenities":{"2859":{"id":"2859","name":"Private pool"},"4296":{"id":"4296","name":"Furnished balcony or patio"}},"vrbo_srp_id":"123.1234567.5678910","listing_id":"1234567","listing_number":"5678910","listing_source":"HOMEAWAY_US","listing_unit":"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60"},"supply_source":"vrbo","registry_number":"Property Registration Number 123456"} + {"property_id":"12345","name":"Test Property Name","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":false,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345"},"fr-FR":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":48382,"overall":"3.1","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"73%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838}},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":false,"updated_expedia_collect":false},"checkin":{"24_hour":"24-hour check-in","begin_time":"3:00 PM","end_time":"11:00 PM","instructions":"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />","special_instructions":"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.","min_age":18},"checkout":{"time":"11:00 AM","instructions":"The host requests you complete the following cleaning tasks before checking out:
      Load and start the dishwasher
      Strip any used beds, gather used towels, and store extra beds
      Remove personal items, remove leftover food and drinks, and take out the trash"},"fees":{"mandatory":"

      You'll be asked to pay the following charges at the hotel:

      • Deposit: USD 50 per day
      • Resort fee: USD 29.12 per accommodation, per night
      The hotel resort fee includes:
      • Fitness center access
      • Internet access
      • Phone calls
      • Additional inclusions

      We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

      ","optional":"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
    • Airport shuttle fee: USD 350 per vehicle (one way)
    • Rollaway bed fee: USD 175 per night
    • "},"policies":{"know_before_you_go":"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
    • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
    • Only registered guests are allowed in the guestrooms.
    • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
    "},"attributes":{"general":{"2549":{"id":"2549","name":"No elevators"},"3357":{"id":"3357","name":"Caters to adults only"}},"pets":{"51":{"id":"51","name":"Pets allowed"},"2809":{"id":"2809","name":"Dogs only"},"3321":{"id":"3321","name":"Pet maximum weight in kg is - 24","value":24}}},"amenities":{"9":{"id":"9","name":"Fitness facilities"},"2820":{"id":"2820","name":"Number of indoor pools - 10","value":10}},"images":[{"caption":"Featured Image","hero_image":true,"category":3,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}}}],"onsite_payments":{"currency":"USD","types":{"171":{"id":"171","name":"American Express"}}},"rooms":{"224829":{"id":"224829","name":"Single Room","descriptions":{"overview":"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    "},"amenities":{"130":{"id":"130","name":"Refrigerator"},"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"}},"images":[{"hero_image":true,"category":21001,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}},"caption":"Guestroom"}],"bed_groups":{"37321":{"id":"37321","description":"1 King Bed","configuration":[{"type":"KingBed","size":"King","quantity":1}]}},"area":{"square_meters":20,"square_feet":215},"views":{"4146":{"id":"4146","name":"Courtyard view"}},"occupancy":{"max_allowed":{"total":5,"children":2,"adults":4},"age_categories":{"Adult":{"name":"Adult","minimum_age":9}}}}},"rates":{"333abc":{"id":"333abc","amenities":{"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"},"2104":{"id":"2104","name":"Full Breakfast"}},"special_offer_description":"Breakfast for 2 - Rate includes the following:\r\n
    • Accommodations as selected
    • \r\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \r\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\r\n"}},"dates":{"added":"1998-07-19T05:00:00.000Z","updated":"2018-03-22T07:23:14.000Z"},"descriptions":{"amenities":"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.","dining":"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.","renovations":"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    ","national_ratings":"For the benefit of our customers, we have provided a rating based on our rating system.","business_amenities":"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.","rooms":"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.","attractions":"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    ","location":"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.","headline":"Near National Museum of Natural Science","general":"General description"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"airports":{"preferred":{"iata_airport_code":"SGF"}},"themes":{"2337":{"id":"2337","name":"Luxury Hotel"},"2341":{"id":"2341","name":"Spa Hotel"}},"all_inclusive":{"all_rate_plans":true,"some_rate_plans":false,"details":"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    "},"tax_id":"AB-012-987-1234-01","chain":{"id":"-6","name":"Hyatt Hotels"},"brand":{"id":"2209","name":"Hyatt Place"},"spoken_languages":{"vi":{"id":"vi","name":"Vietnamese"}},"multi_unit":true,"payment_registration_recommended":false,"vacation_rental_details": {"registry_number": "Property Registration Number 123456","private_host": "true","property_manager": {"name": "Victor","links": {"image": {"method": "GET","href": "https://test-image/test/test/836f1097-fbcf-43b5-bc02-c8ff6658cb90.c1.jpg"}}},"rental_agreement": {"links": {"rental_agreement": {"method": "GET","href": "https://test-link.test.amazonaws.com/rentalconditions_property_d65e7eb5-4a7c-4a80-a8a3-171999f9f444.pdf"}}},"house_rules": ["Children welcome","No pets","No smoking","No parties or events"],"amenities": {"4296": {"id": "4296","name": "Furnished balcony or patio"},"2859": {"id": "2859","name": "Private pool"}},"vrbo_srp_id": "123.1234567.5678910","listing_id": "1234567","listing_number": "5678910","listing_source": "HOMEAWAY_US","listing_unit": "/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60"},"supply_source":"vrbo","registry_number":"Property Registration Number 123456"} + {"property_id":"67890","name":"Test Property Name 2","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":true,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890"},"de-DE":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":7651,"overall":"4.3","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"80%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838},"obfuscated_coordinates":{"latitude":28.339303,"longitude":-81.47791},"obfuscation_required":true},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":true,"updated_expedia_collect":true},"checkin":{"24_hour":"24-hour check-in","begin_time":"3:00 PM","end_time":"11:00 PM","instructions":"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />","special_instructions":"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.","min_age":18},"checkout":{"time":"11:00 AM","instructions":"The host requests you complete the following cleaning tasks before checking out:
    Load and start the dishwasher
    Strip any used beds, gather used towels, and store extra beds
    Remove personal items, remove leftover food and drinks, and take out the trash"},"fees":{"mandatory":"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    ","optional":"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • "},"policies":{"know_before_you_go":"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • "},"attributes":{"general":{"2549":{"id":"2549","name":"No elevators"},"3357":{"id":"3357","name":"Caters to adults only"}},"pets":{"51":{"id":"51","name":"Pets allowed"},"2809":{"id":"2809","name":"Dogs only"},"3321":{"id":"3321","name":"Pet maximum weight in kg is - 24","value":24}}},"amenities":{"9":{"id":"9","name":"Fitness facilities"},"2820":{"id":"2820","name":"Number of indoor pools - 10","value":10}},"images":[{"caption":"Featured Image","hero_image":true,"category":3,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}}}],"onsite_payments":{"currency":"USD","types":{"171":{"id":"171","name":"American Express"}}},"rooms":{"224829":{"id":"224829","name":"Single Room","descriptions":{"overview":"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    "},"amenities":{"130":{"id":"130","name":"Refrigerator"},"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"}},"images":[{"hero_image":true,"category":21001,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}},"caption":"Guestroom"}],"bed_groups":{"37321":{"id":"37321","description":"1 King Bed","configuration":[{"type":"KingBed","size":"King","quantity":1}]}},"area":{"square_meters":17},"views":{"4134":{"id":"4134","name":"City view"}},"occupancy":{"max_allowed":{"total":3,"children":2,"adults":3},"age_categories":{"ChildAgeA":{"name":"ChildAgeA","minimum_age":3}}}}},"rates":{"333abc":{"id":"333abc","amenities":{"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"},"2104":{"id":"2104","name":"Full Breakfast"}},"special_offer_description":"Breakfast for 2 - Rate includes the following:\r\n
    • Accommodations as selected
    • \r\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \r\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\r\n"}},"dates":{"added":"1998-07-20T05:00:00.000Z","updated":"2018-03-22T13:33:17.000Z"},"descriptions":{"amenities":"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.","dining":"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.","renovations":"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    ","national_ratings":"For the benefit of our customers, we have provided a rating based on our rating system.","business_amenities":"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.","rooms":"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.","attractions":"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    ","location":"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.","headline":"Near National Museum of Natural Science","general":"General description"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"airports":{"preferred":{"iata_airport_code":"SGF"}},"themes":{"2337":{"id":"2337","name":"Luxury Hotel"},"2341":{"id":"2341","name":"Spa Hotel"}},"all_inclusive":{"all_rate_plans":true,"some_rate_plans":false,"details":"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    "},"tax_id":"CD-012-987-1234-02","chain":{"id":"-5","name":"Hilton Worldwide"},"brand":{"id":"358","name":"Hampton Inn"},"spoken_languages":{"en":{"id":"en","name":"English"}},"multi_unit":true,"payment_registration_recommended":true,"vacation_rental_details":{"registry_number":"Property Registration Number 123456","private_host":"true","property_manager":{"name":"John Smith","links":{"image":{"method":"GET","href":"https://example.com/profile.jpg"}}},"rental_agreement":{"links":{"rental_agreement":{"method":"GET","href":"https:/example.com/rentalconditions.pdf"}}},"house_rules":["Children welcome","No pets","No smoking","No parties or events"],"amenities":{"2859":{"id":"2859","name":"Private pool"},"4296":{"id":"4296","name":"Furnished balcony or patio"}},"vrbo_srp_id":"123.1234567.5678910","listing_id":"1234567","listing_number":"5678910","listing_source":"HOMEAWAY_US","listing_unit":"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60"},"supply_source":"vrbo","registry_number":"Property Registration Number 123456"} ``` operationId: getPropertyContentFile parameters: @@ -5011,6 +5042,13 @@ paths: details charges applied to the entire stay (each check-in). operationId: getAvailability parameters: + - name: Campaign-Id + in: header + description: > + The Merchandising `Campaign-Id` that was involved in the traveler + shopping for these properties. + schema: + type: string - name: Customer-Ip in: header description: > @@ -5068,7 +5106,7 @@ paths: required: true schema: type: string - example: 2025-06-01 + example: 2026-03-01 - name: checkout in: query description: > @@ -5078,7 +5116,7 @@ paths: required: true schema: type: string - example: 2025-06-03 + example: 2026-03-03 - name: currency in: query description: | @@ -5292,6 +5330,9 @@ paths: * `loyalty` - Filters results to only show rates that are eligible for loyalty points. + + * `deal` - Filters results to only show rates that have a promotion + that is of the type deal. style: form explode: true schema: @@ -5302,6 +5343,8 @@ paths: - refundable - expedia_collect - property_collect + - loyalty + - deal examples: Optional: value: null @@ -5316,6 +5359,8 @@ paths: * `sale_scenario.mobile_promotion` - Enable the `mobile_promotion` flag under the `room.rate.sale_scenario` section of the response. * `rooms.rates.marketing_fee_incentives` - When a rate has a marketing fee incentive applied, the response will include the `marketing_fee_incentives` array if this flag is provided in the request. * `rooms.rates.current_refundability` - Displays the current `refundability` of a rate. + * `rooms.rates.holdable` - Enables the `holdable` flag on the response to indicate whether the rate supports [Booking Hold and Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume). + * `rooms.rates.marketing_fee_details` - Displays a more granular view of marketing fees in the response. schema: type: array items: @@ -5325,6 +5370,8 @@ paths: - sale_scenario.mobile_promotion - rooms.rates.marketing_fee_incentives - rooms.rates.current_refundability + - rooms.rates.holdable + - rooms.rates.marketing_fee_details examples: Optional: value: null @@ -5575,10 +5622,10 @@ paths: currency: USD marketing_fee: billable_currency: - value: "15.00" + value: "18.00" currency: CAD request_currency: - value: "10.00" + value: "12.00" currency: USD gross_profit: billable_currency: @@ -5623,6 +5670,35 @@ paths: request_currency: value: "3.00" currency: USD + marketing_fee_details: + base: + billable_currency: + value: "3.50" + currency: CAD + request_currency: + value: "2.33" + currency: USD + overrides: + billable_currency: + value: "10.00" + currency: CAD + request_currency: + value: "6.67" + currency: USD + incentives: + billable_currency: + value: "1.50" + currency: CAD + request_currency: + value: "1.00" + currency: USD + other: + billable_currency: + value: "3.00" + currency: CAD + request_currency: + value: "2.00" + currency: USD 1-7,10: nightly: - - type: base_rate @@ -5713,6 +5789,28 @@ paths: request_currency: value: "3.00" currency: USD + marketing_fee_details: + base: + billable_currency: + value: "3.50" + currency: CAD + request_currency: + value: "2.33" + currency: USD + overrides: + billable_currency: + value: "10.00" + currency: CAD + request_currency: + value: "6.67" + currency: USD + incentives: + billable_currency: + value: "1.50" + currency: CAD + request_currency: + value: "1.00" + currency: USD promotions: value_adds: 123abc: @@ -6336,7 +6434,7 @@ paths: If specified must also specify `checkout`. schema: type: string - example: 2025-06-01 + example: 2026-03-01 - name: checkout in: query description: > @@ -6350,7 +6448,7 @@ paths: If specified must also specify `checkin`.
    schema: type: string - example: 2025-06-03 + example: 2026-03-03 - name: exclusion in: query description: > @@ -6409,6 +6507,9 @@ paths: * `loyalty` - Filters results to only show rates that are eligible for loyalty points. + + * `deal` - Filters results to only show rates that have a promotion + that is of the type deal. style: form explode: true schema: @@ -6419,6 +6520,8 @@ paths: - refundable - expedia_collect - property_collect + - loyalty + - deal examples: Optional: value: null @@ -6613,6 +6716,7 @@ paths: status: available available_rooms: 12 refundable: true + holdable: true member_deal_available: true sale_scenario: package: false @@ -7227,6 +7331,7 @@ paths: Available Example: value: status: available + holdable: true occupancy_pricing: "2": nightly: @@ -7435,10 +7540,10 @@ paths: currency: USD marketing_fee: billable_currency: - value: "215.00" - currency: USD + value: "18.00" + currency: CAD request_currency: - value: "215.00" + value: "12.00" currency: USD gross_profit: billable_currency: @@ -7469,6 +7574,35 @@ paths: request_currency: value: "10.00" currency: USD + marketing_fee_details: + base: + billable_currency: + value: "3.50" + currency: CAD + request_currency: + value: "2.33" + currency: USD + overrides: + billable_currency: + value: "10.00" + currency: CAD + request_currency: + value: "6.67" + currency: USD + incentives: + billable_currency: + value: "1.50" + currency: CAD + request_currency: + value: "1.00" + currency: USD + other: + billable_currency: + value: "3.00" + currency: CAD + request_currency: + value: "2.00" + currency: USD links: additional_rates: method: GET @@ -8035,7 +8169,7 @@ paths: schema: type: string format: date - example: 2025-06-15 + example: 2026-03-15 - name: end_date in: query description: > @@ -8046,7 +8180,7 @@ paths: schema: type: string format: date - example: 2025-12-17 + example: 2026-09-17 responses: "200": description: OK @@ -8736,10 +8870,20 @@ paths: value: test@example.com - name: include in: query - description: | - Options for which information to return in the response. The value must be lower case. - * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. - * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See the [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. + description: > + Options for which information to return in the response. The value + must be lower case. + + * `history` - Include itinerary history, showing details of the + changes made to this itinerary. Changes + from the property/supplier have an event_source equal to `other` in the response. + * `history_v2` - Include itinerary history, showing details of the + changes made to this itinerary. Changes + from the property/supplier have an event_source equal to `supplier` in the response. See + [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) + for details. + * `marketing_fee_details` - Displays a more granular view of + marketing fees in the response. required: false schema: type: array @@ -8747,6 +8891,8 @@ paths: type: string enum: - history + - history_v2 + - marketing_fee_details examples: Optional: value: null @@ -8947,7 +9093,191 @@ paths: property: method: GET href: https://www.example.com?key=123abd456 - travel_purpose: leisure + travel_purpose: business + trader_information: + traders: + - name: Test Property Name + address: + line_1: 123 Main St + city: Springfield + state_province_code: MO + postal_code: "65804" + country_code: US + business_register_name: A Real Registry + business_register_number: 72973910d + self_certification: true + phone: 1-417-555-1212 + right_to_withdraw_message: > + The right of withdrawal under European consumer + law does not apply when you book + + accommodation. Supplier cancellation policy will + apply + terms_and_conditions: https://forever.travel-assets.com/flex/flexmanager/mediaasset/618796-0_2-UnitedKingdom_en.pdf + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + invoicing: + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + point_of_sale_display: Global Travel Site + email: chucktesta@mydomain.com + vat_number: "1234567890" + Itineraries with Property Collect: + value: + - itinerary_id: "8999989898988" + property_id: "8150374" + links: + cancel: + method: DELETE + href: /v3/itineraries/8999989898988?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + non_vat_expedia_invoice: + method: GET + href: /v3/itineraries/8999989898988/invoice?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + email: smith@example.com + phone: + country_code: "1" + area_code: "487" + number: "5550077" + rooms: + - id: "926784314" + confirmation_id: + expedia: "1234567890" + property: BEF23123AA + bed_group_id: d395b56d-d31d-4a84-ad2b-66820b1d48e2 + checkin: 2018-09-21 + checkout: 2018-09-23 + number_of_adults: 2 + child_ages: + - 2 + - 3 + given_name: Givenne + family_name: Nameo + status: booked + special_request: Please give me extra towels. + smoking: false + rate: + id: "035943984" + merchant_of_record: property + refundable: true + cancel_refund: + amount: -65.98 + currency: USD + amenities: + - "12345" + - "678" + - "9999" + promotions: + value_adds: + 123abc: + id: 123abc + description: 10 USD credit on activities and sports for your stay. + 3x4mp13: + id: 3x4mp13 + description: 20% discount on theme park tickets purchased through the concierge + desk. + cancel_penalties: + - start: 2018-01-01T01:01:01.000-08:00 + end: 2018-12-12T01:01:01.000-08:00 + amount: "250.75" + currency: USD + nonrefundable_date_ranges: + - start: 2022-02-02 + end: 2022-02-02 + deposits: + - currency: USD + value: "220.75" + due: 2018-12-12T01:01:01.000-08:00 + pricing: + nightly: + - - type: base_rate + value: "111.23" + currency: USD + - type: sales_tax + value: "11.12" + currency: USD + - - type: base_rate + value: "111.23" + currency: USD + - type: sales_tax + value: "11.12" + currency: USD + stay: + - type: base_rate + value: "123.45" + currency: USD + totals: + inclusive: + billable_currency: + value: "368.15" + currency: USD + exclusive: + billable_currency: + value: "345.91" + currency: USD + marketing_fee: + billable_currency: + value: "7.75" + currency: USD + property_fees: + billable_currency: + value: "36.95" + currency: USD + fees: + mandatory_fee: + billable_currency: + value: "5.00" + currency: USD + resort_fee: + billable_currency: + value: "20.00" + currency: USD + mandatory_tax: + billable_currency: + value: "11.95" + currency: USD + links: + cancel: + method: DELETE + href: /v3/itineraries/8999989898988/rooms/d08572fc-82d2-4d5d-ad30-60f5be7fb53e?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + change: + method: PUT + href: /v3/itineraries/8999989898988/rooms/d08572fc-82d2-4d5d-ad30-60f5be7fb53e?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + shop_for_change: + method: GET + href: /v3/properties/8150374/availability?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + billing_contact: + given_name: John + family_name: Smith + address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + adjustment: + value: -100 + type: base_rate + currency: USD + creation_date_time: 2017-08-17T13:31:15.523Z + affiliate_reference_id: 4480ABC + affiliate_metadata: This booking was made with EPS. + conversations: + links: + property: + method: GET + href: https://www.example.com?key=123abd456 + travel_purpose: business trader_information: traders: - name: Test Property Name @@ -8968,6 +9298,41 @@ paths: accommodation. Supplier cancellation policy will apply terms_and_conditions: https://forever.travel-assets.com/flex/flexmanager/mediaasset/618796-0_2-UnitedKingdom_en.pdf + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + additional_handling: + authorized_expenses: total_plus_incidentals + specified_incidental_expenses: + - breakfast + - internet + total_charges_allowed: + value: "875.00" + currency: USD + is_cvc_required: true + authorizing_company: Conferma + card_contact: + email: chucktesta@mydomain.com + phone: + country_code: "1" + area_code: "555" + number: "5555555" + payment_allowable_period_start: 2024-01-01 + payment_allowable_period_end: 2025-08-01 + invoicing: + consent_to_share: true + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + email: chucktesta@mydomain.com + vat_number: "1234567890" Itinerary with History and Change - Extend Stay: value: - itinerary_id: "8999989898988" @@ -9109,6 +9474,41 @@ paths: method: GET href: https://www.example.com?key=123abd456 travel_purpose: unspecified + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + additional_handling: + authorized_expenses: total_plus_incidentals + specified_incidental_expenses: + - breakfast + - internet + total_charges_allowed: + value: "875.00" + currency: USD + is_cvc_required: true + authorizing_company: Conferma + card_contact: + email: chucktesta@mydomain.com + phone: + country_code: "1" + area_code: "555" + number: "5555555" + payment_allowable_period_start: 2024-01-01 + payment_allowable_period_end: 2025-08-01 + invoicing: + consent_to_share: true + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + email: chucktesta@mydomain.com + vat_number: "1234567890" itinerary_history: - history_id: "802737048" event_timestamp: 2017-09-17T13:31:15.523Z @@ -9437,12 +9837,47 @@ paths: method: GET href: https://www.example.com?key=123abd456 travel_purpose: unspecified - itinerary_history: - - history_id: "802737048" - event_timestamp: 2017-09-17T13:31:15.523Z - event_type: adjustment - amount: - value: "-32.10" + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + additional_handling: + authorized_expenses: total_plus_incidentals + specified_incidental_expenses: + - breakfast + - internet + total_charges_allowed: + value: "875.00" + currency: USD + is_cvc_required: true + authorizing_company: Conferma + card_contact: + email: chucktesta@mydomain.com + phone: + country_code: "1" + area_code: "555" + number: "5555555" + payment_allowable_period_start: 2024-01-01 + payment_allowable_period_end: 2025-08-01 + invoicing: + consent_to_share: true + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + email: chucktesta@mydomain.com + vat_number: "1234567890" + itinerary_history: + - history_id: "802737048" + event_timestamp: 2017-09-17T13:31:15.523Z + event_type: adjustment + amount: + value: "-32.10" currency: USD agent_id: "10203" room_history: @@ -9805,7 +10240,38 @@ paths: property: method: GET href: https://www.example.com?key=123abd456 - travel_purpose: leisure + travel_purpose: business + additional_handling: + authorized_expenses: total_plus_incidentals + specified_incidental_expenses: + - breakfast + - internet + total_charges_allowed: + value: "875.00" + currency: USD + is_cvc_required: true + authorizing_company: Conferma + card_contact: + email: chucktesta@mydomain.com + phone: + country_code: "1" + area_code: "555" + number: "5555555" + payment_allowable_period_start: 2024-01-01 + payment_allowable_period_end: 2025-08-01 + invoicing: + consent_to_share: true + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + email: chucktesta@mydomain.com + vat_number: "1234567890" trader_information: traders: - name: Test Property Name @@ -10756,6 +11222,171 @@ paths: application/json: schema: $ref: "#/components/schemas/CreateItineraryRequest" + examples: + Create Booking with Credit Card: + value: + affiliate_reference_id: 4480ABC + hold: false + email: john@example.com + phone: + country_code: "1" + area_code: "487" + number: "5550077" + rooms: + - given_name: John + family_name: Smith + smoking: false + special_request: Top floor or away from street please + loyalty_id: ABC123 + payments: + - type: customer_card + number: "4111111111111111" + security_code: "123" + expiration_month: "08" + expiration_year: "2025" + billing_contact: + given_name: John + family_name: Smith + address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + enrollment_date: 2018-09-15 + third_party_authentication: + cavv: jELUbgG+Tgj0AREBDMLeCad+oIs= + eci: "05" + three_ds_version: 2.2.0 + ds_transaction_id: ac01cc2b-c1a1-4981-8c6f-400d4eec88de + pa_res_status: Y + ve_res_status: C + xid: 47133847-13be-4ae3-9be9-e4053b9c83c0 + cavv_algorithm: "3" + ucaf_indicator: "0" + affiliate_metadata: data_point_1:123|data_point2:This is data. + tax_registration_number: "12345678910" + traveler_handling_instructions: Please use the card provided for payment. Avoid + cancelation as this is for a corporate traveler. Contact + traveler if any issues. + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + Create Booking with Virtual Card: + value: + affiliate_reference_id: 4480ABC + hold: false + email: john@example.com + phone: + country_code: "1" + area_code: "487" + number: "5550077" + rooms: + - given_name: John + family_name: Smith + smoking: false + special_request: Top floor or away from street please + loyalty_id: ABC123 + payments: + - type: virtual_card + number: "4111111111111111" + security_code: "123" + expiration_month: "08" + expiration_year: "2025" + billing_contact: + given_name: John + family_name: Smith + address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + additional_handling: + authorized_expenses: total_plus_incidentals + specified_incidental_expenses: + - breakfast + - internet + total_charges_allowed: + value: "875.00" + currency: USD + is_cvc_required: true + authorizing_company: Conferma + card_contact: + email: chucktesta@mydomain.com + phone: + country_code: "1" + area_code: "555" + number: "5555555" + payment_allowable_period_start: 2024-01-01 + payment_allowable_period_end: 2025-08-01 + invoicing: + consent_to_share: true + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + email: chucktesta@mydomain.com + vat_number: "1234567890" + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + Create Booking with Possible Sanctions: + value: + affiliate_reference_id: ABC8388 + hold: false + email: possibly@example.com + phone: + country_code: "1" + area_code: "487" + number: "5550077" + rooms: + - given_name: Possibly + family_name: Sanctioned + sensitive_traveler_details: + - middle_name: Clarifying + date_of_birth: 1963-12-04 + address: + line_1: 5555 21st St + line_2: 5th Floor + line_3: Unit 532 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + smoking: false + special_request: Please review my sensitive traveler details to show that I'm + not sanctioned. + loyalty_id: ABC123 + payments: + - type: customer_card + number: "4111111111111111" + security_code: "123" + expiration_month: "08" + expiration_year: "2025" + billing_contact: + given_name: John + family_name: Smith + address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + enrollment_date: 2018-09-15 required: true responses: "201": @@ -10890,6 +11521,17 @@ paths: - name: country_code type: body value: ABCD + Invalid Address Example: + value: + type: invalid_input + message: An invalid request was sent in, please check the nested errors for + details. + errors: + - type: rooms.address.line_1.invalid + message: Address line 1 is required. + fields: + - name: line_1 + type: body Duplicate Itinerary Example: value: type: invalid_input @@ -11236,10 +11878,20 @@ paths: value: test@example.com - name: include in: query - description: | - Options for which information to return in the response. The value must be lower case. - * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `other` in the response. - * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes from the property/supplier have an event_source equal to `supplier` in the response. See the [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) for details. + description: > + Options for which information to return in the response. The value + must be lower case. + + * `history` - Include itinerary history, showing details of the + changes made to this itinerary. Changes + from the property/supplier have an event_source equal to `other` in the response. + * `history_v2` - Include itinerary history, showing details of the + changes made to this itinerary. Changes + from the property/supplier have an event_source equal to `supplier` in the response. See + [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) + for details. + * `marketing_fee_details` - Displays a more granular view of + marketing fees in the response. required: false schema: type: array @@ -11247,6 +11899,8 @@ paths: type: string enum: - history + - history_v2 + - marketing_fee_details examples: Optional: value: null @@ -11443,7 +12097,204 @@ paths: property: method: GET href: https://www.example.com?key=123abd456 - travel_purpose: leisure + travel_purpose: business + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + invoicing: + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + point_of_sale_display: Global Travel Site + email: chucktesta@mydomain.com + vat_number: "1234567890" + Itinerary No History with Property Collect: + value: + itinerary_id: "8999989898988" + property_id: "8150374" + links: + cancel: + method: DELETE + href: /v3/itineraries/8999989898988?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + email: smith@example.com + phone: + country_code: "1" + area_code: "487" + number: "5550077" + rooms: + - id: "926784314" + confirmation_id: + expedia: "1234567890" + property: BEF23123AA + bed_group_id: d395b56d-d31d-4a84-ad2b-66820b1d48e2 + checkin: 2018-09-21 + checkout: 2018-09-23 + number_of_adults: 2 + child_ages: + - 2 + - 3 + given_name: Givenne + family_name: Nameo + status: booked + special_request: Please give me extra towels. + smoking: false + loyalty_id: ABC123 + rate: + id: "035943984" + merchant_of_record: expedia + refundable: true + cancel_refund: + amount: -65.98 + currency: USD + amenities: + - "12345" + - "678" + - "9999" + promotions: + value_adds: + 123abc: + id: 123abc + description: 10 USD credit on activities and sports for your stay. + 3x4mp13: + id: 3x4mp13 + description: 20% discount on theme park tickets purchased through the concierge + desk. + cancel_penalties: + - start: 2018-01-01T01:01:01.000-08:00 + end: 2018-12-12T01:01:01.000-08:00 + amount: "250.75" + currency: USD + nonrefundable_date_ranges: + - start: 2022-02-02 + end: 2022-02-02 + deposits: + - currency: USD + value: "220.75" + due: 2018-12-12T01:01:01.000-08:00 + pricing: + nightly: + - - type: base_rate + value: "111.23" + currency: USD + - type: sales_tax + value: "11.12" + currency: USD + - - type: base_rate + value: "111.23" + currency: USD + - type: sales_tax + value: "11.12" + currency: USD + stay: + - type: base_rate + value: "123.45" + currency: USD + totals: + inclusive: + billable_currency: + value: "368.15" + currency: USD + exclusive: + billable_currency: + value: "345.91" + currency: USD + marketing_fee: + billable_currency: + value: "7.75" + currency: USD + property_fees: + billable_currency: + value: "36.95" + currency: USD + fees: + mandatory_fee: + billable_currency: + value: "5.00" + currency: USD + resort_fee: + billable_currency: + value: "20.00" + currency: USD + mandatory_tax: + billable_currency: + value: "11.95" + currency: USD + links: + cancel: + method: DELETE + href: /v3/itineraries/8999989898988/rooms/d08572fc-82d2-4d5d-ad30-60f5be7fb53e?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + change: + method: PUT + href: /v3/itineraries/8999989898988/rooms/d08572fc-82d2-4d5d-ad30-60f5be7fb53e?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + shop_for_change: + method: GET + href: /v3/properties/8150374/availability?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + billing_contact: + given_name: John + family_name: Smith + address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + adjustment: + value: -100 + type: base_rate + currency: USD + creation_date_time: 2017-08-17T13:31:15.523Z + affiliate_reference_id: 4480ABC + affiliate_metadata: This booking was made with EPS. + conversations: + links: + property: + method: GET + href: https://www.example.com?key=123abd456 + travel_purpose: business + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + additional_handling: + authorized_expenses: total_plus_incidentals + specified_incidental_expenses: + - breakfast + - internet + total_charges_allowed: + value: "875.00" + currency: USD + is_cvc_required: true + authorizing_company: Conferma + card_contact: + email: chucktesta@mydomain.com + phone: + country_code: "1" + area_code: "555" + number: "5555555" + payment_allowable_period_start: 2024-01-01 + payment_allowable_period_end: 2025-08-01 + invoicing: + consent_to_share: true + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + email: chucktesta@mydomain.com + vat_number: "1234567890" Itinerary with History: value: itinerary_id: "8999989898988" @@ -11588,6 +12439,10 @@ paths: method: GET href: https://www.example.com?key=123abd456 travel_purpose: unspecified + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true itinerary_history: - history_id: "802737048" event_timestamp: 2017-09-17T13:31:15.523Z @@ -11916,6 +12771,10 @@ paths: method: GET href: https://www.example.com?key=123abd456 travel_purpose: unspecified + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true itinerary_history: - history_id: "802737048" event_timestamp: 2017-09-17T13:31:15.523Z @@ -12278,7 +13137,7 @@ paths: property: method: GET href: https://www.example.com?key=123abd456 - travel_purpose: leisure + travel_purpose: business impacted_fields: - rooms.rate.cancel_refund - rooms.rate.refundable @@ -14720,8 +15579,9 @@ paths: summary: Change details of a room. description: > This link will be available in the retrieve response. Changes in smoking - preference and special request will be passed along to the property and - are not guaranteed. + preference and special request will be + + passed along to the property and are not guaranteed. operationId: changeRoomDetails parameters: - name: Customer-Ip @@ -14794,20 +15654,54 @@ paths: in: query description: > Provided as part of the link object and used to maintain state - across calls. This simplifies each subsequent call by limiting the - amount of information required at each step and reduces the - potential for errors. Token values cannot be viewed or changed. + across calls. This simplifies each + + subsequent call by limiting the amount of information required at + each step and reduces the potential for + + errors. Token values cannot be viewed or changed. required: true schema: type: string requestBody: - description: The request body is required, but only the fields that are being - changed need to be passed in. Fields that are not being changed should - not be included in the request body. + description: > + The request body is required, but only the fields that are being + changed need to be passed in. Fields that + + are not being changed should not be included in the request body. content: application/json: schema: $ref: "#/components/schemas/ChangeRoomDetailsRequest" + examples: + Name Change: + value: + given_name: Cindy + family_name: Smith + General Change: + value: + given_name: Cindy + family_name: Smith + smoking: false + special_request: Update - Please may I have a room close to the elevator? + loyalty: + member_id: ABD123 + program_id: SN + Sanctions Screening: + value: + given_name: Possibly + family_name: Sanctioned + sensitive_traveler_details: + middle_name: Clarifying + date_of_birth: 1963-12-04 + address: + line_1: 5555 21st St + line_2: 5th Floor + line_3: Unit 532 + city: Seattle + state_province_code: WA + postal_code: 98121 + country_code: US required: true responses: "202": @@ -16589,7 +17483,6 @@ paths: tags: - getChainReference summary: Chain Reference ***DEPRECATED*** - deprecated: true description: > ***DEPRECATED*** Please use `/references/chains` @@ -16878,6 +17771,7 @@ paths: example: type: service_unavailable message: This service is currently unavailable. + deprecated: true security: - rapidAuth: [] /v3/references/chains: @@ -20268,23 +21162,1334 @@ paths: type: path security: - rapidAuth: [] -components: - schemas: - PropertyContent: - type: object - properties: - property_id: - type: string - description: Unique Expedia property ID. - name: - type: string - description: Property name. - address: - $ref: "#/components/schemas/Address" - ratings: - $ref: "#/components/schemas/Ratings" - location: - $ref: "#/components/schemas/Location" + /v3/campaigns: + get: + tags: + - getCampaigns + summary: Campaigns Search + description: | + Search for campaigns + operationId: getCampaigns + parameters: + - name: Customer-Session-Id + in: header + description: > + Insert your own unique value for each user session, beginning with + the first API call. Continue to pass the + + same value for each subsequent API call during the user's session, + using a new value for every new customer + + session.
    + + Including this value greatly eases EPS's internal debugging process + for issues with partner requests, as it + + explicitly links together request paths for individual user's + session. + schema: + type: string + - name: language + in: query + description: > + Desired language for the response as a subset of BCP47 format that + only uses hyphenated pairs of two-digit + + language and country codes. Use only ISO 639-1 alpha-2 language + codes and ISO 3166-1 alpha-2 country codes. + +
    **Currently only `en-US` is supported.** + +

    Reference: + + * [W3 Language + Tags](https://www.w3.org/International/articles/language-tags/) + required: true + schema: + type: string + examples: + English: + value: en-US + - name: blockout_dates + in: query + description: > + Specify restrictions to blockout dates. If this parameter is not + supplied, campaigns with and without + + blockout dates will be included. + + * `true` - Include only campaigns that have blockout dates. + + * `false` - Do not include campaigns that have blockout dates. + schema: + type: boolean + examples: + Optional: + value: null + Single: + value: false + - name: bookable_end + in: query + description: Search for all campaigns with a `bookable_end` date equal to or + before the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 2025-11-30 + - name: bookable_start + in: query + description: Search for all campaigns with a `bookable_start` date equal to or + after the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 2025-10-01 + - name: lifetime + in: query + description: Search for campaigns that match the lifetime type. + schema: + type: string + enum: + - limited_time_offer + - evergreen + examples: + Optional: + value: null + Single: + value: limited_time_offer + - name: campaign_id + in: query + description: > + Search for campaigns with matching `id` values. You can provide 0 to + 250 `id` parameters + + with different values, which will include campaigns that match any + of the requested values. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 782981 + Multiple: + value: + - 782981 + - 334242 + - name: include + in: query + description: > + Each time this parameter is specified will add to the list of fields + and associated objects returned in the + + response. All values and field names are lower case. All field names + found at the top level of the response + + are valid values for inclusion. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: name + Multiple: + value: + - name + - themes + - name: min_discount + in: query + description: Search for campaigns that have a `min_discount` equal to or larger + than the value. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 10 + - name: stay_end + in: query + description: Search for all campaigns with a `stay_end` date equal to or before + the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 2025-12-28 + - name: stay_start + in: query + description: Search for all campaigns with a `stay_start` date equal to or after + the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 2025-12-20 + - name: token + in: query + description: > + Only used for requesting additional pages of data. Provided by the + `next` URL in the `Link` response header. + schema: + type: string + - name: billing_terms + in: query + description: > + This parameter is to specify the terms of how a resulting booking + should be billed. If this field is + + needed, the value for this will be provided to you separately. + schema: + type: string + - name: partner_point_of_sale + in: query + description: > + This parameter is to specify what point of sale is being used to + shop and book. If this field is needed, + + the value for this will be provided to you separately. + schema: + type: string + - name: payment_terms + in: query + description: > + This parameter is to specify what terms should be used when being + paid for a resulting booking. If this + + field is needed, the value for this will be provided to you + separately. + schema: + type: string + - name: platform_name + in: query + description: > + This parameter is to specify what platform is being used to shop and + book. If this field is needed, the + + value for this will be provided to you separately. + schema: + type: string + responses: + "200": + description: OK + headers: + Rate-Limit-Day: + description: Reserved for future use. Optional header for request capacity per + day. + schema: + type: number + Rate-Limit-Day-Remaining: + description: Optional header for the remaining capacity, as a percentage, for + the daily time window. + schema: + type: number + Rate-Limit-Day-Reset: + description: Optional header for the timestamp, as the number of milliseconds + since the Unix Epoch, when the daily capacity resets. + schema: + type: number + Rate-Limit-Minute: + description: Reserved for future use. Optional header for request capacity per + minute. + schema: + type: number + Rate-Limit-Minute-Remaining: + description: Optional header for the remaining capacity, as a percentage, for + the per minute time window. + schema: + type: number + Rate-Limit-Minute-Reset: + description: Optional header for the timestamp, as the number of milliseconds + since the Unix Epoch, when the per minute capacity resets. + schema: + type: number + Rate-Limit-Reduction-Status: + description: Optional header that indicates the state (inactive, active) of + minute capacity reduction triggered once all daily capacity has + been used. + schema: + type: string + Region: + $ref: "#/components/headers/Region" + Link: + description: > + Contains a single link to get the immediate next page of + results, and follows the + + [IETF standard](https://tools.ietf.org/html/rfc5988). To get the + next page of results, simply follow + + the `next` URL in this header without modifying it. This header + will be missing when there are no + + further pages. If the link expires, there will be an `expires` + link-extension that is the UTC date the + + link will expire, in ISO 8601 format. + schema: + type: string + example: ; + rel="next"; expires=2023-06-29T20:15:05.324083439Z + Pagination-Total-Results: + description: Header that returns the pagination total results. + schema: + type: string + example: "2801" + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Campaign" + examples: + Campaign: + value: + - campaign_id: "12345" + name: Winter Seasonal Campaign + bookable_start: 2025-03-14 + bookable_end: 2025-04-14 + stay_start: 2025-03-30 + stay_end: 2025-04-15 + blockout_dates: true + min_discount: "20" + max_discount: "53" + lifetime: limited_time_offer + curated_content: + asia: + themes: + - Luxury + - Beach + images: + - image: i.dsfssasdfjl.jpg + tags: + - Mountains + - Skiing + - image: i.233sdkfejwlf.jpg + tags: + - Nature + - Cherry Blossoms + copy: + - copy: A winter wonderland. + subcopy: a fun time. + destinations: + - Rome + - Naples + - Venice + emea: + images: + - image: i.dsfssasdfjl.jpg + tags: + - Mountains + - Skiing + - image: i.233sdkfejwlf.jpg + tags: + - Nature + - Cherry Blossoms + copy: + - copy: A stunning winter vista is approachable. + subcopy: a good time. + destinations: + - France + latam: + themes: + - Festive + - Getaway + property_count: "15" + "400": + description: Invalid Input + headers: + Rate-Limit-Day: + $ref: "#/components/headers/Rate-Limit-Day" + Rate-Limit-Day-Remaining: + $ref: "#/components/headers/Rate-Limit-Day-Remaining" + Rate-Limit-Day-Reset: + $ref: "#/components/headers/Rate-Limit-Day-Reset" + Rate-Limit-Minute: + $ref: "#/components/headers/Rate-Limit-Minute" + Rate-Limit-Minute-Remaining: + $ref: "#/components/headers/Rate-Limit-Minute-Remaining" + Rate-Limit-Minute-Reset: + $ref: "#/components/headers/Rate-Limit-Minute-Reset" + Rate-Limit-Reduction-Status: + $ref: "#/components/headers/Rate-Limit-Reduction-Status" + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: invalid_input + message: An invalid request was sent in, please check the nested errors for + details. + errors: + - type: language.required + message: "A language is required. Supported languages are: [en-US]" + fields: + - name: language + type: querystring + - type: language.above_maximum + message: The number of languages passed in must not be greater than 1. + fields: + - name: language + type: querystring + "401": + description: Unauthorized + headers: + Region: + $ref: "#/components/headers/Region" + WWW-Authenticate: + description: Provides an example of the Authorization header. + schema: + type: string + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: request_unauthenticated + message: Data required to authenticate your request is missing or inaccurate. + Ensure that your request follows the guidelines in our + documentation. + fields: + - name: apikey + type: header + value: jaj3982k239dka328e + - name: signature + type: header + value: 129d75332614a5bdbe0c7eb540e95a65f9d85a5b53dabb38d19b37fad6312a2bd25c12ee5a82831d55112087e1b + - name: timestamp + type: header + value: 198284729 + - name: servertimestamp + type: server + value: 198284729 + "403": + description: Forbidden + headers: + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: request_unauthorized + message: Your request could not be authorized. + "410": + description: Gone + headers: + Rate-Limit-Day: + $ref: "#/components/headers/Rate-Limit-Day" + Rate-Limit-Day-Remaining: + $ref: "#/components/headers/Rate-Limit-Day-Remaining" + Rate-Limit-Day-Reset: + $ref: "#/components/headers/Rate-Limit-Day-Reset" + Rate-Limit-Minute: + $ref: "#/components/headers/Rate-Limit-Minute" + Rate-Limit-Minute-Remaining: + $ref: "#/components/headers/Rate-Limit-Minute-Remaining" + Rate-Limit-Minute-Reset: + $ref: "#/components/headers/Rate-Limit-Minute-Reset" + Rate-Limit-Reduction-Status: + $ref: "#/components/headers/Rate-Limit-Reduction-Status" + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: link.expired + message: The link you followed has expired. Please build a new request to + restart pagination. + "426": + description: Upgrade Required + headers: + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: upgrade_required + message: This service requires the use of TLS. + "429": + description: Too Many Requests + headers: + Rate-Limit-Day: + $ref: "#/components/headers/Rate-Limit-Day" + Rate-Limit-Day-Remaining: + $ref: "#/components/headers/Rate-Limit-Day-Remaining" + Rate-Limit-Day-Reset: + $ref: "#/components/headers/Rate-Limit-Day-Reset" + Rate-Limit-Minute: + $ref: "#/components/headers/Rate-Limit-Minute" + Rate-Limit-Minute-Remaining: + $ref: "#/components/headers/Rate-Limit-Minute-Remaining" + Rate-Limit-Minute-Reset: + $ref: "#/components/headers/Rate-Limit-Minute-Reset" + Rate-Limit-Reduction-Status: + $ref: "#/components/headers/Rate-Limit-Reduction-Status" + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: too_many_requests + message: You have reached your capacity for this type of request. + "500": + description: Unknown Internal Error + headers: + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: unknown_internal_error + message: An internal server error has occurred. + "503": + description: Service Unavailable + headers: + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: service_unavailable + message: This service is currently unavailable. + security: + - rapidAuth: [] + /v3/property-promotions: + get: + tags: + - getPromotions + summary: Promotions Search + description: | + Search for promotions + operationId: getPromotions + parameters: + - name: Customer-Session-Id + in: header + description: > + Insert your own unique value for each user session, beginning with + the first API call. Continue to pass the + + same value for each subsequent API call during the user's session, + using a new value for every new customer + + session.
    + + Including this value greatly eases EPS's internal debugging process + for issues with partner requests, as it + + explicitly links together request paths for individual user's + session. + schema: + type: string + - name: language + in: query + description: > + Desired language for the response as a subset of BCP47 format that + only uses hyphenated pairs of two-digit + + language and country codes. Use only ISO 639-1 alpha-2 language + codes and ISO 3166-1 alpha-2 country codes. + +
    **Currently only `en-US` is supported.** + +

    Reference: + + * [W3 Language + Tags](https://www.w3.org/International/articles/language-tags/) + required: true + schema: + type: string + examples: + English: + value: en-US + - name: sort_by + in: query + description: | + Sorts the returned promotions by the given rank value + required: true + schema: + type: string + enum: + - promotion + - property + - destination + examples: + Property: + value: property + Destination: + value: destination + - name: blockout_dates + in: query + description: > + Specify restrictions to blockout dates. If this parameter is not + supplied, promotions with and without + + blockout dates will be returned in the results. + + * `true` - Include only promotions that have blockout dates. + + * `false` - Include only promotions that do not have blockout dates. + schema: + type: boolean + examples: + Optional: + value: null + Single: + value: false + - name: bookable_end + in: query + description: Search for promotions with a `bookable_end` date equal to or before + the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 2025-11-30 + - name: bookable_start + in: query + description: Search for promotions with a `bookable_start` date equal to or + after the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 2025-10-01 + - name: campaign_id + in: query + description: > + Search for promotions with matching `campaign_id` values. You can + provide 0 to 250 `campaign_id` parameters + + with different values, which will include promotions that match any + of the requested values. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 782981 + Multiple: + value: + - 782981 + - 334242 + - name: category_id + in: query + description: > + Search for promotions associated with the specified `category_id` + values. This parameter can be supplied + + multiple times with different values, which will include promotions + that match any of the requested + + scenarios. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 1 + Multiple: + value: + - 1 + - 3 + - name: chain_id + in: query + description: > + Search for promotions associated with the specified `chain_id` + values. This parameter can be supplied + + multiple times with different values, which will include promotions + that match any of the requested + + scenarios. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 1 + Multiple: + value: + - 1 + - 3 + - name: lifetime + in: query + description: Search for promotions that match the lifetime type. + schema: + type: string + examples: + Optional: + value: null + Single: + value: limited_time_offer + - name: promotion_id + in: query + description: > + Search for promotions with matching `id` values. You can provide 0 + to 250 `id` parameters + + with different values, which will include promotions that match any + of the requested values. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 234567 + Multiple: + value: + - 234567 + - 987654 + - name: include + in: query + description: > + Each time this parameter is specified will add to the list of fields + and associated objects returned in the + + response. All values and field names are lower case. All field names + found at the top level of the response + + are valid values for inclusion. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: name + Multiple: + value: + - discount_percentage + - lifetime + - min_star_rating + - name: market_region + in: query + description: > + Search for promotions associated with the specified `market_region` + values. This parameter can be supplied + + multiple times with different values, which will include promotions + that match any of the requested + + scenarios. + schema: + type: array + items: + type: string + enum: + - amer + - apac + - emea + - latam + examples: + Optional: + value: null + Single: + value: amer + Multiple: + value: + - amer + - latam + - name: members_only + in: query + description: > + Specify restrictions to `members_only` values. If this parameter is + not supplied, promotions with true or + + false will be returned in the results. + + * `true` - Only results with `members_only` equal to true will be + returned. + + * `false` - Only results with `members_only` equal to false will be + returned. + schema: + type: boolean + examples: + Optional: + value: null + Single: + value: true + - name: min_advance_purchase_days + in: query + description: Search for promotions that have a `min_advance_purchase_days` equal + to the passed in value. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 5 + - name: min_guest_rating + in: query + description: Search for promotions that have a `min_guest_rating` equal to or + larger than the value. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 4.7 + - name: min_star_rating + in: query + description: Search for promotions that have a `min_star_rating` equal to or + larger than the value. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 4.5 + - name: min_stay + in: query + description: Search for promotions that have a `min_stay` equal to the passed in + value. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 3 + - name: mobile_only + in: query + description: > + Specify restrictions to `mobile_only` values. If this parameter is + not supplied, promotions with true or + + false will be returned in the results. + + * `true` - Only results with `mobile_only` equal to true will be + returned. + + * `false` - Only results with `mobile_only` equal to false will be + returned. + schema: + type: boolean + examples: + Optional: + value: null + Single: + value: true + - name: product_line + in: query + description: > + Search for promotions with a `product_line` that matches the value. + This parameter can be supplied multiple + + times with different values, which will include promotions that + match any of the requested scenarios. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: hotel + Multiple: + value: + - hotel + - package + - name: promotion_criteria + in: query + description: > + Search for promotions that meet the criteria provided. This criteria + is defined as: + * type,value + For now the only type available will be `percentage` but other types + will be added in the future. + schema: + type: string + examples: + Optional: + value: null + Single: + value: percentage,20 + - name: property_id + in: query + description: > + Search for promotions with matching `property_id` values. You can + provide 0 to 250 `property_id` parameters + + with different values, which will include promotions that match any + of the requested values. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 234567 + Multiple: + value: + - 234567 + - 987654 + - name: region_id + in: query + description: > + Search for promotions associated with the specified `region_id` + values. This parameter can be supplied + + multiple times with different values, which will include promotions + that match any of the requested + + scenarios. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 123456 + Multiple: + value: + - 123456 + - 553248635083913800 + - name: stay_end + in: query + description: Search for all promotions with a `stay_end` date equal to or before + the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 2025-12-28 + - name: stay_start + in: query + description: Search for all promotions with a `stay_start` date equal to or + after the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 2025-12-20 + - name: supply_source + in: query + description: | + Search for promotions associated with the specified `supply_source` values. This parameter can be supplied + multiple times with different values, which will include promotions that match any of the requested + scenarios. + * `expedia` - Standard Expedia supply. + * `vrbo` - VRBO supply - This option is restricted to partners who have VRBO supply enabled for their + profile. See [Vacation Rentals](https://developers.expediagroup.com/docs/rapid/lodging/vacation-rentals) for + more information. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: expedia + Multiple: + value: + - expedia + - vrbo + - name: token + in: query + description: > + Only used for requesting additional pages of data. Provided by the + `next` URL in the `Link` response header. + schema: + type: string + - name: billing_terms + in: query + description: > + This parameter is to specify the terms of how a resulting booking + should be billed. If this field is + + needed, the value for this will be provided to you separately. + schema: + type: string + - name: partner_point_of_sale + in: query + description: > + This parameter is to specify what point of sale is being used to + shop and book. If this field is needed, + + the value for this will be provided to you separately. + schema: + type: string + - name: payment_terms + in: query + description: > + This parameter is to specify what terms should be used when being + paid for a resulting booking. If this + + field is needed, the value for this will be provided to you + separately. + schema: + type: string + - name: platform_name + in: query + description: > + This parameter is to specify what platform is being used to shop and + book. If this field is needed, the + + value for this will be provided to you separately. + schema: + type: string + responses: + "200": + description: OK + headers: + Rate-Limit-Day: + description: Reserved for future use. Optional header for request capacity per + day. + schema: + type: number + Rate-Limit-Day-Remaining: + description: Optional header for the remaining capacity, as a percentage, for + the daily time window. + schema: + type: number + Rate-Limit-Day-Reset: + description: Optional header for the timestamp, as the number of milliseconds + since the Unix Epoch, when the daily capacity resets. + schema: + type: number + Rate-Limit-Minute: + description: Reserved for future use. Optional header for request capacity per + minute. + schema: + type: number + Rate-Limit-Minute-Remaining: + description: Optional header for the remaining capacity, as a percentage, for + the per minute time window. + schema: + type: number + Rate-Limit-Minute-Reset: + description: Optional header for the timestamp, as the number of milliseconds + since the Unix Epoch, when the per minute capacity resets. + schema: + type: number + Rate-Limit-Reduction-Status: + description: Optional header that indicates the state (inactive, active) of + minute capacity reduction triggered once all daily capacity has + been used. + schema: + type: string + Region: + $ref: "#/components/headers/Region" + Link: + description: > + Contains a single link to get the immediate next page of + results, and follows the + + [IETF standard](https://tools.ietf.org/html/rfc5988). To get the + next page of results, simply follow + + the `next` URL in this header without modifying it. This header + will be missing when there are no + + further pages. If the link expires, there will be an `expires` + link-extension that is the UTC date the + + link will expire, in ISO 8601 format. + schema: + type: string + example: ; + rel="next"; expires=2023-06-29T20:15:05.324083439Z + Pagination-Total-Results: + description: Header that returns the pagination total results. + schema: + type: string + example: "2801" + content: + application/json: + schema: + type: array + items: + $ref: "#/components/schemas/Promotion" + examples: + Promotions: + value: + - promotion_id: "123456" + campaign_id: "12345" + property_id: "123456" + discount_percentage: 30 + description: MOD 10% + min_stay: "2" + min_advance_purchase_days: "3" + bookable_start: 2025-03-14 + bookable_end: 2025-04-14 + stay_start: 2025-03-30 + stay_end: 2025-04-15 + star_rating: "4.5" + guest_rating: "4.8" + lifetime: limited_time_offer + product_lines: + - - “hotel” + - “package” + blockout_dates: + - start: 2025-03-16 + end: 2025-03-18 + - start: 2025-04-01 + end: 2025-04-02 + region_id: "12345" + chain_id: "123456" + market_region: apac + category_id: "1" + supply_source: expedia + mobile_only: false + members_only: true + rank: + promotion: "22" + property: "55" + destination: "20" + links: + content: + method: GET + href: /properties/content?property_id=123456&language=en-US&supply_source=expedia + "400": + description: Invalid Input + headers: + Rate-Limit-Day: + $ref: "#/components/headers/Rate-Limit-Day" + Rate-Limit-Day-Remaining: + $ref: "#/components/headers/Rate-Limit-Day-Remaining" + Rate-Limit-Day-Reset: + $ref: "#/components/headers/Rate-Limit-Day-Reset" + Rate-Limit-Minute: + $ref: "#/components/headers/Rate-Limit-Minute" + Rate-Limit-Minute-Remaining: + $ref: "#/components/headers/Rate-Limit-Minute-Remaining" + Rate-Limit-Minute-Reset: + $ref: "#/components/headers/Rate-Limit-Minute-Reset" + Rate-Limit-Reduction-Status: + $ref: "#/components/headers/Rate-Limit-Reduction-Status" + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: invalid_input + message: An invalid request was sent in, please check the nested errors for + details. + errors: + - type: language.required + message: "A language is required. Supported languages are: [en-US]" + fields: + - name: language + type: querystring + - type: language.above_maximum + message: The number of languages passed in must not be greater than 1. + fields: + - name: language + type: querystring + "401": + description: Unauthorized + headers: + Region: + $ref: "#/components/headers/Region" + WWW-Authenticate: + description: Provides an example of the Authorization header. + schema: + type: string + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: request_unauthenticated + message: Data required to authenticate your request is missing or inaccurate. + Ensure that your request follows the guidelines in our + documentation. + fields: + - name: apikey + type: header + value: jaj3982k239dka328e + - name: signature + type: header + value: 129d75332614a5bdbe0c7eb540e95a65f9d85a5b53dabb38d19b37fad6312a2bd25c12ee5a82831d55112087e1b + - name: timestamp + type: header + value: 198284729 + - name: servertimestamp + type: server + value: 198284729 + "403": + description: Forbidden + headers: + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: request_unauthorized + message: Your request could not be authorized. + "410": + description: Gone + headers: + Rate-Limit-Day: + $ref: "#/components/headers/Rate-Limit-Day" + Rate-Limit-Day-Remaining: + $ref: "#/components/headers/Rate-Limit-Day-Remaining" + Rate-Limit-Day-Reset: + $ref: "#/components/headers/Rate-Limit-Day-Reset" + Rate-Limit-Minute: + $ref: "#/components/headers/Rate-Limit-Minute" + Rate-Limit-Minute-Remaining: + $ref: "#/components/headers/Rate-Limit-Minute-Remaining" + Rate-Limit-Minute-Reset: + $ref: "#/components/headers/Rate-Limit-Minute-Reset" + Rate-Limit-Reduction-Status: + $ref: "#/components/headers/Rate-Limit-Reduction-Status" + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: link.expired + message: The link you followed has expired. Please build a new request to + restart pagination. + "426": + description: Upgrade Required + headers: + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: upgrade_required + message: This service requires the use of TLS. + "429": + description: Too Many Requests + headers: + Rate-Limit-Day: + $ref: "#/components/headers/Rate-Limit-Day" + Rate-Limit-Day-Remaining: + $ref: "#/components/headers/Rate-Limit-Day-Remaining" + Rate-Limit-Day-Reset: + $ref: "#/components/headers/Rate-Limit-Day-Reset" + Rate-Limit-Minute: + $ref: "#/components/headers/Rate-Limit-Minute" + Rate-Limit-Minute-Remaining: + $ref: "#/components/headers/Rate-Limit-Minute-Remaining" + Rate-Limit-Minute-Reset: + $ref: "#/components/headers/Rate-Limit-Minute-Reset" + Rate-Limit-Reduction-Status: + $ref: "#/components/headers/Rate-Limit-Reduction-Status" + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: too_many_requests + message: You have reached your capacity for this type of request. + "500": + description: Unknown Internal Error + headers: + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: unknown_internal_error + message: An internal server error has occurred. + "503": + description: Service Unavailable + headers: + Region: + $ref: "#/components/headers/Region" + content: + application/json: + schema: + $ref: "#/components/schemas/Error" + example: + type: service_unavailable + message: This service is currently unavailable. + security: + - rapidAuth: [] +components: + schemas: + PropertyContent: + type: object + properties: + property_id: + type: string + description: Unique Expedia property ID. + name: + type: string + description: Property name. + address: + $ref: "#/components/schemas/Address" + ratings: + $ref: "#/components/schemas/Ratings" + location: + $ref: "#/components/schemas/Location" phone: type: string description: The property's phone number. @@ -20537,16 +22742,6 @@ components: instead of the precise location of `coordinates`. description: The property's location information. - Coordinates: - type: object - properties: - latitude: - type: number - description: The latitude of the property. - longitude: - type: number - description: The longitude of the property. - description: The coordinates of the property. CategoryProperty: type: object properties: @@ -20570,6 +22765,12 @@ components: type: boolean description: Whether or not a payment for this property can be taken by the property upon arrival. + updated_expedia_collect: + type: boolean + description: Whether or not a payment for this property can be taken by Expedia + at the time of booking and whether a VAT invoice can be requested + from the property if the property is accountable to provide such a + document. description: How and when the payment can be taken. Checkin: type: object @@ -20600,6 +22801,9 @@ components: time: type: string description: The time by which a guest must check out. + instructions: + type: string + description: The property's check-out policy. description: The property's check-out information. Fees: type: object @@ -21518,7 +23722,10 @@ components: type: string description: Unique Identifier for a rate. status: - $ref: "#/components/schemas/Status" + type: string + description: Rates returned are always available. + enum: + - available available_rooms: type: number description: >- @@ -21535,6 +23742,12 @@ components: description: Indicates if the rate is fully refundable at the time of booking. Cancel penalties may still apply. Please refer to the cancel penalties section for reference. + holdable: + type: boolean + description: Indicates whether the rate supports [Booking Hold and + Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume). + This field will only be present if `include=rooms.rates.holdable` is + passed as a request parameter.. current_refundability: type: string description: Indicates the current refundability of the rate. This is a more @@ -21630,16 +23843,6 @@ components: items: $ref: "#/components/schemas/Deposit" description: A rate. - Status: - type: string - description: Indicates the status of the rate. If the rate is still available - then available will be returned. If the rate is no longer available at - that price then price_changed will be returned. If the rate is no longer - available at all then sold_out will be returned. - enum: - - available - - price_changed - - sold_out SaleScenario: type: object properties: @@ -21877,7 +24080,7 @@ components: - checkout_not_allowed - minimum_stay - maximum_stay - - restricted_dates + - restricted_stay_lengths - same_day_restrictions - maximum_rooms - children_not_supported @@ -21896,6 +24099,10 @@ components: properties: status: $ref: "#/components/schemas/StatusPriceCheck" + holdable: + type: boolean + description: Indicates whether the rate supports [Booking Hold and + Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume). occupancy_pricing: type: object additionalProperties: @@ -21923,12 +24130,24 @@ components: description: The price check response. StatusPriceCheck: type: string - description: Indicates the status of the rate. If the rate is still available - then available will be returned. If the rate is no longer available at - that price then price_changed will be returned. If the rate is no longer - available at all then sold_out will be returned. + description: > + Indicates the status of the rate. + + * `available` - The rate is still available at or below the price + returned in the shop response. + + * `available_no_change` - **Only in Hard Change flows** - The rate is + available but matches the booked rate. + + * `price_changed` - The rate is no longer available at the previous + price. Use the `additional_rates` link to + present updated rooms and rates for this property to travelers. + * `sold_out` - The rate is no longer available at any price. Use the + `additional_rates` link to + present updated rooms and rates for this property to travelers. enum: - available + - available_no_change - price_changed - sold_out RoomPriceCheckLinks: @@ -22233,9 +24452,12 @@ components: properties: type: type: string - description: Identifier for the type of payment. If affiliate_collect, card - information is not required as EPS will not be processing the - payment. However, billing contact information is still required. + description: > + Identifier for the type of payment. If affiliate_collect, card + information is not required as EPS will not + + be processing the payment. However, billing contact information is + still required. enum: - corporate_card - customer_card @@ -22262,8 +24484,13 @@ components: $ref: "#/components/schemas/ThirdPartyAuthRequest" enrollment_date: type: string - description: Date the payment account was enrolled in the cardholder's account - with the merchant, in ISO 8601 format (YYYY-MM-DD). + description: > + Date the payment account was enrolled in the cardholder's account + with the merchant, in ISO 8601 format + + (YYYY-MM-DD). + additional_handling: + $ref: "#/components/schemas/AdditionalHandling" BillingContactRequest: required: - address @@ -22395,6 +24622,138 @@ components: 0 - Non-SecureCode transaction, bypassed by the Merchant 1 - Merchant-Only SecureCode transaction 2 - Fully authenticated SecureCode transaction + AdditionalHandling: + required: + - authorized_expenses + type: object + properties: + authorized_expenses: + type: string + description: > + Indicates which types of expenses are authorized to be charged to + the VCC. + + * `prestay_expenses_only` - Indicates that the provided VCC is for + pre-stay charges only (e.g., + deposits, cancellation fees, no-show fees). A physical card must be presented at check-in for any + remaining balance, as well as incidentals. + * `total_booking_amount` - Indicates that both pre-stay charges and + the total booking amount are + authorized, but no incidentals are authorized. A physical card must be presented at check-in for any + incidentals. + * `total_plus_incidentals` - Indicates that pre-stay, total booking, + and incidental expenses are + authorized. See `specified_incidental_expenses`. A physical card may be required for additional + incidental expenses. + * `see_authorization_form` - Indicates that a property should refer + to the authorization form that will + be sent either by the card provider or the authorizing company. + enum: + - prestay_expenses_only + - total_booking_amount + - total_plus_incidentals + - see_authorization_form + specified_incidental_expenses: + type: array + description: > + Included list of enumerated categories to restrict the authorized + incidentals. This is only utilized + + when `authorized_expenses` is supplied with `total_plus_incidentals` + and restrictions on incidentals are + + desired.
    + + Example: To allow any incidental expenses, specify + `authorized_expenses` equal to + + `total_plus_incidentals` and omit `specified_incidental_expenses`. + items: + type: string + description: The type of incidental expense authorized. + enum: + - breakfast + - entertainment + - internet + - meeting_expenses + - other_food_beverage + - parking + - phone + - taxes + - transfer + - other + total_charges_allowed: + $ref: "#/components/schemas/Amount" + is_cvc_required: + type: boolean + description: > + Indicates whether a CVC is required for the provided VCC. If this is + marked required, the security_code + + field for the payment MUST be provided. + authorizing_company: + type: string + description: Company that will issue the authorization form for the virtual + credit card payment. + card_contact: + type: object + properties: + email: + type: string + description: The email address of the VCC contact. + phone: + $ref: "#/components/schemas/Phone" + description: > + Object to hold information for a contact the supplier can reach in + the event of any issues with the + + provided payment. + max_payment_attempt_count: + type: number + description: Requested limit to number of payment attempts. + payment_allowable_period_start: + type: string + description: Start date for valid range of the VCC payment instrument, in ISO + 8601 format (YYYY-MM-DD). + payment_allowable_period_end: + type: string + description: End date for valid range of the VCC payment instrument, in ISO 8601 + format (YYYY-MM-DD). + description: > + Parent object for additional VCC handling instructions, to be included + as part of the payment object when + + virtual_card is the requested payment type for property collect + inventory. If not included, existing + + behavior regarding handling of VCCs with property collect inventory is + to be preserved. This object will be + + ignored for non-property collect/non-VCC transactions. + total_charges_allowed represents the total ceiling of + + all charges allowed on the VCC, including the booking price and any + allowed incidentals. The value of total_charges_allowed + + must be at least the booking value. + Phone: + type: object + properties: + country_code: + type: string + description: The numerical portion of the country code from the phone number. Do + not include the leading '+' character. + example: "1" + area_code: + type: string + description: The area code of the phone number. + example: "487" + number: + type: string + description: The remaining digits of the phone number. + example: "5550077" + description: The entire phone number must be represented across the three fields + in this object. PaymentSessions: type: object properties: @@ -22469,6 +24828,12 @@ components: - leisure - business - unspecified + supplier_transparency: + $ref: "#/components/schemas/SupplierTransparency" + additional_handling: + $ref: "#/components/schemas/AdditionalHandling" + invoicing: + $ref: "#/components/schemas/Invoicing" itinerary_history: type: array items: @@ -22501,24 +24866,6 @@ components: $ref: "#/components/schemas/Link" description: A map of links, including links to resume or cancel a held booking. This is only included for held bookings. - Phone: - type: object - properties: - country_code: - type: string - description: The numerical portion of the country code from the phone number. Do - not include the leading '+' character. - example: "1" - area_code: - type: string - description: The area code of the phone number. - example: "487" - number: - type: string - description: The remaining digits of the phone number. - example: "5550077" - description: The entire phone number must be represented across the three fields - in this object. RoomItinerary: type: object properties: @@ -22840,6 +25187,50 @@ components: type: string description: The height of the image. example: "32" + SupplierTransparency: + type: object + properties: + point_of_sale_display_to_share: + type: string + description: The name of the point of sale to be shared. + company_name_to_share: + type: string + description: The name of the company to be shared. + consent_to_share: + type: boolean + description: Whether or not this info should be shared. + description: > + To be used for collecting and sharing partner and client information + with the supplier. + Invoicing: + type: object + properties: + consent_to_share: + type: boolean + description: > + Whether the partner and traveler consent to share the invoicing + section information with the supplier + + and property. If not provided, this invoicing data will not be + shared with the supplier or property. + company_name: + type: string + description: The traveler's company name to appear on the invoice. + company_address: + $ref: "#/components/schemas/Address_1" + point_of_sale_display: + type: string + description: > + Provide this when a specific site or branding should be used on the + invoice instead of partner name. + email: + type: string + description: Email address to send invoices + vat_number: + type: string + description: A custom VAT number to include on invoices + description: | + To be included if invoicing is requested. ItineraryHistoryItem: type: object properties: @@ -22981,20 +25372,28 @@ components: properties: affiliate_reference_id: type: string - description: Your unique reference value. This field supports from 3 to a - maximum of 28 characters and is required to be unique (if provided). - Entering special characters ("<", ">", "(", ")", and "&") in this - field will result in the request being rejected. + description: > + Your unique reference value. This field supports from 3 to a maximum + of 28 characters and is required to be + + unique (if provided). Entering special characters ("<", ">", "(", + ")", and "&") in this field will result in + + the request being rejected. hold: type: boolean - description: Flag for placing a booking on hold. The booking will be released if - the resume link is not followed within the hold period. Please refer - to our Hold and Resume documentation. + description: > + Flag for placing a booking on hold. The booking will be released if + the resume link is not followed within + + the hold period. Please refer to our Hold and Resume documentation. email: type: string - description: Email address for the customer. Must adhere to standard RFC 822 - email format. Special characters ("<", ">", "(", ")", and "&") - entered in this field will be re-encoded. + description: > + Email address for the customer. Must adhere to standard RFC 822 + email format. Special characters ("<", ">", + + "(", ")", and "&") entered in this field will be re-encoded. phone: $ref: "#/components/schemas/PhoneRequest" rooms: @@ -23003,97 +25402,45 @@ components: $ref: "#/components/schemas/CreateItineraryRequestRoom" payments: type: array - description: Required if payment information prior to booking was not submitted. - If register payments was called prior to this call, do not submit - payment information again. + description: > + Required if payment information prior to booking was not submitted. + If register payments was called prior to + + this call, do not submit payment information again. items: $ref: "#/components/schemas/PaymentRequest" affiliate_metadata: type: string - description: Field that stores up to 256 characters of additional metadata with - the itinerary. Will be returned on all retrieve responses for this - itinerary. The data must be in the format - 'key1:value|key2:value|key3:value'. Other Special characters ("<", - ">", "(", ")", and "&") entered in this field will be re-encoded. + description: > + Field that stores up to 256 characters of additional metadata with + the itinerary. Will be returned on all + + retrieve responses for this itinerary. The data must be in the + format 'key1:value|key2:value|key3:value'. + + Other Special characters ("<", ">", "(", ")", and "&") entered in + this field will be re-encoded. tax_registration_number: type: string - description: "The customer's taxpayer identification number that is provided by - the government to nationals or resident aliens. This number should - be collected from individuals that pay taxes or participate in - activities that provide revenue for one or more tax types. Note: - This value is only needed from Brazilian and Indian customers." + description: > + The customer's taxpayer identification number that is provided by + the government to nationals or resident + + aliens. This number should be collected from individuals that pay + taxes or participate in activities that + + provide revenue for one or more tax types. *Note:* This value is + only needed from Brazilian and Indian + + customers. traveler_handling_instructions: type: string description: Custom traveler handling instructions for the hotel. Do not include PCI sensitive data, such as credit card numbers, in this field. invoicing: - type: object - properties: - company_name: - type: string - description: The traveler's company name to appear on the invoice. - company_address: - $ref: "#/components/schemas/Address_1" - point_of_sale_display: - type: string - description: > - Provide this when a specific site or branding should be used on - the invoice instead of partner name. - email: - type: string - description: Email address to send invoices - description: | - To be included if invoicing is requested. - example: - affiliate_reference_id: 4480ABC - hold: false - email: john@example.com - phone: - country_code: "1" - area_code: "487" - number: "5550077" - rooms: - - given_name: John - family_name: Smith - smoking: false - special_request: Top floor or away from street please - loyalty_id: ABC123 - loyalty: - member_id: ABD123 - program_id: SN - payments: - - type: customer_card - number: "4111111111111111" - security_code: "123" - expiration_month: "08" - expiration_year: "2025" - billing_contact: - given_name: John - family_name: Smith - address: - line_1: 555 1st St - line_2: 10th Floor - line_3: Unit 12 - city: Seattle - state_province_code: WA - postal_code: "98121" - country_code: US - enrollment_date: 2018-09-15 - third_party_authentication: - cavv: jELUbgG+Tgj0AREBDMLeCad+oIs= - eci: "05" - three_ds_version: 2.2.0 - ds_transaction_id: ac01cc2b-c1a1-4981-8c6f-400d4eec88de - pa_res_status: Y - ve_res_status: C - xid: 47133847-13be-4ae3-9be9-e4053b9c83c0 - cavv_algorithm: "3" - ucaf_indicator: "0" - affiliate_metadata: data_point_1:123|data_point2:This is data. - tax_registration_number: "12345678910" - traveler_handling_instructions: Please use the card provided for payment. Avoid - cancelation as this is for a corporate traveler. Contact traveler if - any issues. + $ref: "#/components/schemas/Invoicing" + supplier_transparency: + $ref: "#/components/schemas/SupplierTransparency" PhoneRequest: required: - country_code @@ -23123,14 +25470,38 @@ components: properties: given_name: type: string - description: First name of room guest. Max 60 characters. Special characters - ("<", ">", "(", ")", and "&") entered in this field will be - re-encoded. + description: > + Given name of room guest. Max 60 characters. Special characters + ("<", ">", "(", ")", and "&") entered in + + this field will be re-encoded. family_name: type: string - description: Last name of room guest. Max 60 characters. Special characters - ("<", ">", "(", ")", and "&") entered in this field will be - re-encoded. + description: > + Family name of room guest. Max 60 characters. Special characters + ("<", ">", "(", ")", and "&") entered in + + this field will be re-encoded. + sensitive_traveler_details: + type: object + properties: + middle_name: + type: string + description: > + Middle name of room guest. Max 60 characters. Special characters + ("<", ">", "(", ")", and "&") entered + + in this field will be re-encoded. + date_of_birth: + type: string + description: The date of birth of room guest, in ISO 8601 format (YYYY-MM-DD). + address: + $ref: "#/components/schemas/Address_1" + description: > + Additional sensitive (PII) data about a traveler that should only be + submitted in cases where it is + + necessary to clarify the identity of the traveler. smoking: type: boolean description: Specify if the guest would prefer a smoking room. This field is @@ -23217,6 +25588,26 @@ components: description: Last name of room guest. Max 60 characters. Special characters ("<", ">", "(", ")", and "&") entered in this field will be re-encoded. + sensitive_traveler_details: + type: object + properties: + middle_name: + type: string + description: > + Middle name of room guest. Max 60 characters. Special characters + ("<", ">", "(", ")", and "&") entered in + + this field will be re-encoded. + date_of_birth: + type: string + description: The date of birth of room guest, in ISO 8601 format (YYYY-MM-DD). + address: + $ref: "#/components/schemas/Address_1" + description: > + Additional sensitive (PII) data about a traveler that should only be + submitted in cases where it is + + necessary to clarify the identity of the traveler. smoking: type: boolean description: Specify if the guest would prefer a smoking room. This field is @@ -23235,15 +25626,6 @@ components: deprecated: true loyalty: $ref: "#/components/schemas/Loyalty" - example: - given_name: John - family_name: Smith - smoking: false - special_request: Top floor or away from street please - loyalty_id: ABC123 - loyalty: - member_id: ABD123 - program_id: SN CommitChangeRoomRequestBody: type: object properties: @@ -23435,6 +25817,245 @@ components: description: The event type for which the test notification is requested. example: event_type: itinerary.agent.create + Campaign: + type: object + properties: + campaign_id: + type: string + description: Unique identifier for the campaign + blockout_dates: + type: boolean + description: Boolean value indicating if promotions with blockout dates are + included in this campaign. + bookable_end: + type: string + description: The last date that bookings can be made on in this campaign, in ISO + 8601 format (YYYY-MM-DD). + bookable_start: + type: string + description: The first date that bookings can be made on in this campaign, in + ISO 8601 format (YYYY-MM-DD). + curated_content: + type: object + properties: + anz: + $ref: "#/components/schemas/MarketRegionContent" + asia: + $ref: "#/components/schemas/MarketRegionContent" + ca: + $ref: "#/components/schemas/MarketRegionContent" + emea: + $ref: "#/components/schemas/MarketRegionContent" + latam: + $ref: "#/components/schemas/MarketRegionContent" + us: + $ref: "#/components/schemas/MarketRegionContent" + description: Curated content object containing map of campaign regions + containing various curated content objects + lifetime: + type: string + description: The type of lifetime of this campaign. + max_discount: + type: string + description: The maximum discount amount that is included in a campaign. + min_discount: + type: string + description: The minimum discount amount that is included in a campaign. + name: + type: string + description: The name of the campaign. + property_count: + type: string + description: The number of properties participating in this campaign. + stay_end: + type: string + description: The last date that check-ins can be set to in this campaign in ISO + 8601 format (YYYY-MM-DD). + stay_start: + type: string + description: The first date that check-ins can be set to in this campaign in ISO + 8601 format (YYYY-MM-DD). + MarketRegionContent: + type: object + properties: + copy: + type: array + description: An array of copy objects that should be used for this campaign and + region. + items: + $ref: "#/components/schemas/Copy" + destinations: + type: array + description: An array of places a campaign is limited to having promotions in. + items: + type: string + images: + type: array + description: An array of images associated with this campaign. + items: + $ref: "#/components/schemas/Image_2" + themes: + type: array + description: An array of themes associated with this campaign. + items: + type: string + Copy: + type: object + properties: + copy: + type: string + description: The marketing copy that should be used for this campaign. + subcopy: + type: string + description: The marketing subcopy that should be used for this campaign. + description: A copy object containing both copy and subcopy that should be used + with promotion for this region. + Image_2: + type: object + properties: + image: + type: string + description: A link to the image. + tags: + type: array + description: Tags for the image. + items: + type: string + description: An image object containing the link to the image and tags for the image. + Promotion: + type: object + properties: + promotion_id: + type: string + description: Unique identifier for the promotion + blockout_dates: + type: array + description: > + An array of stay date ranges within this check-in / check-out range + that are not eligible for this promotion. + + The stay dates are determined by the would be check-in of that + night. With a check-in date of 2023-09-01, + + and a check-out date of 2023-09-06, this would be a 5 night stay. A + `blockout_dates` with start: '2023-09-02' + + and end: 2023-09-03 would mean 2 of the nights are not eligible. The + 1st night is eligible, the 2nd and 3rd + + nights are not eligible, and the 4th and 5th nights are eligible. + items: + $ref: "#/components/schemas/BlockoutDate" + bookable_end: + type: string + description: The last date that bookings can be made on in this promotion, in + ISO 8601 format (YYYY-MM-DD). + bookable_start: + type: string + description: The first date that bookings can be made on in this promotion, in + ISO 8601 format (YYYY-MM-DD). + campaign_id: + type: string + description: The campaign id this promotion is associated with. + category_id: + type: string + description: The category id of the property. + chain_id: + type: string + description: The chain id for the property. + description: + type: string + description: The description of the promotion. + discount_percentage: + type: string + description: > + The percent off of the cost of the property when using this + promotion. + + This will only be returned for percentage based promotions + guest_rating: + type: string + description: > + The overall rating for the property, averaged from all guest + reviews. Returns a value between 1.0 and 5.0. + lifetime: + type: string + description: The type of lifetime of this promotion. + links: + type: object + properties: + content: + $ref: "#/components/schemas/Link" + description: A map of links, including link to get the property content. + market_region: + type: string + description: The market region for the promotion. + members_only: + type: string + description: Boolean value indicating if a promotion is for members only. + min_advance_purchase_days: + type: string + description: The least number of days before check-in a stay must be booked to + use this promotion. + min_stay: + type: string + description: The least number of days that must be booked to use this promotion. + mobile_only: + type: string + description: Boolean value indicating if a promotion is for mobile only. + product_lines: + type: array + description: The list of product lines. + items: + type: string + description: The product line this promotion is a part of. + property_id: + type: string + description: Unique Expedia property ID. + rank: + type: object + properties: + destination: + type: string + description: Rank of the destination associated with the promotion. + promotion: + type: string + description: Rank of the promotion itself. + property: + type: string + description: Rank of the property associated with the promotion. + description: A map of ranks with 1 being the best and descending from there. + region_id: + type: string + description: The region id for the property. + star_rating: + type: string + description: > + The rating assigned to this property. Returns a value between 0.0 + and 5.0. A value of 0.0 or a blank value + + indicates no rating is available. + stay_end: + type: string + description: The last date that check-ins can be set to in this promotion in ISO + 8601 format (YYYY-MM-DD). + stay_start: + type: string + description: The first date that check-ins can be set to in this promotion in + ISO 8601 format (YYYY-MM-DD). + supply_source: + type: string + description: The supply source of the property. + BlockoutDate: + type: object + properties: + end: + type: string + description: End date of blockout date range in ISO 8601 format. + start: + type: string + description: Start date of blockout date range in ISO 8601 format. + description: An array of blockout dates that apply to the promotion. Amenity: type: object properties: @@ -23457,6 +26078,13 @@ components: items: type: string description: An individual amenity. + Coordinates: + type: object + properties: + latitude: + type: number + longitude: + type: number BedGroupConfiguration: type: object properties: @@ -23473,6 +26101,7 @@ components: MerchantOfRecord: type: string description: | + Merchant of Record * `expedia` - Payment is taken by Expedia. * `property` - Payment is taken by the property. enum: @@ -23533,6 +26162,8 @@ components: $ref: "#/components/schemas/Totals" fees: $ref: "#/components/schemas/FeesPricingInformation" + marketing_fee_details: + $ref: "#/components/schemas/MarketingFeeDetails" description: The pricing information object. NightCharge: type: object @@ -23551,20 +26182,20 @@ components: description: > The price breakout type. * `base_rate` - The room rate without any taxes and fees applied. - * `tax_and_service_fee` - Tax recovery charges, service fees, and taxes. Ensure that you capture these values and display as: - "Taxes and Fees" - * `extra_person_fee` - A per night fee that is charged by a hotel for additional adults over the nightly rate. This fee is included as part of the total. - * `property_fee` - The property fee surcharge type must be displayed beginning on the initial hotel room selection page, immediately after your hotel search results page. This placement is required by the U.S. Federal Trade Commission (FTC). - Display this surcharge as "Property Fee" on your room selection page, as described above, and in all subsequent price breakdowns for the following Points of Sale: - * `US` - * `Canada` - * `Brazil` - * `LATAM` - * `sales_tax` - Taxes that must be displayed by certain jurisdictional laws. Ensure that you capture these values and display as "Taxes". + * `tax_and_service_fee` - Tax recovery charges, service fees, and taxes. Ensure that you capture these values + and display as: "Taxes and Fees" + * `extra_person_fee` - A per night fee that is charged by a hotel for additional adults over the nightly rate. + This fee is included as part of the total. + * `property_fee` - For US POS: The property fee surcharge type must be displayed, combined with the base rate, + wherever you show a price, from the first display of the price throughout the booking path. + * `sales_tax` - Taxes that must be displayed by certain jurisdictional laws. Ensure that you capture these + values and display as "Taxes". * `adjustment` - This is the amount that the individual night have been adjusted/discounted. - * `recovery_charges_and_fees` - Tax recovery charges, service fees, and taxes. Ensure that you capture these values and display as: - "Taxes and Fees" - * `traveler_service_fee` - Fee charged by Vrbo to support use of online tools, services and functions on its platform which enable guest self service. May be displayed as 'Traveler Service Fee' or 'Service Fee' any time fees are broken out for display on partner sites. + * `recovery_charges_and_fees` - Tax recovery charges, service fees, and taxes. Ensure that you capture these + values and display as: "Taxes and Fees" + * `traveler_service_fee` - Fee charged by Vrbo to support use of online tools, services and functions on its + platform which enable guest self service. May be displayed as 'Traveler Service Fee' or 'Service Fee' any + time fees are broken out for display on partner sites. enum: - base_rate - tax_and_service_fee @@ -23706,6 +26337,34 @@ components: $ref: "#/components/schemas/Amount" description: An object representing a charge. Information about the charge is provided in both the billable currency and the request currency. + MarketingFeeDetails: + type: object + properties: + base: + $ref: "#/components/schemas/Charge" + overrides: + $ref: "#/components/schemas/Charge" + incentives: + $ref: "#/components/schemas/Charge" + other: + $ref: "#/components/schemas/Charge" + description: > + An object representing a more granular view and key components + contributing to Marketing Fee estimates, in line + + with contracted commercial terms between Expedia and partner. + + * `base` - Potential earnings derived from standard or flat commission + rates. + + * `overrides` - Potential earnings derived from additional variable + commission rates, typically subject to + achievement of specific revenue targets. + * `incentives` - Potential earnings derived from additional incentives, + applicable for a limited time period. + + * `other` - Potential earnings derived from a category not yet covered + by the above components. ValueAdd: type: object properties: diff --git a/override/src/main/kotlin/com/expediagroup/sdk/rapid/models/Status.kt b/override/src/main/kotlin/com/expediagroup/sdk/rapid/models/Status.kt new file mode 100644 index 0000000000..6081511490 --- /dev/null +++ b/override/src/main/kotlin/com/expediagroup/sdk/rapid/models/Status.kt @@ -0,0 +1,45 @@ +/* + * Copyright (C) 2022 Expedia, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@file:Suppress( + "ArrayInDataClass", + "EnumEntryName", + "RemoveRedundantQualifierName", + "UnusedImport" +) + +package com.expediagroup.sdk.rapid.models + +import com.fasterxml.jackson.annotation.JsonProperty + +/** + * Rates returned are always AVAILABLE. PRICE_CHANGED and SOLD_OUT are never returned for rates in the Availability + * call. + * Values: AVAILABLE, PRICE_CHANGED, SOLD_OUT + */ +@Deprecated("This is replaced by Rate.Status") +enum class Status(val value: kotlin.String) { + @JsonProperty("available") + AVAILABLE("available"), + + @Deprecated("Never Returned") + @JsonProperty("price_changed") + PRICE_CHANGED("price_changed"), + + @Deprecated("Never Returned") + @JsonProperty("sold_out") + SOLD_OUT("sold_out") +} diff --git a/specs.yaml b/specs.yaml index fa95244a1c..01d36b07d9 100644 --- a/specs.yaml +++ b/specs.yaml @@ -21,6 +21,8 @@ tags: description: Retrieve existing itineraries or cancel existing rooms. - name: Notifications description: Requests test notifications and undelivered notifications. + - name: Merchandising + description: "Information about campaigns, promotions, and other merchandising opportunities" paths: /properties/content: get: @@ -552,6 +554,7 @@ paths: business_model: expedia_collect: true property_collect: false + updated_expedia_collect: true checkin: "24_hour": 24-hour check-in begin_time: 3:00 PM @@ -568,6 +571,11 @@ paths: min_age: 18 checkout: time: 11:00 AM + instructions: "The host requests you complete the following\ + \ cleaning tasks before checking out:
    Load and start\ + \ the dishwasher
    Strip any used beds, gather used towels,\ + \ and store extra beds
    Remove personal items, remove\ + \ leftover food and drinks, and take out the trash" fees: mandatory: "

    You'll be asked to pay the following charges\ \ at the hotel:

    • Deposit: USD 50 per day
    • Resort\ @@ -853,6 +861,7 @@ paths: business_model: expedia_collect: true property_collect: true + updated_expedia_collect: true rank: 99999999 checkin: begin_time: 4:00 PM @@ -877,6 +886,11 @@ paths: min_age: 21 checkout: time: 10:00 AM + instructions: "The host requests you complete the following\ + \ cleaning tasks before checking out:
      Load and start\ + \ the dishwasher
      Strip any used beds, gather used towels,\ + \ and store extra beds
      Remove personal items, remove\ + \ leftover food and drinks, and take out the trash" fees: traveler_service: "Your credit card statement will show two\ \ separate charges, one for the booking amount and property\ @@ -1176,6 +1190,7 @@ paths: business_model: expedia_collect: true property_collect: false + updated_expedia_collect: true checkin: "24_hour": 24-hour check-in begin_time: 3:00 PM @@ -1192,6 +1207,11 @@ paths: min_age: 18 checkout: time: 11:00 AM + instructions: "The host requests you complete the following\ + \ cleaning tasks before checking out:
      Load and start\ + \ the dishwasher
      Strip any used beds, gather used towels,\ + \ and store extra beds
      Remove personal items, remove\ + \ leftover food and drinks, and take out the trash" fees: mandatory: "

      You'll be asked to pay the following charges\ \ at the hotel:

      • Deposit: USD 50 per day
      • Resort\ @@ -1495,6 +1515,7 @@ paths: business_model: expedia_collect: true property_collect: true + updated_expedia_collect: false checkin: "24_hour": 24-hour check-in begin_time: 3:00 PM @@ -1511,6 +1532,11 @@ paths: min_age: 18 checkout: time: 11:00 AM + instructions: "The host requests you complete the following\ + \ cleaning tasks before checking out:
        Load and start\ + \ the dishwasher
        Strip any used beds, gather used towels,\ + \ and store extra beds
        Remove personal items, remove\ + \ leftover food and drinks, and take out the trash" fees: mandatory: "

        You'll be asked to pay the following charges\ \ at the hotel:

        • Deposit: USD 50 per day
        • Resort\ @@ -2708,8 +2734,8 @@ paths:
          Example of a JSONL file with 2 properties: ``` - {"property_id":"12345","name":"Test Property Name","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":false,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345"},"fr-FR":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":48382,"overall":"3.1","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"73%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838}},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":false},"dates":{"added":"1998-07-19T05:00:00.000Z","updated":"2018-03-22T07:23:14.000Z"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"chain":{"id":"-6","name":"Hyatt Hotels"},"brand":{"id":"2209","name":"Hyatt Place"},"supply_source":"expedia"} - {"property_id":"67890","name":"Test Property Name 2","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":true,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890"},"de-DE":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":7651,"overall":"4.3","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"80%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838}},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":true},"dates":{"added":"1998-07-20T05:00:00.000Z","updated":"2018-03-22T13:33:17.000Z"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"chain":{"id":"-5","name":"Hilton Worldwide"},"brand":{"id":"358","name":"Hampton Inn"},"supply_source":"expedia"} + {"property_id":"12345","name":"Test Property Name","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":false,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345"},"fr-FR":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":48382,"overall":"3.1","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"73%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838}},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":false,"updated_expedia_collect":true},"dates":{"added":"1998-07-19T05:00:00.000Z","updated":"2018-03-22T07:23:14.000Z"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"chain":{"id":"-6","name":"Hyatt Hotels"},"brand":{"id":"2209","name":"Hyatt Place"},"supply_source":"expedia"} + {"property_id":"67890","name":"Test Property Name 2","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":true,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890"},"de-DE":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":7651,"overall":"4.3","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"80%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838}},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":true,"updated_expedia_collect":false},"dates":{"added":"1998-07-20T05:00:00.000Z","updated":"2018-03-22T13:33:17.000Z"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"chain":{"id":"-5","name":"Hilton Worldwide"},"brand":{"id":"358","name":"Hampton Inn"},"supply_source":"expedia"} ``` operationId: getPropertyCatalogFile parameters: @@ -3032,8 +3058,8 @@ paths:
          Example of a JSONL file with 2 properties: ``` - {"property_id":"12345","name":"Test Property Name","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":false,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345"},"fr-FR":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":48382,"overall":"3.1","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"73%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838}},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":false},"checkin":{"24_hour":"24-hour check-in","begin_time":"3:00 PM","end_time":"11:00 PM","instructions":"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />","special_instructions":"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.","min_age":18},"checkout":{"time":"11:00 AM"},"fees":{"mandatory":"

          You'll be asked to pay the following charges at the hotel:

          • Deposit: USD 50 per day
          • Resort fee: USD 29.12 per accommodation, per night
          The hotel resort fee includes:
          • Fitness center access
          • Internet access
          • Phone calls
          • Additional inclusions

          We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

          ","optional":"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
        • Airport shuttle fee: USD 350 per vehicle (one way)
        • Rollaway bed fee: USD 175 per night
        • "},"policies":{"know_before_you_go":"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
        • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
        • Only registered guests are allowed in the guestrooms.
        • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
        "},"attributes":{"general":{"2549":{"id":"2549","name":"No elevators"},"3357":{"id":"3357","name":"Caters to adults only"}},"pets":{"51":{"id":"51","name":"Pets allowed"},"2809":{"id":"2809","name":"Dogs only"},"3321":{"id":"3321","name":"Pet maximum weight in kg is - 24","value":24}}},"amenities":{"9":{"id":"9","name":"Fitness facilities"},"2820":{"id":"2820","name":"Number of indoor pools - 10","value":10}},"images":[{"caption":"Featured Image","hero_image":true,"category":3,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}}}],"onsite_payments":{"currency":"USD","types":{"171":{"id":"171","name":"American Express"}}},"rooms":{"224829":{"id":"224829","name":"Single Room","descriptions":{"overview":"2 Twin Beds
        269-sq-foot (25-sq-meter) room with mountain views

        Internet - Free WiFi
        Entertainment - Flat-screen TV with cable channels
        Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
        Sleep - Premium bedding
        Bathroom - Private bathroom, shower, bathrobes, and free toiletries
        Practical - Safe and desk; cribs/infant beds available on request
        Comfort - Climate-controlled air conditioning and daily housekeeping
        Non-Smoking
        "},"amenities":{"130":{"id":"130","name":"Refrigerator"},"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"}},"images":[{"hero_image":true,"category":21001,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}},"caption":"Guestroom"}],"bed_groups":{"37321":{"id":"37321","description":"1 King Bed","configuration":[{"type":"KingBed","size":"King","quantity":1}]}},"area":{"square_meters":20,"square_feet":215},"views":{"4146":{"id":"4146","name":"Courtyard view"}},"occupancy":{"max_allowed":{"total":5,"children":2,"adults":4},"age_categories":{"Adult":{"name":"Adult","minimum_age":9}}}}},"rates":{"333abc":{"id":"333abc","amenities":{"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"},"2104":{"id":"2104","name":"Full Breakfast"}},"special_offer_description":"Breakfast for 2 - Rate includes the following:\r\n
        • Accommodations as selected
        • \r\n
        • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
        • \r\n
        Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\r\n"}},"dates":{"added":"1998-07-19T05:00:00.000Z","updated":"2018-03-22T07:23:14.000Z"},"descriptions":{"amenities":"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.","dining":"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.","renovations":"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
        • Fitness facilities
        ","national_ratings":"For the benefit of our customers, we have provided a rating based on our rating system.","business_amenities":"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.","rooms":"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.","attractions":"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

        Distances are displayed to the nearest 0.1 mile and kilometer.

        Sogo Department Store - 0.7 km / 0.4 mi
        National Museum of Natural Science - 1.1 km / 0.7 mi
        Shr-Hwa International Tower - 1.4 km / 0.8 mi
        Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
        Taichung Metropolitan Opera House - 1.7 km / 1 mi
        Tiger City Mall - 1.8 km / 1.1 mi
        Maple Garden Park - 1.9 km / 1.2 mi
        National Museum of Fine Arts - 2.1 km / 1.3 mi
        Feng Chia University - 2.4 km / 1.5 mi
        Bao An Temple - 2.5 km / 1.6 mi
        Fengjia Night Market - 2.5 km / 1.6 mi
        Zhonghua Night Market - 2.7 km / 1.7 mi
        Chonglun Park - 2.9 km / 1.8 mi
        Wan He Temple - 2.9 km / 1.8 mi
        Chungyo Department Store - 3.1 km / 1.9 mi

        The nearest airports are:
        Taichung (RMQ) - 12 km / 7.5 mi
        Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
        Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

        ","location":"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.","headline":"Near National Museum of Natural Science","general":"General description"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"airports":{"preferred":{"iata_airport_code":"SGF"}},"themes":{"2337":{"id":"2337","name":"Luxury Hotel"},"2341":{"id":"2341","name":"Spa Hotel"}},"all_inclusive":{"all_rate_plans":true,"some_rate_plans":false,"details":"

        This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

        Activities and facilities/equipment
        Land activities

        • Fitness facilities

        Lessons/classes/games
        • Pilates
        • Yoga

        Entertainment

        • Onsite entertainment and activities
        • Onsite live performances

        "},"tax_id":"AB-012-987-1234-01","chain":{"id":"-6","name":"Hyatt Hotels"},"brand":{"id":"2209","name":"Hyatt Place"},"spoken_languages":{"vi":{"id":"vi","name":"Vietnamese"}},"multi_unit":true,"payment_registration_recommended":false,"vacation_rental_details": {"registry_number": "Property Registration Number 123456","private_host": "true","property_manager": {"name": "Victor","links": {"image": {"method": "GET","href": "https://test-image/test/test/836f1097-fbcf-43b5-bc02-c8ff6658cb90.c1.jpg"}}},"rental_agreement": {"links": {"rental_agreement": {"method": "GET","href": "https://test-link.test.amazonaws.com/rentalconditions_property_d65e7eb5-4a7c-4a80-a8a3-171999f9f444.pdf"}}},"house_rules": ["Children welcome","No pets","No smoking","No parties or events"],"amenities": {"4296": {"id": "4296","name": "Furnished balcony or patio"},"2859": {"id": "2859","name": "Private pool"}},"vrbo_srp_id": "123.1234567.5678910","listing_id": "1234567","listing_number": "5678910","listing_source": "HOMEAWAY_US","listing_unit": "/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60"},"supply_source":"vrbo","registry_number":"Property Registration Number 123456"} - {"property_id":"67890","name":"Test Property Name 2","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":true,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890"},"de-DE":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":7651,"overall":"4.3","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"80%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838},"obfuscated_coordinates":{"latitude":28.339303,"longitude":-81.47791},"obfuscation_required":true},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":true},"checkin":{"24_hour":"24-hour check-in","begin_time":"3:00 PM","end_time":"11:00 PM","instructions":"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />","special_instructions":"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.","min_age":18},"checkout":{"time":"11:00 AM"},"fees":{"mandatory":"

        You'll be asked to pay the following charges at the hotel:

        • Deposit: USD 50 per day
        • Resort fee: USD 29.12 per accommodation, per night
        The hotel resort fee includes:
        • Fitness center access
        • Internet access
        • Phone calls
        • Additional inclusions

        We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

        ","optional":"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
      • Airport shuttle fee: USD 350 per vehicle (one way)
      • Rollaway bed fee: USD 175 per night
      • "},"policies":{"know_before_you_go":"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
      • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
      • Only registered guests are allowed in the guestrooms.
      • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
      "},"attributes":{"general":{"2549":{"id":"2549","name":"No elevators"},"3357":{"id":"3357","name":"Caters to adults only"}},"pets":{"51":{"id":"51","name":"Pets allowed"},"2809":{"id":"2809","name":"Dogs only"},"3321":{"id":"3321","name":"Pet maximum weight in kg is - 24","value":24}}},"amenities":{"9":{"id":"9","name":"Fitness facilities"},"2820":{"id":"2820","name":"Number of indoor pools - 10","value":10}},"images":[{"caption":"Featured Image","hero_image":true,"category":3,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}}}],"onsite_payments":{"currency":"USD","types":{"171":{"id":"171","name":"American Express"}}},"rooms":{"224829":{"id":"224829","name":"Single Room","descriptions":{"overview":"2 Twin Beds
      269-sq-foot (25-sq-meter) room with mountain views

      Internet - Free WiFi
      Entertainment - Flat-screen TV with cable channels
      Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
      Sleep - Premium bedding
      Bathroom - Private bathroom, shower, bathrobes, and free toiletries
      Practical - Safe and desk; cribs/infant beds available on request
      Comfort - Climate-controlled air conditioning and daily housekeeping
      Non-Smoking
      "},"amenities":{"130":{"id":"130","name":"Refrigerator"},"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"}},"images":[{"hero_image":true,"category":21001,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}},"caption":"Guestroom"}],"bed_groups":{"37321":{"id":"37321","description":"1 King Bed","configuration":[{"type":"KingBed","size":"King","quantity":1}]}},"area":{"square_meters":17},"views":{"4134":{"id":"4134","name":"City view"}},"occupancy":{"max_allowed":{"total":3,"children":2,"adults":3},"age_categories":{"ChildAgeA":{"name":"ChildAgeA","minimum_age":3}}}}},"rates":{"333abc":{"id":"333abc","amenities":{"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"},"2104":{"id":"2104","name":"Full Breakfast"}},"special_offer_description":"Breakfast for 2 - Rate includes the following:\r\n
      • Accommodations as selected
      • \r\n
      • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
      • \r\n
      Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\r\n"}},"dates":{"added":"1998-07-20T05:00:00.000Z","updated":"2018-03-22T13:33:17.000Z"},"descriptions":{"amenities":"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.","dining":"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.","renovations":"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
      • Fitness facilities
      ","national_ratings":"For the benefit of our customers, we have provided a rating based on our rating system.","business_amenities":"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.","rooms":"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.","attractions":"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

      Distances are displayed to the nearest 0.1 mile and kilometer.

      Sogo Department Store - 0.7 km / 0.4 mi
      National Museum of Natural Science - 1.1 km / 0.7 mi
      Shr-Hwa International Tower - 1.4 km / 0.8 mi
      Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
      Taichung Metropolitan Opera House - 1.7 km / 1 mi
      Tiger City Mall - 1.8 km / 1.1 mi
      Maple Garden Park - 1.9 km / 1.2 mi
      National Museum of Fine Arts - 2.1 km / 1.3 mi
      Feng Chia University - 2.4 km / 1.5 mi
      Bao An Temple - 2.5 km / 1.6 mi
      Fengjia Night Market - 2.5 km / 1.6 mi
      Zhonghua Night Market - 2.7 km / 1.7 mi
      Chonglun Park - 2.9 km / 1.8 mi
      Wan He Temple - 2.9 km / 1.8 mi
      Chungyo Department Store - 3.1 km / 1.9 mi

      The nearest airports are:
      Taichung (RMQ) - 12 km / 7.5 mi
      Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
      Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

      ","location":"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.","headline":"Near National Museum of Natural Science","general":"General description"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"airports":{"preferred":{"iata_airport_code":"SGF"}},"themes":{"2337":{"id":"2337","name":"Luxury Hotel"},"2341":{"id":"2341","name":"Spa Hotel"}},"all_inclusive":{"all_rate_plans":true,"some_rate_plans":false,"details":"

      This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

      Activities and facilities/equipment
      Land activities

      • Fitness facilities

      Lessons/classes/games
      • Pilates
      • Yoga

      Entertainment

      • Onsite entertainment and activities
      • Onsite live performances

      "},"tax_id":"CD-012-987-1234-02","chain":{"id":"-5","name":"Hilton Worldwide"},"brand":{"id":"358","name":"Hampton Inn"},"spoken_languages":{"en":{"id":"en","name":"English"}},"multi_unit":true,"payment_registration_recommended":true,"vacation_rental_details":{"registry_number":"Property Registration Number 123456","private_host":"true","property_manager":{"name":"John Smith","links":{"image":{"method":"GET","href":"https://example.com/profile.jpg"}}},"rental_agreement":{"links":{"rental_agreement":{"method":"GET","href":"https:/example.com/rentalconditions.pdf"}}},"house_rules":["Children welcome","No pets","No smoking","No parties or events"],"amenities":{"2859":{"id":"2859","name":"Private pool"},"4296":{"id":"4296","name":"Furnished balcony or patio"}},"vrbo_srp_id":"123.1234567.5678910","listing_id":"1234567","listing_number":"5678910","listing_source":"HOMEAWAY_US","listing_unit":"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60"},"supply_source":"vrbo","registry_number":"Property Registration Number 123456"} + {"property_id":"12345","name":"Test Property Name","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":false,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=12345"},"fr-FR":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=fr-FR&include=address&property_id=12345"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":48382,"overall":"3.1","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"73%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838}},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":false,"updated_expedia_collect":false},"checkin":{"24_hour":"24-hour check-in","begin_time":"3:00 PM","end_time":"11:00 PM","instructions":"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />","special_instructions":"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.","min_age":18},"checkout":{"time":"11:00 AM","instructions":"The host requests you complete the following cleaning tasks before checking out:
      Load and start the dishwasher
      Strip any used beds, gather used towels, and store extra beds
      Remove personal items, remove leftover food and drinks, and take out the trash"},"fees":{"mandatory":"

      You'll be asked to pay the following charges at the hotel:

      • Deposit: USD 50 per day
      • Resort fee: USD 29.12 per accommodation, per night
      The hotel resort fee includes:
      • Fitness center access
      • Internet access
      • Phone calls
      • Additional inclusions

      We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

      ","optional":"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
    • Airport shuttle fee: USD 350 per vehicle (one way)
    • Rollaway bed fee: USD 175 per night
    • "},"policies":{"know_before_you_go":"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
    • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
    • Only registered guests are allowed in the guestrooms.
    • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
    "},"attributes":{"general":{"2549":{"id":"2549","name":"No elevators"},"3357":{"id":"3357","name":"Caters to adults only"}},"pets":{"51":{"id":"51","name":"Pets allowed"},"2809":{"id":"2809","name":"Dogs only"},"3321":{"id":"3321","name":"Pet maximum weight in kg is - 24","value":24}}},"amenities":{"9":{"id":"9","name":"Fitness facilities"},"2820":{"id":"2820","name":"Number of indoor pools - 10","value":10}},"images":[{"caption":"Featured Image","hero_image":true,"category":3,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}}}],"onsite_payments":{"currency":"USD","types":{"171":{"id":"171","name":"American Express"}}},"rooms":{"224829":{"id":"224829","name":"Single Room","descriptions":{"overview":"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    "},"amenities":{"130":{"id":"130","name":"Refrigerator"},"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"}},"images":[{"hero_image":true,"category":21001,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}},"caption":"Guestroom"}],"bed_groups":{"37321":{"id":"37321","description":"1 King Bed","configuration":[{"type":"KingBed","size":"King","quantity":1}]}},"area":{"square_meters":20,"square_feet":215},"views":{"4146":{"id":"4146","name":"Courtyard view"}},"occupancy":{"max_allowed":{"total":5,"children":2,"adults":4},"age_categories":{"Adult":{"name":"Adult","minimum_age":9}}}}},"rates":{"333abc":{"id":"333abc","amenities":{"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"},"2104":{"id":"2104","name":"Full Breakfast"}},"special_offer_description":"Breakfast for 2 - Rate includes the following:\r\n
    • Accommodations as selected
    • \r\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \r\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\r\n"}},"dates":{"added":"1998-07-19T05:00:00.000Z","updated":"2018-03-22T07:23:14.000Z"},"descriptions":{"amenities":"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.","dining":"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.","renovations":"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    ","national_ratings":"For the benefit of our customers, we have provided a rating based on our rating system.","business_amenities":"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.","rooms":"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.","attractions":"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    ","location":"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.","headline":"Near National Museum of Natural Science","general":"General description"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"airports":{"preferred":{"iata_airport_code":"SGF"}},"themes":{"2337":{"id":"2337","name":"Luxury Hotel"},"2341":{"id":"2341","name":"Spa Hotel"}},"all_inclusive":{"all_rate_plans":true,"some_rate_plans":false,"details":"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    "},"tax_id":"AB-012-987-1234-01","chain":{"id":"-6","name":"Hyatt Hotels"},"brand":{"id":"2209","name":"Hyatt Place"},"spoken_languages":{"vi":{"id":"vi","name":"Vietnamese"}},"multi_unit":true,"payment_registration_recommended":false,"vacation_rental_details": {"registry_number": "Property Registration Number 123456","private_host": "true","property_manager": {"name": "Victor","links": {"image": {"method": "GET","href": "https://test-image/test/test/836f1097-fbcf-43b5-bc02-c8ff6658cb90.c1.jpg"}}},"rental_agreement": {"links": {"rental_agreement": {"method": "GET","href": "https://test-link.test.amazonaws.com/rentalconditions_property_d65e7eb5-4a7c-4a80-a8a3-171999f9f444.pdf"}}},"house_rules": ["Children welcome","No pets","No smoking","No parties or events"],"amenities": {"4296": {"id": "4296","name": "Furnished balcony or patio"},"2859": {"id": "2859","name": "Private pool"}},"vrbo_srp_id": "123.1234567.5678910","listing_id": "1234567","listing_number": "5678910","listing_source": "HOMEAWAY_US","listing_unit": "/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60"},"supply_source":"vrbo","registry_number":"Property Registration Number 123456"} + {"property_id":"67890","name":"Test Property Name 2","address":{"line_1":"123 Main St","line_2":"Apt A","city":"Springfield","state_province_code":"MO","state_province_name":"Missouri","postal_code":"65804","country_code":"US","obfuscation_required":true,"localized":{"links":{"es-ES":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=es-ES&include=address&property_id=67890"},"de-DE":{"method":"GET","href":"https://api.ean.com/v3/properties/content?language=de-DE&include=address&property_id=67890"}}}},"ratings":{"property":{"rating":"3.5","type":"Star"},"guest":{"count":7651,"overall":"4.3","cleanliness":"4.2","service":"1.1","comfort":"4.3","condition":"1.6","location":"4.0","neighborhood":"3.4","quality":"3.4","value":"2.2","amenities":"1.4","recommendation_percent":"80%"}},"location":{"coordinates":{"latitude":37.15845,"longitude":-93.26838},"obfuscated_coordinates":{"latitude":28.339303,"longitude":-81.47791},"obfuscation_required":true},"phone":"1-417-862-0153","fax":"1-417-863-7249","category":{"id":"1","name":"Hotel"},"rank":42,"business_model":{"expedia_collect":true,"property_collect":true,"updated_expedia_collect":true},"checkin":{"24_hour":"24-hour check-in","begin_time":"3:00 PM","end_time":"11:00 PM","instructions":"Extra-person charges may apply and vary depending on hotel policy. <br />Government-issued photo identification and a credit card or cash deposit are required at check-in for incidental charges. <br />Special requests are subject to availability upon check-in and may incur additional charges. Special requests cannot be guaranteed. <br />","special_instructions":"There is no front desk at this property. To make arrangements for check-in please contact the property ahead of time using the information on the booking confirmation.","min_age":18},"checkout":{"time":"11:00 AM","instructions":"The host requests you complete the following cleaning tasks before checking out:
    Load and start the dishwasher
    Strip any used beds, gather used towels, and store extra beds
    Remove personal items, remove leftover food and drinks, and take out the trash"},"fees":{"mandatory":"

    You'll be asked to pay the following charges at the hotel:

    • Deposit: USD 50 per day
    • Resort fee: USD 29.12 per accommodation, per night
    The hotel resort fee includes:
    • Fitness center access
    • Internet access
    • Phone calls
    • Additional inclusions

    We have included all charges provided to us by the property. However, charges can vary, for example, based on length of stay or the room you book.

    ","optional":"Fee for in-room wireless Internet: USD 15 per hour (rates may vary)
  • Airport shuttle fee: USD 350 per vehicle (one way)
  • Rollaway bed fee: USD 175 per night
  • "},"policies":{"know_before_you_go":"Reservations are required for massage services and spa treatments. Reservations can be made by contacting the hotel prior to arrival, using the contact information on the booking confirmation.
  • Children 11 years old and younger stay free when occupying the parent or guardian's room, using existing bedding.
  • Only registered guests are allowed in the guestrooms.
  • Some facilities may have restricted access. Guests can contact the property for details using the contact information on the booking confirmation.
  • "},"attributes":{"general":{"2549":{"id":"2549","name":"No elevators"},"3357":{"id":"3357","name":"Caters to adults only"}},"pets":{"51":{"id":"51","name":"Pets allowed"},"2809":{"id":"2809","name":"Dogs only"},"3321":{"id":"3321","name":"Pet maximum weight in kg is - 24","value":24}}},"amenities":{"9":{"id":"9","name":"Fitness facilities"},"2820":{"id":"2820","name":"Number of indoor pools - 10","value":10}},"images":[{"caption":"Featured Image","hero_image":true,"category":3,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}}}],"onsite_payments":{"currency":"USD","types":{"171":{"id":"171","name":"American Express"}}},"rooms":{"224829":{"id":"224829","name":"Single Room","descriptions":{"overview":"2 Twin Beds
    269-sq-foot (25-sq-meter) room with mountain views

    Internet - Free WiFi
    Entertainment - Flat-screen TV with cable channels
    Food & Drink - Refrigerator, coffee/tea maker, room service, and free bottled water
    Sleep - Premium bedding
    Bathroom - Private bathroom, shower, bathrobes, and free toiletries
    Practical - Safe and desk; cribs/infant beds available on request
    Comfort - Climate-controlled air conditioning and daily housekeeping
    Non-Smoking
    "},"amenities":{"130":{"id":"130","name":"Refrigerator"},"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"}},"images":[{"hero_image":true,"category":21001,"links":{"70px":{"method":"GET","href":"https://i.travelapi.com/hotels/1000000/20000/15300/15237/bef1b976_t.jpg"}},"caption":"Guestroom"}],"bed_groups":{"37321":{"id":"37321","description":"1 King Bed","configuration":[{"type":"KingBed","size":"King","quantity":1}]}},"area":{"square_meters":17},"views":{"4134":{"id":"4134","name":"City view"}},"occupancy":{"max_allowed":{"total":3,"children":2,"adults":3},"age_categories":{"ChildAgeA":{"name":"ChildAgeA","minimum_age":3}}}}},"rates":{"333abc":{"id":"333abc","amenities":{"1234":{"id":"1234","name":"Test Amenity - 200","value":"200"},"2104":{"id":"2104","name":"Full Breakfast"}},"special_offer_description":"Breakfast for 2 - Rate includes the following:\r\n
    • Accommodations as selected
    • \r\n
    • Breakfast in hotel restaurant for up to 2 adults and children 12 years old and under registered in the same room
    • \r\n
    Must book this rate plan to receive benefits. Details provided at check-in. Taxes and gratuity may not be included. No refunds for any unused portion of offer. Offer subject to availability. Offer is not valid with groups/conventions and may not be combined with other promotional offers. Other restrictions and blackout dates may apply.\r\n"}},"dates":{"added":"1998-07-20T05:00:00.000Z","updated":"2018-03-22T13:33:17.000Z"},"descriptions":{"amenities":"Don't miss out on the many recreational opportunities, including an outdoor pool, a sauna, and a fitness center. Additional features at this hotel include complimentary wireless Internet access, concierge services, and an arcade/game room.","dining":"Grab a bite at one of the hotel's 3 restaurants, or stay in and take advantage of 24-hour room service. Quench your thirst with your favorite drink at a bar/lounge. Buffet breakfasts are available daily for a fee.","renovations":"During renovations, the hotel will make every effort to minimize noise and disturbance. The property will be renovating from 08 May 2017 to 18 May 2017 (completion date subject to change). The following areas are affected:
    • Fitness facilities
    ","national_ratings":"For the benefit of our customers, we have provided a rating based on our rating system.","business_amenities":"Featured amenities include complimentary wired Internet access, a 24-hour business center, and limo/town car service. Event facilities at this hotel consist of a conference center and meeting rooms. Free self parking is available onsite.","rooms":"Make yourself at home in one of the 334 air-conditioned rooms featuring LCD televisions. Complimentary wired and wireless Internet access keeps you connected, and satellite programming provides entertainment. Private bathrooms with separate bathtubs and showers feature deep soaking bathtubs and complimentary toiletries. Conveniences include phones, as well as safes and desks.","attractions":"Distances are calculated in a straight line from the property's location to the point of interest or attraction, and may not reflect actual travel distance.

    Distances are displayed to the nearest 0.1 mile and kilometer.

    Sogo Department Store - 0.7 km / 0.4 mi
    National Museum of Natural Science - 1.1 km / 0.7 mi
    Shr-Hwa International Tower - 1.4 km / 0.8 mi
    Shinkong Mitsukoshi Department Store - 1.5 km / 0.9 mi
    Taichung Metropolitan Opera House - 1.7 km / 1 mi
    Tiger City Mall - 1.8 km / 1.1 mi
    Maple Garden Park - 1.9 km / 1.2 mi
    National Museum of Fine Arts - 2.1 km / 1.3 mi
    Feng Chia University - 2.4 km / 1.5 mi
    Bao An Temple - 2.5 km / 1.6 mi
    Fengjia Night Market - 2.5 km / 1.6 mi
    Zhonghua Night Market - 2.7 km / 1.7 mi
    Chonglun Park - 2.9 km / 1.8 mi
    Wan He Temple - 2.9 km / 1.8 mi
    Chungyo Department Store - 3.1 km / 1.9 mi

    The nearest airports are:
    Taichung (RMQ) - 12 km / 7.5 mi
    Taipei (TPE-Taoyuan Intl.) - 118.3 km / 73.5 mi
    Taipei (TSA-Songshan) - 135.5 km / 84.2 mi

    ","location":"This 4-star hotel is within close proximity of Shr-Hwa International Tower and Shinkong Mitsukoshi Department Store. A stay at Tempus Hotel Taichung places you in the heart of Taichung, convenient to Sogo Department Store and National Museum of Natural Science.","headline":"Near National Museum of Natural Science","general":"General description"},"statistics":{"52":{"id":"52","name":"Total number of rooms - 820","value":"820"},"54":{"id":"54","name":"Number of floors - 38","value":"38"}},"airports":{"preferred":{"iata_airport_code":"SGF"}},"themes":{"2337":{"id":"2337","name":"Luxury Hotel"},"2341":{"id":"2341","name":"Spa Hotel"}},"all_inclusive":{"all_rate_plans":true,"some_rate_plans":false,"details":"

    This resort is all-inclusive. Onsite food and beverages are included in the room price (some restrictions may apply).

    Activities and facilities/equipment
    Land activities

    • Fitness facilities

    Lessons/classes/games
    • Pilates
    • Yoga

    Entertainment

    • Onsite entertainment and activities
    • Onsite live performances

    "},"tax_id":"CD-012-987-1234-02","chain":{"id":"-5","name":"Hilton Worldwide"},"brand":{"id":"358","name":"Hampton Inn"},"spoken_languages":{"en":{"id":"en","name":"English"}},"multi_unit":true,"payment_registration_recommended":true,"vacation_rental_details":{"registry_number":"Property Registration Number 123456","private_host":"true","property_manager":{"name":"John Smith","links":{"image":{"method":"GET","href":"https://example.com/profile.jpg"}}},"rental_agreement":{"links":{"rental_agreement":{"method":"GET","href":"https:/example.com/rentalconditions.pdf"}}},"house_rules":["Children welcome","No pets","No smoking","No parties or events"],"amenities":{"2859":{"id":"2859","name":"Private pool"},"4296":{"id":"4296","name":"Furnished balcony or patio"}},"vrbo_srp_id":"123.1234567.5678910","listing_id":"1234567","listing_number":"5678910","listing_source":"HOMEAWAY_US","listing_unit":"/units/0000/32d82dfa-1a48-45d6-9132-49fdbf1bfc60"},"supply_source":"vrbo","registry_number":"Property Registration Number 123456"} ``` operationId: getPropertyContentFile parameters: @@ -4886,6 +4912,12 @@ paths: schema: type: string example: gzip + - name: Campaign-Id + in: header + description: | + The Merchandising `Campaign-Id` that was involved in the traveler shopping for these properties. + schema: + type: string - name: User-Agent in: header description: | @@ -4934,7 +4966,7 @@ paths: required: true schema: type: string - example: '2025-06-01' + example: '2026-03-01' - name: checkout in: query description: | @@ -4942,7 +4974,7 @@ paths: required: true schema: type: string - example: '2025-06-03' + example: '2026-03-03' - name: currency in: query description: | @@ -5100,6 +5132,7 @@ paths: * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. + * `deal` - Filters results to only show rates that have a promotion that is of the type deal. style: form explode: true schema: @@ -5110,6 +5143,8 @@ paths: - refundable - expedia_collect - property_collect + - loyalty + - deal examples: Optional: value: null @@ -5124,6 +5159,8 @@ paths: * `sale_scenario.mobile_promotion` - Enable the `mobile_promotion` flag under the `room.rate.sale_scenario` section of the response. * `rooms.rates.marketing_fee_incentives` - When a rate has a marketing fee incentive applied, the response will include the `marketing_fee_incentives` array if this flag is provided in the request. * `rooms.rates.current_refundability` - Displays the current `refundability` of a rate. + * `rooms.rates.holdable` - Enables the `holdable` flag on the response to indicate whether the rate supports [Booking Hold and Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume). + * `rooms.rates.marketing_fee_details` - Displays a more granular view of marketing fees in the response. schema: type: array items: @@ -5133,6 +5170,8 @@ paths: - sale_scenario.mobile_promotion - rooms.rates.marketing_fee_incentives - rooms.rates.current_refundability + - rooms.rates.holdable + - rooms.rates.marketing_fee_details examples: Optional: value: null @@ -5361,10 +5400,10 @@ paths: currency: USD marketing_fee: billable_currency: - value: "15.00" + value: "18.00" currency: CAD request_currency: - value: "10.00" + value: "12.00" currency: USD gross_profit: billable_currency: @@ -5409,6 +5448,35 @@ paths: request_currency: value: "3.00" currency: USD + marketing_fee_details: + base: + billable_currency: + value: "3.50" + currency: CAD + request_currency: + value: "2.33" + currency: USD + overrides: + billable_currency: + value: "10.00" + currency: CAD + request_currency: + value: "6.67" + currency: USD + incentives: + billable_currency: + value: "1.50" + currency: CAD + request_currency: + value: "1.00" + currency: USD + other: + billable_currency: + value: "3.00" + currency: CAD + request_currency: + value: "2.00" + currency: USD "1-7,10": nightly: - - type: base_rate @@ -5499,6 +5567,28 @@ paths: request_currency: value: "3.00" currency: USD + marketing_fee_details: + base: + billable_currency: + value: "3.50" + currency: CAD + request_currency: + value: "2.33" + currency: USD + overrides: + billable_currency: + value: "10.00" + currency: CAD + request_currency: + value: "6.67" + currency: USD + incentives: + billable_currency: + value: "1.50" + currency: CAD + request_currency: + value: "1.00" + currency: USD promotions: value_adds: "123abc": @@ -6114,7 +6204,7 @@ paths: If specified must also specify `checkout`. schema: type: string - example: '2025-06-01' + example: '2026-03-01' - name: checkout in: query description: | @@ -6123,7 +6213,7 @@ paths: If specified must also specify `checkin`.
    schema: type: string - example: '2025-06-03' + example: '2026-03-03' - name: exclusion in: query description: | @@ -6160,6 +6250,7 @@ paths: * `expedia_collect` - Filters results to only show rates where payment is collected by Expedia at the time of booking. These properties can be eligible for payments via Expedia Affiliate Collect(EAC). * `property_collect` - Filters results to only show rates where payment is collected by the property after booking. This can include rates that require a deposit by the property, dependent upon the deposit policies. * `loyalty` - Filters results to only show rates that are eligible for loyalty points. + * `deal` - Filters results to only show rates that have a promotion that is of the type deal. style: form explode: true schema: @@ -6170,6 +6261,8 @@ paths: - refundable - expedia_collect - property_collect + - loyalty + - deal examples: Optional: value: null @@ -6323,6 +6416,7 @@ paths: status: available available_rooms: 12 refundable: true + holdable: true member_deal_available: true sale_scenario: package: false @@ -6941,6 +7035,7 @@ paths: Available Example: value: status: available + holdable: true occupancy_pricing: "2": nightly: @@ -7146,10 +7241,10 @@ paths: currency: USD marketing_fee: billable_currency: - value: "215.00" - currency: USD + value: "18.00" + currency: CAD request_currency: - value: "215.00" + value: "12.00" currency: USD gross_profit: billable_currency: @@ -7180,6 +7275,35 @@ paths: request_currency: value: "10.00" currency: USD + marketing_fee_details: + base: + billable_currency: + value: "3.50" + currency: CAD + request_currency: + value: "2.33" + currency: USD + overrides: + billable_currency: + value: "10.00" + currency: CAD + request_currency: + value: "6.67" + currency: USD + incentives: + billable_currency: + value: "1.50" + currency: CAD + request_currency: + value: "1.00" + currency: USD + other: + billable_currency: + value: "3.00" + currency: CAD + request_currency: + value: "2.00" + currency: USD links: additional_rates: method: GET @@ -7779,7 +7903,7 @@ paths: schema: type: string format: date - example: '2025-06-15' + example: '2026-03-15' - name: end_date in: query description: | @@ -7788,7 +7912,7 @@ paths: schema: type: string format: date - example: '2025-12-17' + example: '2026-09-17' responses: "200": description: OK @@ -8489,14 +8613,15 @@ paths: value: test@example.com - name: include in: query - description: "Options for which information to return in the response. The\ - \ value must be lower case.\n* `history` - Include itinerary history, showing\ - \ details of the changes made to this itinerary. Changes from the property/supplier\ - \ have an event_source equal to `other` in the response. \n* `history_v2`\ - \ - Include itinerary history, showing details of the changes made to this\ - \ itinerary. Changes from the property/supplier have an event_source equal\ - \ to `supplier` in the response. See the [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview)\ - \ for details.\n" + description: | + Options for which information to return in the response. The value must be lower case. + * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes + from the property/supplier have an event_source equal to `other` in the response. + * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes + from the property/supplier have an event_source equal to `supplier` in the response. See + [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) + for details. + * `marketing_fee_details` - Displays a more granular view of marketing fees in the response. required: false schema: type: array @@ -8504,6 +8629,8 @@ paths: type: string enum: - history + - history_v2 + - marketing_fee_details examples: Optional: value: null @@ -8705,7 +8832,189 @@ paths: property: method: GET href: https://www.example.com?key=123abd456 - travel_purpose: leisure + travel_purpose: business + trader_information: + traders: + - name: Test Property Name + address: + line_1: 123 Main St + city: Springfield + state_province_code: MO + postal_code: "65804" + country_code: US + business_register_name: A Real Registry + business_register_number: 72973910d + self_certification: true + phone: 1-417-555-1212 + right_to_withdraw_message: | + The right of withdrawal under European consumer law does not apply when you book + accommodation. Supplier cancellation policy will apply + terms_and_conditions: https://forever.travel-assets.com/flex/flexmanager/mediaasset/618796-0_2-UnitedKingdom_en.pdf + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + invoicing: + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + point_of_sale_display: Global Travel Site + email: chucktesta@mydomain.com + vat_number: "1234567890" + Itineraries with Property Collect: + value: + - itinerary_id: "8999989898988" + property_id: "8150374" + links: + cancel: + method: DELETE + href: /v3/itineraries/8999989898988?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + non_vat_expedia_invoice: + method: GET + href: /v3/itineraries/8999989898988/invoice?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + email: smith@example.com + phone: + country_code: "1" + area_code: "487" + number: "5550077" + rooms: + - id: "926784314" + confirmation_id: + expedia: "1234567890" + property: BEF23123AA + bed_group_id: d395b56d-d31d-4a84-ad2b-66820b1d48e2 + checkin: '2018-09-21' + checkout: '2018-09-23' + number_of_adults: 2 + child_ages: + - 2 + - 3 + given_name: Givenne + family_name: Nameo + status: booked + special_request: Please give me extra towels. + smoking: false + rate: + id: "035943984" + merchant_of_record: property + refundable: true + cancel_refund: + amount: -65.98 + currency: USD + amenities: + - "12345" + - "678" + - "9999" + promotions: + value_adds: + "123abc": + id: 123abc + description: 10 USD credit on activities and sports + for your stay. + "3x4mp13": + id: 3x4mp13 + description: 20% discount on theme park tickets purchased + through the concierge desk. + cancel_penalties: + - start: '2018-01-01T01:01:01.000-08:00' + end: '2018-12-12T01:01:01.000-08:00' + amount: "250.75" + currency: USD + nonrefundable_date_ranges: + - start: '2022-02-02' + end: '2022-02-02' + deposits: + - currency: USD + value: "220.75" + due: '2018-12-12T01:01:01.000-08:00' + pricing: + nightly: + - - type: base_rate + value: "111.23" + currency: USD + - type: sales_tax + value: "11.12" + currency: USD + - - type: base_rate + value: "111.23" + currency: USD + - type: sales_tax + value: "11.12" + currency: USD + stay: + - type: base_rate + value: "123.45" + currency: USD + totals: + inclusive: + billable_currency: + value: "368.15" + currency: USD + exclusive: + billable_currency: + value: "345.91" + currency: USD + marketing_fee: + billable_currency: + value: "7.75" + currency: USD + property_fees: + billable_currency: + value: "36.95" + currency: USD + fees: + mandatory_fee: + billable_currency: + value: "5.00" + currency: USD + resort_fee: + billable_currency: + value: "20.00" + currency: USD + mandatory_tax: + billable_currency: + value: "11.95" + currency: USD + links: + cancel: + method: DELETE + href: /v3/itineraries/8999989898988/rooms/d08572fc-82d2-4d5d-ad30-60f5be7fb53e?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + change: + method: PUT + href: /v3/itineraries/8999989898988/rooms/d08572fc-82d2-4d5d-ad30-60f5be7fb53e?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + shop_for_change: + method: GET + href: /v3/properties/8150374/availability?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + billing_contact: + given_name: John + family_name: Smith + address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + adjustment: + value: -100.0 + type: base_rate + currency: USD + creation_date_time: '2017-08-17T13:31:15.523Z' + affiliate_reference_id: 4480ABC + affiliate_metadata: This booking was made with EPS. + conversations: + links: + property: + method: GET + href: https://www.example.com?key=123abd456 + travel_purpose: business trader_information: traders: - name: Test Property Name @@ -8723,6 +9032,41 @@ paths: The right of withdrawal under European consumer law does not apply when you book accommodation. Supplier cancellation policy will apply terms_and_conditions: https://forever.travel-assets.com/flex/flexmanager/mediaasset/618796-0_2-UnitedKingdom_en.pdf + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + additional_handling: + authorized_expenses: total_plus_incidentals + specified_incidental_expenses: + - breakfast + - internet + total_charges_allowed: + value: "875.00" + currency: USD + is_cvc_required: true + authorizing_company: Conferma + card_contact: + email: chucktesta@mydomain.com + phone: + country_code: "1" + area_code: "555" + number: "5555555" + payment_allowable_period_start: '2024-01-01' + payment_allowable_period_end: '2025-08-01' + invoicing: + consent_to_share: true + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + email: chucktesta@mydomain.com + vat_number: "1234567890" Itinerary with History and Change - Extend Stay: value: - itinerary_id: "8999989898988" @@ -8865,6 +9209,41 @@ paths: method: GET href: https://www.example.com?key=123abd456 travel_purpose: unspecified + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + additional_handling: + authorized_expenses: total_plus_incidentals + specified_incidental_expenses: + - breakfast + - internet + total_charges_allowed: + value: "875.00" + currency: USD + is_cvc_required: true + authorizing_company: Conferma + card_contact: + email: chucktesta@mydomain.com + phone: + country_code: "1" + area_code: "555" + number: "5555555" + payment_allowable_period_start: '2024-01-01' + payment_allowable_period_end: '2025-08-01' + invoicing: + consent_to_share: true + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + email: chucktesta@mydomain.com + vat_number: "1234567890" itinerary_history: - history_id: "802737048" event_timestamp: '2017-09-17T13:31:15.523Z' @@ -9196,6 +9575,41 @@ paths: method: GET href: https://www.example.com?key=123abd456 travel_purpose: unspecified + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + additional_handling: + authorized_expenses: total_plus_incidentals + specified_incidental_expenses: + - breakfast + - internet + total_charges_allowed: + value: "875.00" + currency: USD + is_cvc_required: true + authorizing_company: Conferma + card_contact: + email: chucktesta@mydomain.com + phone: + country_code: "1" + area_code: "555" + number: "5555555" + payment_allowable_period_start: '2024-01-01' + payment_allowable_period_end: '2025-08-01' + invoicing: + consent_to_share: true + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + email: chucktesta@mydomain.com + vat_number: "1234567890" itinerary_history: - history_id: "802737048" event_timestamp: '2017-09-17T13:31:15.523Z' @@ -9567,10 +9981,41 @@ paths: property: method: GET href: https://www.example.com?key=123abd456 - travel_purpose: leisure - trader_information: - traders: - - name: Test Property Name + travel_purpose: business + additional_handling: + authorized_expenses: total_plus_incidentals + specified_incidental_expenses: + - breakfast + - internet + total_charges_allowed: + value: "875.00" + currency: USD + is_cvc_required: true + authorizing_company: Conferma + card_contact: + email: chucktesta@mydomain.com + phone: + country_code: "1" + area_code: "555" + number: "5555555" + payment_allowable_period_start: '2024-01-01' + payment_allowable_period_end: '2025-08-01' + invoicing: + consent_to_share: true + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + email: chucktesta@mydomain.com + vat_number: "1234567890" + trader_information: + traders: + - name: Test Property Name address: line_1: 123 Main St city: Springfield @@ -10526,6 +10971,171 @@ paths: application/json: schema: $ref: '#/components/schemas/CreateItineraryRequest' + examples: + Create Booking with Credit Card: + value: + affiliate_reference_id: 4480ABC + hold: false + email: john@example.com + phone: + country_code: "1" + area_code: "487" + number: "5550077" + rooms: + - given_name: John + family_name: Smith + smoking: false + special_request: Top floor or away from street please + loyalty_id: ABC123 + payments: + - type: customer_card + number: "4111111111111111" + security_code: "123" + expiration_month: "08" + expiration_year: "2025" + billing_contact: + given_name: John + family_name: Smith + address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + enrollment_date: '2018-09-15' + third_party_authentication: + cavv: jELUbgG+Tgj0AREBDMLeCad+oIs= + eci: "05" + three_ds_version: 2.2.0 + ds_transaction_id: ac01cc2b-c1a1-4981-8c6f-400d4eec88de + pa_res_status: "Y" + ve_res_status: C + xid: 47133847-13be-4ae3-9be9-e4053b9c83c0 + cavv_algorithm: "3" + ucaf_indicator: "0" + affiliate_metadata: data_point_1:123|data_point2:This is data. + tax_registration_number: "12345678910" + traveler_handling_instructions: Please use the card provided for + payment. Avoid cancelation as this is for a corporate traveler. + Contact traveler if any issues. + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + Create Booking with Virtual Card: + value: + affiliate_reference_id: 4480ABC + hold: false + email: john@example.com + phone: + country_code: "1" + area_code: "487" + number: "5550077" + rooms: + - given_name: John + family_name: Smith + smoking: false + special_request: Top floor or away from street please + loyalty_id: ABC123 + payments: + - type: virtual_card + number: "4111111111111111" + security_code: "123" + expiration_month: "08" + expiration_year: "2025" + billing_contact: + given_name: John + family_name: Smith + address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + additional_handling: + authorized_expenses: total_plus_incidentals + specified_incidental_expenses: + - breakfast + - internet + total_charges_allowed: + value: "875.00" + currency: USD + is_cvc_required: true + authorizing_company: Conferma + card_contact: + email: chucktesta@mydomain.com + phone: + country_code: "1" + area_code: "555" + number: "5555555" + payment_allowable_period_start: '2024-01-01' + payment_allowable_period_end: '2025-08-01' + invoicing: + consent_to_share: true + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + email: chucktesta@mydomain.com + vat_number: "1234567890" + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + Create Booking with Possible Sanctions: + value: + affiliate_reference_id: ABC8388 + hold: false + email: possibly@example.com + phone: + country_code: "1" + area_code: "487" + number: "5550077" + rooms: + - given_name: Possibly + family_name: Sanctioned + sensitive_traveler_details: + - middle_name: Clarifying + date_of_birth: '1963-12-04' + address: + line_1: 5555 21st St + line_2: 5th Floor + line_3: Unit 532 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + smoking: false + special_request: Please review my sensitive traveler details to + show that I'm not sanctioned. + loyalty_id: ABC123 + payments: + - type: customer_card + number: "4111111111111111" + security_code: "123" + expiration_month: "08" + expiration_year: "2025" + billing_contact: + given_name: John + family_name: Smith + address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + enrollment_date: '2018-09-15' required: true responses: "201": @@ -10660,6 +11270,17 @@ paths: - name: country_code type: body value: ABCD + Invalid Address Example: + value: + type: invalid_input + message: "An invalid request was sent in, please check the nested\ + \ errors for details." + errors: + - type: rooms.address.line_1.invalid + message: Address line 1 is required. + fields: + - name: line_1 + type: body Duplicate Itinerary Example: value: type: invalid_input @@ -11005,14 +11626,15 @@ paths: value: test@example.com - name: include in: query - description: "Options for which information to return in the response. The\ - \ value must be lower case.\n* `history` - Include itinerary history, showing\ - \ details of the changes made to this itinerary. Changes from the property/supplier\ - \ have an event_source equal to `other` in the response. \n* `history_v2`\ - \ - Include itinerary history, showing details of the changes made to this\ - \ itinerary. Changes from the property/supplier have an event_source equal\ - \ to `supplier` in the response. See the [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview)\ - \ for details.\n" + description: | + Options for which information to return in the response. The value must be lower case. + * `history` - Include itinerary history, showing details of the changes made to this itinerary. Changes + from the property/supplier have an event_source equal to `other` in the response. + * `history_v2` - Include itinerary history, showing details of the changes made to this itinerary. Changes + from the property/supplier have an event_source equal to `supplier` in the response. See + [Itinerary history](https://developers.expediagroup.com/docs/rapid/lodging/manage-booking/itinerary-history#overview) + for details. + * `marketing_fee_details` - Displays a more granular view of marketing fees in the response. required: false schema: type: array @@ -11020,6 +11642,8 @@ paths: type: string enum: - history + - history_v2 + - marketing_fee_details examples: Optional: value: null @@ -11217,7 +11841,205 @@ paths: property: method: GET href: https://www.example.com?key=123abd456 - travel_purpose: leisure + travel_purpose: business + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + invoicing: + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + point_of_sale_display: Global Travel Site + email: chucktesta@mydomain.com + vat_number: "1234567890" + Itinerary No History with Property Collect: + value: + itinerary_id: "8999989898988" + property_id: "8150374" + links: + cancel: + method: DELETE + href: /v3/itineraries/8999989898988?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + email: smith@example.com + phone: + country_code: "1" + area_code: "487" + number: "5550077" + rooms: + - id: "926784314" + confirmation_id: + expedia: "1234567890" + property: BEF23123AA + bed_group_id: d395b56d-d31d-4a84-ad2b-66820b1d48e2 + checkin: '2018-09-21' + checkout: '2018-09-23' + number_of_adults: 2 + child_ages: + - 2 + - 3 + given_name: Givenne + family_name: Nameo + status: booked + special_request: Please give me extra towels. + smoking: false + loyalty_id: ABC123 + rate: + id: "035943984" + merchant_of_record: expedia + refundable: true + cancel_refund: + amount: -65.98 + currency: USD + amenities: + - "12345" + - "678" + - "9999" + promotions: + value_adds: + "123abc": + id: 123abc + description: 10 USD credit on activities and sports + for your stay. + "3x4mp13": + id: 3x4mp13 + description: 20% discount on theme park tickets purchased + through the concierge desk. + cancel_penalties: + - start: '2018-01-01T01:01:01.000-08:00' + end: '2018-12-12T01:01:01.000-08:00' + amount: "250.75" + currency: USD + nonrefundable_date_ranges: + - start: '2022-02-02' + end: '2022-02-02' + deposits: + - currency: USD + value: "220.75" + due: '2018-12-12T01:01:01.000-08:00' + pricing: + nightly: + - - type: base_rate + value: "111.23" + currency: USD + - type: sales_tax + value: "11.12" + currency: USD + - - type: base_rate + value: "111.23" + currency: USD + - type: sales_tax + value: "11.12" + currency: USD + stay: + - type: base_rate + value: "123.45" + currency: USD + totals: + inclusive: + billable_currency: + value: "368.15" + currency: USD + exclusive: + billable_currency: + value: "345.91" + currency: USD + marketing_fee: + billable_currency: + value: "7.75" + currency: USD + property_fees: + billable_currency: + value: "36.95" + currency: USD + fees: + mandatory_fee: + billable_currency: + value: "5.00" + currency: USD + resort_fee: + billable_currency: + value: "20.00" + currency: USD + mandatory_tax: + billable_currency: + value: "11.95" + currency: USD + links: + cancel: + method: DELETE + href: /v3/itineraries/8999989898988/rooms/d08572fc-82d2-4d5d-ad30-60f5be7fb53e?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + change: + method: PUT + href: /v3/itineraries/8999989898988/rooms/d08572fc-82d2-4d5d-ad30-60f5be7fb53e?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + shop_for_change: + method: GET + href: /v3/properties/8150374/availability?token=MY5S3j36cOcLfLBZjPYQ1abhfc8CqmjmFVzkk7euvWaunE57LLeDgaxm516m + billing_contact: + given_name: John + family_name: Smith + address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + adjustment: + value: -100.0 + type: base_rate + currency: USD + creation_date_time: '2017-08-17T13:31:15.523Z' + affiliate_reference_id: 4480ABC + affiliate_metadata: This booking was made with EPS. + conversations: + links: + property: + method: GET + href: https://www.example.com?key=123abd456 + travel_purpose: business + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true + additional_handling: + authorized_expenses: total_plus_incidentals + specified_incidental_expenses: + - breakfast + - internet + total_charges_allowed: + value: "875.00" + currency: USD + is_cvc_required: true + authorizing_company: Conferma + card_contact: + email: chucktesta@mydomain.com + phone: + country_code: "1" + area_code: "555" + number: "5555555" + payment_allowable_period_start: '2024-01-01' + payment_allowable_period_end: '2025-08-01' + invoicing: + consent_to_share: true + company_name: alphaDemandPartner + company_address: + line_1: 555 1st St + line_2: 10th Floor + line_3: Unit 12 + city: Seattle + state_province_code: WA + postal_code: "98121" + country_code: US + email: chucktesta@mydomain.com + vat_number: "1234567890" Itinerary with History: value: itinerary_id: "8999989898988" @@ -11363,6 +12185,10 @@ paths: method: GET href: https://www.example.com?key=123abd456 travel_purpose: unspecified + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true itinerary_history: - history_id: "802737048" event_timestamp: '2017-09-17T13:31:15.523Z' @@ -11694,6 +12520,10 @@ paths: method: GET href: https://www.example.com?key=123abd456 travel_purpose: unspecified + supplier_transparency: + point_of_sale_display_to_share: Global Travel Site + company_name_to_share: Traveler's Company + consent_to_share: true itinerary_history: - history_id: "802737048" event_timestamp: '2017-09-17T13:31:15.523Z' @@ -12059,7 +12889,7 @@ paths: property: method: GET href: https://www.example.com?key=123abd456 - travel_purpose: leisure + travel_purpose: business impacted_fields: - rooms.rate.cancel_refund - rooms.rate.refundable @@ -14512,7 +15342,8 @@ paths: - Manage Booking summary: Change details of a room. description: | - This link will be available in the retrieve response. Changes in smoking preference and special request will be passed along to the property and are not guaranteed. + This link will be available in the retrieve response. Changes in smoking preference and special request will be + passed along to the property and are not guaranteed. operationId: changeRoomDetails parameters: - name: Accept @@ -14534,7 +15365,8 @@ paths: - name: Content-Type in: header description: | - This parameter is to specify what format the request body is in. The only supported value is application/json. + This parameter is to specify what format the request body is in. The only supported value is + `application/json`. required: true schema: type: string @@ -14600,18 +15432,50 @@ paths: - name: token in: query description: | - Provided as part of the link object and used to maintain state across calls. This simplifies each subsequent call by limiting the amount of information required at each step and reduces the potential for errors. Token values cannot be viewed or changed. + Provided as part of the link object and used to maintain state across calls. This simplifies each + subsequent call by limiting the amount of information required at each step and reduces the potential for + errors. Token values cannot be viewed or changed. required: true schema: type: string requestBody: - description: "The request body is required, but only the fields that are being\ - \ changed need to be passed in. Fields that are not being changed should\ - \ not be included in the request body." + description: | + The request body is required, but only the fields that are being changed need to be passed in. Fields that + are not being changed should not be included in the request body. content: application/json: schema: $ref: '#/components/schemas/ChangeRoomDetailsRequest' + examples: + Name Change: + value: + given_name: Cindy + family_name: Smith + General Change: + value: + given_name: Cindy + family_name: Smith + smoking: false + special_request: Update - Please may I have a room close to the + elevator? + loyalty: + member_id: ABD123 + program_id: SN + Sanctions Screening: + value: + given_name: Possibly + family_name: Sanctioned + sensitive_traveler_details: + middle_name: Clarifying + date_of_birth: '1963-12-04' + address: + line_1: 5555 21st St + line_2: 5th Floor + line_3: Unit 532 + city: Seattle + state_province_code: WA + postal_code: 98121 + country_code: US required: true responses: "202": @@ -16426,7 +17290,6 @@ paths: tags: - Content summary: Chain Reference ***DEPRECATED*** - deprecated: true description: | ***DEPRECATED*** Please use `/references/chains`
    Returns a complete collection of chains recognized by the Rapid API. @@ -16709,6 +17572,7 @@ paths: example: type: service_unavailable message: This service is currently unavailable. + deprecated: true security: - rapidAuth: [] /references/chains: @@ -20152,39 +21016,1275 @@ paths: type: path security: - rapidAuth: [] -components: - schemas: - PropertyContent: - type: object - properties: - property_id: - type: string - description: Unique Expedia property ID. - name: - type: string - description: Property name. - address: - $ref: '#/components/schemas/Address' - ratings: - $ref: '#/components/schemas/Ratings' - location: - $ref: '#/components/schemas/Location' - phone: - type: string - description: The property's phone number. - fax: - type: string - description: The property's fax number. - category: - $ref: '#/components/schemas/CategoryProperty' - business_model: - $ref: '#/components/schemas/BusinessModel' - rank: - type: number - description: "The property’s rank across all properties. This value sorts\ - \ properties based on EPS transactional data and details about the property,\ - \ with 1 indicating the best-performing property and others following\ - \ in ascending numerical order." + /campaigns: + get: + tags: + - Merchandising + summary: Campaigns Search + description: | + Search for campaigns + operationId: getCampaigns + parameters: + - name: Accept + in: header + description: | + Specifies the response format that the client would like to receive back. This must be `application/json`. + required: true + schema: + type: string + example: application/json + - name: Accept-Encoding + in: header + description: | + Specifies the response encoding that the client would like to receive back. This must be `gzip`. + required: true + schema: + type: string + example: gzip + - name: User-Agent + in: header + description: | + The `User-Agent` header string from the customer's request, as captured by your integration. If you are + building an application then the `User-Agent` value should be `{app name}/{app version}`. + required: true + schema: + type: string + example: TravelNow/3.30.112 + - name: Customer-Session-Id + in: header + description: | + Insert your own unique value for each user session, beginning with the first API call. Continue to pass the + same value for each subsequent API call during the user's session, using a new value for every new customer + session.
    + Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it + explicitly links together request paths for individual user's session. + schema: + type: string + - name: language + in: query + description: | + Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit + language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes. +
    **Currently only `en-US` is supported.** +

    Reference: + * [W3 Language Tags](https://www.w3.org/International/articles/language-tags/) + required: true + schema: + type: string + examples: + English: + value: en-US + - name: blockout_dates + in: query + description: | + Specify restrictions to blockout dates. If this parameter is not supplied, campaigns with and without + blockout dates will be included. + * `true` - Include only campaigns that have blockout dates. + * `false` - Do not include campaigns that have blockout dates. + schema: + type: boolean + examples: + Optional: + value: null + Single: + value: false + - name: bookable_end + in: query + description: Search for all campaigns with a `bookable_end` date equal to + or before the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: '2025-11-30' + - name: bookable_start + in: query + description: Search for all campaigns with a `bookable_start` date equal to + or after the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: '2025-10-01' + - name: lifetime + in: query + description: Search for campaigns that match the lifetime type. + schema: + type: string + enum: + - limited_time_offer + - evergreen + examples: + Optional: + value: null + Single: + value: limited_time_offer + - name: campaign_id + in: query + description: | + Search for campaigns with matching `id` values. You can provide 0 to 250 `id` parameters + with different values, which will include campaigns that match any of the requested values. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 782981 + Multiple: + value: + - 782981 + - 334242 + - name: include + in: query + description: | + Each time this parameter is specified will add to the list of fields and associated objects returned in the + response. All values and field names are lower case. All field names found at the top level of the response + are valid values for inclusion. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: name + Multiple: + value: + - name + - themes + - name: min_discount + in: query + description: Search for campaigns that have a `min_discount` equal to or larger + than the value. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 10 + - name: stay_end + in: query + description: Search for all campaigns with a `stay_end` date equal to or before + the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: '2025-12-28' + - name: stay_start + in: query + description: Search for all campaigns with a `stay_start` date equal to or + after the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: '2025-12-20' + - name: token + in: query + description: | + Only used for requesting additional pages of data. Provided by the `next` URL in the `Link` response header. + schema: + type: string + - name: billing_terms + in: query + description: | + This parameter is to specify the terms of how a resulting booking should be billed. If this field is + needed, the value for this will be provided to you separately. + schema: + type: string + - name: partner_point_of_sale + in: query + description: | + This parameter is to specify what point of sale is being used to shop and book. If this field is needed, + the value for this will be provided to you separately. + schema: + type: string + - name: payment_terms + in: query + description: | + This parameter is to specify what terms should be used when being paid for a resulting booking. If this + field is needed, the value for this will be provided to you separately. + schema: + type: string + - name: platform_name + in: query + description: | + This parameter is to specify what platform is being used to shop and book. If this field is needed, the + value for this will be provided to you separately. + schema: + type: string + responses: + "200": + description: OK + headers: + Rate-Limit-Day: + description: Reserved for future use. Optional header for request capacity + per day. + schema: + type: number + Rate-Limit-Day-Remaining: + description: "Optional header for the remaining capacity, as a percentage,\ + \ for the daily time window." + schema: + type: number + Rate-Limit-Day-Reset: + description: "Optional header for the timestamp, as the number of milliseconds\ + \ since the Unix Epoch, when the daily capacity resets." + schema: + type: number + Rate-Limit-Minute: + description: Reserved for future use. Optional header for request capacity + per minute. + schema: + type: number + Rate-Limit-Minute-Remaining: + description: "Optional header for the remaining capacity, as a percentage,\ + \ for the per minute time window." + schema: + type: number + Rate-Limit-Minute-Reset: + description: "Optional header for the timestamp, as the number of milliseconds\ + \ since the Unix Epoch, when the per minute capacity resets." + schema: + type: number + Rate-Limit-Reduction-Status: + description: "Optional header that indicates the state (inactive, active)\ + \ of minute capacity reduction triggered once all daily capacity has\ + \ been used." + schema: + type: string + Region: + $ref: '#/components/headers/Region' + Link: + description: | + Contains a single link to get the immediate next page of results, and follows the + [IETF standard](https://tools.ietf.org/html/rfc5988). To get the next page of results, simply follow + the `next` URL in this header without modifying it. This header will be missing when there are no + further pages. If the link expires, there will be an `expires` link-extension that is the UTC date the + link will expire, in ISO 8601 format. + schema: + type: string + example: ; + rel="next"; expires=2023-06-29T20:15:05.324083439Z + Pagination-Total-Results: + description: Header that returns the pagination total results. + schema: + type: string + example: "2801" + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Campaign' + examples: + Campaign: + value: + - campaign_id: "12345" + name: Winter Seasonal Campaign + bookable_start: '2025-03-14' + bookable_end: '2025-04-14' + stay_start: '2025-03-30' + stay_end: '2025-04-15' + blockout_dates: true + min_discount: "20" + max_discount: "53" + lifetime: limited_time_offer + curated_content: + asia: + themes: + - Luxury + - Beach + images: + - image: i.dsfssasdfjl.jpg + tags: + - Mountains + - Skiing + - image: i.233sdkfejwlf.jpg + tags: + - Nature + - Cherry Blossoms + copy: + - copy: A winter wonderland. + subcopy: a fun time. + destinations: + - Rome + - Naples + - Venice + emea: + images: + - image: i.dsfssasdfjl.jpg + tags: + - Mountains + - Skiing + - image: i.233sdkfejwlf.jpg + tags: + - Nature + - Cherry Blossoms + copy: + - copy: A stunning winter vista is approachable. + subcopy: a good time. + destinations: + - France + latam: + themes: + - Festive + - Getaway + property_count: "15" + "400": + description: Invalid Input + headers: + Rate-Limit-Day: + $ref: '#/components/headers/Rate-Limit-Day' + Rate-Limit-Day-Remaining: + $ref: '#/components/headers/Rate-Limit-Day-Remaining' + Rate-Limit-Day-Reset: + $ref: '#/components/headers/Rate-Limit-Day-Reset' + Rate-Limit-Minute: + $ref: '#/components/headers/Rate-Limit-Minute' + Rate-Limit-Minute-Remaining: + $ref: '#/components/headers/Rate-Limit-Minute-Remaining' + Rate-Limit-Minute-Reset: + $ref: '#/components/headers/Rate-Limit-Minute-Reset' + Rate-Limit-Reduction-Status: + $ref: '#/components/headers/Rate-Limit-Reduction-Status' + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: invalid_input + message: "An invalid request was sent in, please check the nested\ + \ errors for details." + errors: + - type: language.required + message: "A language is required. Supported languages are: [en-US]" + fields: + - name: language + type: querystring + - type: language.above_maximum + message: The number of languages passed in must not be greater than + 1. + fields: + - name: language + type: querystring + "401": + description: Unauthorized + headers: + Region: + $ref: '#/components/headers/Region' + WWW-Authenticate: + description: Provides an example of the Authorization header. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: request_unauthenticated + message: Data required to authenticate your request is missing or + inaccurate. Ensure that your request follows the guidelines in our + documentation. + fields: + - name: apikey + type: header + value: jaj3982k239dka328e + - name: signature + type: header + value: 129d75332614a5bdbe0c7eb540e95a65f9d85a5b53dabb38d19b37fad6312a2bd25c12ee5a82831d55112087e1b + - name: timestamp + type: header + value: 198284729 + - name: servertimestamp + type: server + value: 198284729 + "403": + description: Forbidden + headers: + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: request_unauthorized + message: Your request could not be authorized. + "410": + description: Gone + headers: + Rate-Limit-Day: + $ref: '#/components/headers/Rate-Limit-Day' + Rate-Limit-Day-Remaining: + $ref: '#/components/headers/Rate-Limit-Day-Remaining' + Rate-Limit-Day-Reset: + $ref: '#/components/headers/Rate-Limit-Day-Reset' + Rate-Limit-Minute: + $ref: '#/components/headers/Rate-Limit-Minute' + Rate-Limit-Minute-Remaining: + $ref: '#/components/headers/Rate-Limit-Minute-Remaining' + Rate-Limit-Minute-Reset: + $ref: '#/components/headers/Rate-Limit-Minute-Reset' + Rate-Limit-Reduction-Status: + $ref: '#/components/headers/Rate-Limit-Reduction-Status' + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: link.expired + message: The link you followed has expired. Please build a new request + to restart pagination. + "426": + description: Upgrade Required + headers: + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: upgrade_required + message: This service requires the use of TLS. + "429": + description: Too Many Requests + headers: + Rate-Limit-Day: + $ref: '#/components/headers/Rate-Limit-Day' + Rate-Limit-Day-Remaining: + $ref: '#/components/headers/Rate-Limit-Day-Remaining' + Rate-Limit-Day-Reset: + $ref: '#/components/headers/Rate-Limit-Day-Reset' + Rate-Limit-Minute: + $ref: '#/components/headers/Rate-Limit-Minute' + Rate-Limit-Minute-Remaining: + $ref: '#/components/headers/Rate-Limit-Minute-Remaining' + Rate-Limit-Minute-Reset: + $ref: '#/components/headers/Rate-Limit-Minute-Reset' + Rate-Limit-Reduction-Status: + $ref: '#/components/headers/Rate-Limit-Reduction-Status' + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: too_many_requests + message: You have reached your capacity for this type of request. + "500": + description: Unknown Internal Error + headers: + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: unknown_internal_error + message: An internal server error has occurred. + "503": + description: Service Unavailable + headers: + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: service_unavailable + message: This service is currently unavailable. + security: + - rapidAuth: [] + /property-promotions: + get: + tags: + - Merchandising + summary: Promotions Search + description: | + Search for promotions + operationId: getPromotions + parameters: + - name: Accept + in: header + description: | + Specifies the response format that the client would like to receive back. This must be `application/json`. + required: true + schema: + type: string + example: application/json + - name: Accept-Encoding + in: header + description: | + Specifies the response encoding that the client would like to receive back. This must be `gzip`. + required: true + schema: + type: string + example: gzip + - name: User-Agent + in: header + description: | + The `User-Agent` header string from the customer's request, as captured by your integration. If you are + building an application then the `User-Agent` value should be `{app name}/{app version}`. + required: true + schema: + type: string + example: TravelNow/3.30.112 + - name: Customer-Session-Id + in: header + description: | + Insert your own unique value for each user session, beginning with the first API call. Continue to pass the + same value for each subsequent API call during the user's session, using a new value for every new customer + session.
    + Including this value greatly eases EPS's internal debugging process for issues with partner requests, as it + explicitly links together request paths for individual user's session. + schema: + type: string + - name: language + in: query + description: | + Desired language for the response as a subset of BCP47 format that only uses hyphenated pairs of two-digit + language and country codes. Use only ISO 639-1 alpha-2 language codes and ISO 3166-1 alpha-2 country codes. +
    **Currently only `en-US` is supported.** +

    Reference: + * [W3 Language Tags](https://www.w3.org/International/articles/language-tags/) + required: true + schema: + type: string + examples: + English: + value: en-US + - name: sort_by + in: query + description: | + Sorts the returned promotions by the given rank value + required: true + schema: + type: string + enum: + - promotion + - property + - destination + examples: + Property: + value: property + Destination: + value: destination + - name: blockout_dates + in: query + description: | + Specify restrictions to blockout dates. If this parameter is not supplied, promotions with and without + blockout dates will be returned in the results. + * `true` - Include only promotions that have blockout dates. + * `false` - Include only promotions that do not have blockout dates. + schema: + type: boolean + examples: + Optional: + value: null + Single: + value: false + - name: bookable_end + in: query + description: Search for promotions with a `bookable_end` date equal to or + before the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: '2025-11-30' + - name: bookable_start + in: query + description: Search for promotions with a `bookable_start` date equal to or + after the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: '2025-10-01' + - name: campaign_id + in: query + description: | + Search for promotions with matching `campaign_id` values. You can provide 0 to 250 `campaign_id` parameters + with different values, which will include promotions that match any of the requested values. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 782981 + Multiple: + value: + - 782981 + - 334242 + - name: category_id + in: query + description: | + Search for promotions associated with the specified `category_id` values. This parameter can be supplied + multiple times with different values, which will include promotions that match any of the requested + scenarios. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 1 + Multiple: + value: + - 1 + - 3 + - name: chain_id + in: query + description: | + Search for promotions associated with the specified `chain_id` values. This parameter can be supplied + multiple times with different values, which will include promotions that match any of the requested + scenarios. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 1 + Multiple: + value: + - 1 + - 3 + - name: lifetime + in: query + description: Search for promotions that match the lifetime type. + schema: + type: string + examples: + Optional: + value: null + Single: + value: limited_time_offer + - name: promotion_id + in: query + description: | + Search for promotions with matching `id` values. You can provide 0 to 250 `id` parameters + with different values, which will include promotions that match any of the requested values. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 234567 + Multiple: + value: + - 234567 + - 987654 + - name: include + in: query + description: | + Each time this parameter is specified will add to the list of fields and associated objects returned in the + response. All values and field names are lower case. All field names found at the top level of the response + are valid values for inclusion. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: name + Multiple: + value: + - discount_percentage + - lifetime + - min_star_rating + - name: market_region + in: query + description: | + Search for promotions associated with the specified `market_region` values. This parameter can be supplied + multiple times with different values, which will include promotions that match any of the requested + scenarios. + schema: + type: array + items: + type: string + enum: + - amer + - apac + - emea + - latam + examples: + Optional: + value: null + Single: + value: amer + Multiple: + value: + - amer + - latam + - name: members_only + in: query + description: | + Specify restrictions to `members_only` values. If this parameter is not supplied, promotions with true or + false will be returned in the results. + * `true` - Only results with `members_only` equal to true will be returned. + * `false` - Only results with `members_only` equal to false will be returned. + schema: + type: boolean + examples: + Optional: + value: null + Single: + value: true + - name: min_advance_purchase_days + in: query + description: Search for promotions that have a `min_advance_purchase_days` + equal to the passed in value. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 5 + - name: min_guest_rating + in: query + description: Search for promotions that have a `min_guest_rating` equal to + or larger than the value. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 4.7 + - name: min_star_rating + in: query + description: Search for promotions that have a `min_star_rating` equal to + or larger than the value. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 4.5 + - name: min_stay + in: query + description: Search for promotions that have a `min_stay` equal to the passed + in value. + schema: + type: string + examples: + Optional: + value: null + Single: + value: 3 + - name: mobile_only + in: query + description: | + Specify restrictions to `mobile_only` values. If this parameter is not supplied, promotions with true or + false will be returned in the results. + * `true` - Only results with `mobile_only` equal to true will be returned. + * `false` - Only results with `mobile_only` equal to false will be returned. + schema: + type: boolean + examples: + Optional: + value: null + Single: + value: true + - name: product_line + in: query + description: | + Search for promotions with a `product_line` that matches the value. This parameter can be supplied multiple + times with different values, which will include promotions that match any of the requested scenarios. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: hotel + Multiple: + value: + - hotel + - package + - name: promotion_criteria + in: query + description: | + Search for promotions that meet the criteria provided. This criteria is defined as: + * type,value + For now the only type available will be `percentage` but other types will be added in the future. + schema: + type: string + examples: + Optional: + value: null + Single: + value: "percentage,20" + - name: property_id + in: query + description: | + Search for promotions with matching `property_id` values. You can provide 0 to 250 `property_id` parameters + with different values, which will include promotions that match any of the requested values. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 234567 + Multiple: + value: + - 234567 + - 987654 + - name: region_id + in: query + description: | + Search for promotions associated with the specified `region_id` values. This parameter can be supplied + multiple times with different values, which will include promotions that match any of the requested + scenarios. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: 123456 + Multiple: + value: + - 123456 + - 553248635083913795 + - name: stay_end + in: query + description: Search for all promotions with a `stay_end` date equal to or + before the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: '2025-12-28' + - name: stay_start + in: query + description: Search for all promotions with a `stay_start` date equal to or + after the specified date. + schema: + type: string + examples: + Optional: + value: null + Single: + value: '2025-12-20' + - name: supply_source + in: query + description: | + Search for promotions associated with the specified `supply_source` values. This parameter can be supplied + multiple times with different values, which will include promotions that match any of the requested + scenarios. + * `expedia` - Standard Expedia supply. + * `vrbo` - VRBO supply - This option is restricted to partners who have VRBO supply enabled for their + profile. See [Vacation Rentals](https://developers.expediagroup.com/docs/rapid/lodging/vacation-rentals) for + more information. + schema: + type: array + items: + type: string + examples: + Optional: + value: null + Single: + value: expedia + Multiple: + value: + - expedia + - vrbo + - name: token + in: query + description: | + Only used for requesting additional pages of data. Provided by the `next` URL in the `Link` response header. + schema: + type: string + - name: billing_terms + in: query + description: | + This parameter is to specify the terms of how a resulting booking should be billed. If this field is + needed, the value for this will be provided to you separately. + schema: + type: string + - name: partner_point_of_sale + in: query + description: | + This parameter is to specify what point of sale is being used to shop and book. If this field is needed, + the value for this will be provided to you separately. + schema: + type: string + - name: payment_terms + in: query + description: | + This parameter is to specify what terms should be used when being paid for a resulting booking. If this + field is needed, the value for this will be provided to you separately. + schema: + type: string + - name: platform_name + in: query + description: | + This parameter is to specify what platform is being used to shop and book. If this field is needed, the + value for this will be provided to you separately. + schema: + type: string + responses: + "200": + description: OK + headers: + Rate-Limit-Day: + description: Reserved for future use. Optional header for request capacity + per day. + schema: + type: number + Rate-Limit-Day-Remaining: + description: "Optional header for the remaining capacity, as a percentage,\ + \ for the daily time window." + schema: + type: number + Rate-Limit-Day-Reset: + description: "Optional header for the timestamp, as the number of milliseconds\ + \ since the Unix Epoch, when the daily capacity resets." + schema: + type: number + Rate-Limit-Minute: + description: Reserved for future use. Optional header for request capacity + per minute. + schema: + type: number + Rate-Limit-Minute-Remaining: + description: "Optional header for the remaining capacity, as a percentage,\ + \ for the per minute time window." + schema: + type: number + Rate-Limit-Minute-Reset: + description: "Optional header for the timestamp, as the number of milliseconds\ + \ since the Unix Epoch, when the per minute capacity resets." + schema: + type: number + Rate-Limit-Reduction-Status: + description: "Optional header that indicates the state (inactive, active)\ + \ of minute capacity reduction triggered once all daily capacity has\ + \ been used." + schema: + type: string + Region: + $ref: '#/components/headers/Region' + Link: + description: | + Contains a single link to get the immediate next page of results, and follows the + [IETF standard](https://tools.ietf.org/html/rfc5988). To get the next page of results, simply follow + the `next` URL in this header without modifying it. This header will be missing when there are no + further pages. If the link expires, there will be an `expires` link-extension that is the UTC date the + link will expire, in ISO 8601 format. + schema: + type: string + example: ; + rel="next"; expires=2023-06-29T20:15:05.324083439Z + Pagination-Total-Results: + description: Header that returns the pagination total results. + schema: + type: string + example: "2801" + content: + application/json: + schema: + type: array + items: + $ref: '#/components/schemas/Promotion' + examples: + Promotions: + value: + - promotion_id: "123456" + campaign_id: "12345" + property_id: "123456" + discount_percentage: 30 + description: MOD 10% + min_stay: "2" + min_advance_purchase_days: "3" + bookable_start: '2025-03-14' + bookable_end: '2025-04-14' + stay_start: '2025-03-30' + stay_end: '2025-04-15' + star_rating: "4.5" + guest_rating: "4.8" + lifetime: limited_time_offer + product_lines: + - - “hotel” + - “package” + blockout_dates: + - start: '2025-03-16' + end: '2025-03-18' + - start: '2025-04-01' + end: '2025-04-02' + region_id: "12345" + chain_id: "123456" + market_region: apac + category_id: "1" + supply_source: expedia + mobile_only: false + members_only: true + rank: + promotion: "22" + property: "55" + destination: "20" + links: + content: + method: GET + href: /properties/content?property_id=123456&language=en-US&supply_source=expedia + "400": + description: Invalid Input + headers: + Rate-Limit-Day: + $ref: '#/components/headers/Rate-Limit-Day' + Rate-Limit-Day-Remaining: + $ref: '#/components/headers/Rate-Limit-Day-Remaining' + Rate-Limit-Day-Reset: + $ref: '#/components/headers/Rate-Limit-Day-Reset' + Rate-Limit-Minute: + $ref: '#/components/headers/Rate-Limit-Minute' + Rate-Limit-Minute-Remaining: + $ref: '#/components/headers/Rate-Limit-Minute-Remaining' + Rate-Limit-Minute-Reset: + $ref: '#/components/headers/Rate-Limit-Minute-Reset' + Rate-Limit-Reduction-Status: + $ref: '#/components/headers/Rate-Limit-Reduction-Status' + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: invalid_input + message: "An invalid request was sent in, please check the nested\ + \ errors for details." + errors: + - type: language.required + message: "A language is required. Supported languages are: [en-US]" + fields: + - name: language + type: querystring + - type: language.above_maximum + message: The number of languages passed in must not be greater than + 1. + fields: + - name: language + type: querystring + "401": + description: Unauthorized + headers: + Region: + $ref: '#/components/headers/Region' + WWW-Authenticate: + description: Provides an example of the Authorization header. + schema: + type: string + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: request_unauthenticated + message: Data required to authenticate your request is missing or + inaccurate. Ensure that your request follows the guidelines in our + documentation. + fields: + - name: apikey + type: header + value: jaj3982k239dka328e + - name: signature + type: header + value: 129d75332614a5bdbe0c7eb540e95a65f9d85a5b53dabb38d19b37fad6312a2bd25c12ee5a82831d55112087e1b + - name: timestamp + type: header + value: 198284729 + - name: servertimestamp + type: server + value: 198284729 + "403": + description: Forbidden + headers: + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: request_unauthorized + message: Your request could not be authorized. + "410": + description: Gone + headers: + Rate-Limit-Day: + $ref: '#/components/headers/Rate-Limit-Day' + Rate-Limit-Day-Remaining: + $ref: '#/components/headers/Rate-Limit-Day-Remaining' + Rate-Limit-Day-Reset: + $ref: '#/components/headers/Rate-Limit-Day-Reset' + Rate-Limit-Minute: + $ref: '#/components/headers/Rate-Limit-Minute' + Rate-Limit-Minute-Remaining: + $ref: '#/components/headers/Rate-Limit-Minute-Remaining' + Rate-Limit-Minute-Reset: + $ref: '#/components/headers/Rate-Limit-Minute-Reset' + Rate-Limit-Reduction-Status: + $ref: '#/components/headers/Rate-Limit-Reduction-Status' + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: link.expired + message: The link you followed has expired. Please build a new request + to restart pagination. + "426": + description: Upgrade Required + headers: + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: upgrade_required + message: This service requires the use of TLS. + "429": + description: Too Many Requests + headers: + Rate-Limit-Day: + $ref: '#/components/headers/Rate-Limit-Day' + Rate-Limit-Day-Remaining: + $ref: '#/components/headers/Rate-Limit-Day-Remaining' + Rate-Limit-Day-Reset: + $ref: '#/components/headers/Rate-Limit-Day-Reset' + Rate-Limit-Minute: + $ref: '#/components/headers/Rate-Limit-Minute' + Rate-Limit-Minute-Remaining: + $ref: '#/components/headers/Rate-Limit-Minute-Remaining' + Rate-Limit-Minute-Reset: + $ref: '#/components/headers/Rate-Limit-Minute-Reset' + Rate-Limit-Reduction-Status: + $ref: '#/components/headers/Rate-Limit-Reduction-Status' + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: too_many_requests + message: You have reached your capacity for this type of request. + "500": + description: Unknown Internal Error + headers: + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: unknown_internal_error + message: An internal server error has occurred. + "503": + description: Service Unavailable + headers: + Region: + $ref: '#/components/headers/Region' + content: + application/json: + schema: + $ref: '#/components/schemas/Error' + example: + type: service_unavailable + message: This service is currently unavailable. + security: + - rapidAuth: [] +components: + schemas: + PropertyContent: + type: object + properties: + property_id: + type: string + description: Unique Expedia property ID. + name: + type: string + description: Property name. + address: + $ref: '#/components/schemas/Address' + ratings: + $ref: '#/components/schemas/Ratings' + location: + $ref: '#/components/schemas/Location' + phone: + type: string + description: The property's phone number. + fax: + type: string + description: The property's fax number. + category: + $ref: '#/components/schemas/CategoryProperty' + business_model: + $ref: '#/components/schemas/BusinessModel' + rank: + type: number + description: "The property’s rank across all properties. This value sorts\ + \ properties based on EPS transactional data and details about the property,\ + \ with 1 indicating the best-performing property and others following\ + \ in ascending numerical order." checkin: $ref: '#/components/schemas/Checkin' checkout: @@ -20414,16 +22514,6 @@ components: When this field is true, the `obfuscated_coordinates` must be used to display approximate location instead of the precise location of `coordinates`. description: The property's location information. - Coordinates: - type: object - properties: - latitude: - type: number - description: The latitude of the property. - longitude: - type: number - description: The longitude of the property. - description: The coordinates of the property. CategoryProperty: type: object properties: @@ -20446,6 +22536,11 @@ components: type: boolean description: Whether or not a payment for this property can be taken by the property upon arrival. + updated_expedia_collect: + type: boolean + description: Whether or not a payment for this property can be taken by + Expedia at the time of booking and whether a VAT invoice can be requested + from the property if the property is accountable to provide such a document. description: How and when the payment can be taken. Checkin: type: object @@ -20477,6 +22572,9 @@ components: time: type: string description: The time by which a guest must check out. + instructions: + type: string + description: The property's check-out policy. description: The property's check-out information. Fees: type: object @@ -21390,7 +23488,10 @@ components: type: string description: Unique Identifier for a rate. status: - $ref: '#/components/schemas/Status' + type: string + description: Rates returned are always available. + enum: + - available available_rooms: type: number description: |- @@ -21401,6 +23502,11 @@ components: description: Indicates if the rate is fully refundable at the time of booking. Cancel penalties may still apply. Please refer to the cancel penalties section for reference. + holdable: + type: boolean + description: "Indicates whether the rate supports [Booking Hold and Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume).\ + \ This field will only be present if `include=rooms.rates.holdable` is\ + \ passed as a request parameter.." current_refundability: type: string description: Indicates the current refundability of the rate. This is a @@ -21474,16 +23580,6 @@ components: items: $ref: '#/components/schemas/Deposit' description: A rate. - Status: - type: string - description: Indicates the status of the rate. If the rate is still available - then available will be returned. If the rate is no longer available at that - price then price_changed will be returned. If the rate is no longer available - at all then sold_out will be returned. - enum: - - available - - price_changed - - sold_out SaleScenario: type: object properties: @@ -21663,7 +23759,7 @@ components: - checkout_not_allowed - minimum_stay - maximum_stay - - restricted_dates + - restricted_stay_lengths - same_day_restrictions - maximum_rooms - children_not_supported @@ -21682,6 +23778,9 @@ components: properties: status: $ref: '#/components/schemas/StatusPriceCheck' + holdable: + type: boolean + description: "Indicates whether the rate supports [Booking Hold and Resume](https://developers.expediagroup.com/docs/products/rapid/lodging/booking/hold-resume)." occupancy_pricing: type: object additionalProperties: @@ -21709,12 +23808,17 @@ components: description: The price check response. StatusPriceCheck: type: string - description: Indicates the status of the rate. If the rate is still available - then available will be returned. If the rate is no longer available at that - price then price_changed will be returned. If the rate is no longer available - at all then sold_out will be returned. + description: | + Indicates the status of the rate. + * `available` - The rate is still available at or below the price returned in the shop response. + * `available_no_change` - **Only in Hard Change flows** - The rate is available but matches the booked rate. + * `price_changed` - The rate is no longer available at the previous price. Use the `additional_rates` link to + present updated rooms and rates for this property to travelers. + * `sold_out` - The rate is no longer available at any price. Use the `additional_rates` link to + present updated rooms and rates for this property to travelers. enum: - available + - available_no_change - price_changed - sold_out RoomPriceCheckLinks: @@ -21981,9 +24085,9 @@ components: properties: type: type: string - description: "Identifier for the type of payment. If affiliate_collect,\ - \ card information is not required as EPS will not be processing the payment.\ - \ However, billing contact information is still required." + description: | + Identifier for the type of payment. If affiliate_collect, card information is not required as EPS will not + be processing the payment. However, billing contact information is still required. enum: - corporate_card - customer_card @@ -22010,8 +24114,11 @@ components: $ref: '#/components/schemas/ThirdPartyAuthRequest' enrollment_date: type: string - description: "Date the payment account was enrolled in the cardholder's\ - \ account with the merchant, in ISO 8601 format (YYYY-MM-DD)." + description: | + Date the payment account was enrolled in the cardholder's account with the merchant, in ISO 8601 format + (YYYY-MM-DD). + additional_handling: + $ref: '#/components/schemas/AdditionalHandling' BillingContactRequest: required: - address @@ -22112,19 +24219,124 @@ components: xid: type: string description: | - String used by both Visa and MasterCard which identifies a specific transaction on the Directory - This string value should remain consistent throughout a transaction's history. - cavv_algorithm: + String used by both Visa and MasterCard which identifies a specific transaction on the Directory + This string value should remain consistent throughout a transaction's history. + cavv_algorithm: + type: string + description: | + Used in some scenarios for 3DS 1.0. + ucaf_indicator: + type: string + description: | + Only received for Mastercard transactions, else can be null. + 0 - Non-SecureCode transaction, bypassed by the Merchant + 1 - Merchant-Only SecureCode transaction + 2 - Fully authenticated SecureCode transaction + AdditionalHandling: + required: + - authorized_expenses + type: object + properties: + authorized_expenses: + type: string + description: | + Indicates which types of expenses are authorized to be charged to the VCC. + * `prestay_expenses_only` - Indicates that the provided VCC is for pre-stay charges only (e.g., + deposits, cancellation fees, no-show fees). A physical card must be presented at check-in for any + remaining balance, as well as incidentals. + * `total_booking_amount` - Indicates that both pre-stay charges and the total booking amount are + authorized, but no incidentals are authorized. A physical card must be presented at check-in for any + incidentals. + * `total_plus_incidentals` - Indicates that pre-stay, total booking, and incidental expenses are + authorized. See `specified_incidental_expenses`. A physical card may be required for additional + incidental expenses. + * `see_authorization_form` - Indicates that a property should refer to the authorization form that will + be sent either by the card provider or the authorizing company. + enum: + - prestay_expenses_only + - total_booking_amount + - total_plus_incidentals + - see_authorization_form + specified_incidental_expenses: + type: array + description: | + Included list of enumerated categories to restrict the authorized incidentals. This is only utilized + when `authorized_expenses` is supplied with `total_plus_incidentals` and restrictions on incidentals are + desired.
    + Example: To allow any incidental expenses, specify `authorized_expenses` equal to + `total_plus_incidentals` and omit `specified_incidental_expenses`. + items: + type: string + description: The type of incidental expense authorized. + enum: + - breakfast + - entertainment + - internet + - meeting_expenses + - other_food_beverage + - parking + - phone + - taxes + - transfer + - other + total_charges_allowed: + $ref: '#/components/schemas/Amount' + is_cvc_required: + type: boolean + description: | + Indicates whether a CVC is required for the provided VCC. If this is marked required, the security_code + field for the payment MUST be provided. + authorizing_company: type: string + description: Company that will issue the authorization form for the virtual + credit card payment. + card_contact: + type: object + properties: + email: + type: string + description: The email address of the VCC contact. + phone: + $ref: '#/components/schemas/Phone' description: | - Used in some scenarios for 3DS 1.0. - ucaf_indicator: + Object to hold information for a contact the supplier can reach in the event of any issues with the + provided payment. + max_payment_attempt_count: + type: number + description: Requested limit to number of payment attempts. + payment_allowable_period_start: type: string - description: | - Only received for Mastercard transactions, else can be null. - 0 - Non-SecureCode transaction, bypassed by the Merchant - 1 - Merchant-Only SecureCode transaction - 2 - Fully authenticated SecureCode transaction + description: "Start date for valid range of the VCC payment instrument,\ + \ in ISO 8601 format (YYYY-MM-DD)." + payment_allowable_period_end: + type: string + description: "End date for valid range of the VCC payment instrument, in\ + \ ISO 8601 format (YYYY-MM-DD)." + description: | + Parent object for additional VCC handling instructions, to be included as part of the payment object when + virtual_card is the requested payment type for property collect inventory. If not included, existing + behavior regarding handling of VCCs with property collect inventory is to be preserved. This object will be + ignored for non-property collect/non-VCC transactions. total_charges_allowed represents the total ceiling of + all charges allowed on the VCC, including the booking price and any allowed incidentals. The value of total_charges_allowed + must be at least the booking value. + Phone: + type: object + properties: + country_code: + type: string + description: The numerical portion of the country code from the phone number. + Do not include the leading '+' character. + example: "1" + area_code: + type: string + description: The area code of the phone number. + example: "487" + number: + type: string + description: The remaining digits of the phone number. + example: "5550077" + description: The entire phone number must be represented across the three fields + in this object. PaymentSessions: type: object properties: @@ -22197,6 +24409,12 @@ components: - leisure - business - unspecified + supplier_transparency: + $ref: '#/components/schemas/SupplierTransparency' + additional_handling: + $ref: '#/components/schemas/AdditionalHandling' + invoicing: + $ref: '#/components/schemas/Invoicing' itinerary_history: type: array items: @@ -22230,24 +24448,6 @@ components: $ref: '#/components/schemas/Link' description: "A map of links, including links to resume or cancel a held booking.\ \ This is only included for held bookings." - Phone: - type: object - properties: - country_code: - type: string - description: The numerical portion of the country code from the phone number. - Do not include the leading '+' character. - example: "1" - area_code: - type: string - description: The area code of the phone number. - example: "487" - number: - type: string - description: The remaining digits of the phone number. - example: "5550077" - description: The entire phone number must be represented across the three fields - in this object. RoomItinerary: type: object properties: @@ -22560,6 +24760,45 @@ components: type: string description: The height of the image. example: "32" + SupplierTransparency: + type: object + properties: + point_of_sale_display_to_share: + type: string + description: The name of the point of sale to be shared. + company_name_to_share: + type: string + description: The name of the company to be shared. + consent_to_share: + type: boolean + description: Whether or not this info should be shared. + description: | + To be used for collecting and sharing partner and client information with the supplier. + Invoicing: + type: object + properties: + consent_to_share: + type: boolean + description: | + Whether the partner and traveler consent to share the invoicing section information with the supplier + and property. If not provided, this invoicing data will not be shared with the supplier or property. + company_name: + type: string + description: The traveler's company name to appear on the invoice. + company_address: + $ref: '#/components/schemas/Address_1' + point_of_sale_display: + type: string + description: | + Provide this when a specific site or branding should be used on the invoice instead of partner name. + email: + type: string + description: Email address to send invoices + vat_number: + type: string + description: A custom VAT number to include on invoices + description: | + To be included if invoicing is requested. ItineraryHistoryItem: type: object properties: @@ -22700,20 +24939,20 @@ components: properties: affiliate_reference_id: type: string - description: "Your unique reference value. This field supports from 3 to\ - \ a maximum of 28 characters and is required to be unique (if provided).\ - \ Entering special characters (\"<\", \">\", \"(\", \")\", and \"&\")\ - \ in this field will result in the request being rejected." + description: | + Your unique reference value. This field supports from 3 to a maximum of 28 characters and is required to be + unique (if provided). Entering special characters ("<", ">", "(", ")", and "&") in this field will result in + the request being rejected. hold: type: boolean - description: Flag for placing a booking on hold. The booking will be released - if the resume link is not followed within the hold period. Please refer - to our Hold and Resume documentation. + description: | + Flag for placing a booking on hold. The booking will be released if the resume link is not followed within + the hold period. Please refer to our Hold and Resume documentation. email: type: string - description: "Email address for the customer. Must adhere to standard RFC\ - \ 822 email format. Special characters (\"<\", \">\", \"(\", \")\", and\ - \ \"&\") entered in this field will be re-encoded." + description: | + Email address for the customer. Must adhere to standard RFC 822 email format. Special characters ("<", ">", + "(", ")", and "&") entered in this field will be re-encoded. phone: $ref: '#/components/schemas/PhoneRequest' rooms: @@ -22722,96 +24961,32 @@ components: $ref: '#/components/schemas/CreateItineraryRequestRoom' payments: type: array - description: "Required if payment information prior to booking was not submitted.\ - \ If register payments was called prior to this call, do not submit payment\ - \ information again." + description: | + Required if payment information prior to booking was not submitted. If register payments was called prior to + this call, do not submit payment information again. items: $ref: '#/components/schemas/PaymentRequest' affiliate_metadata: type: string - description: "Field that stores up to 256 characters of additional metadata\ - \ with the itinerary. Will be returned on all retrieve responses for this\ - \ itinerary. The data must be in the format 'key1:value|key2:value|key3:value'.\ - \ Other Special characters (\"<\", \">\", \"(\", \")\", and \"&\") entered\ - \ in this field will be re-encoded." + description: | + Field that stores up to 256 characters of additional metadata with the itinerary. Will be returned on all + retrieve responses for this itinerary. The data must be in the format 'key1:value|key2:value|key3:value'. + Other Special characters ("<", ">", "(", ")", and "&") entered in this field will be re-encoded. tax_registration_number: type: string - description: "The customer's taxpayer identification number that is provided\ - \ by the government to nationals or resident aliens. This number should\ - \ be collected from individuals that pay taxes or participate in activities\ - \ that provide revenue for one or more tax types. Note: This value is\ - \ only needed from Brazilian and Indian customers." + description: | + The customer's taxpayer identification number that is provided by the government to nationals or resident + aliens. This number should be collected from individuals that pay taxes or participate in activities that + provide revenue for one or more tax types. *Note:* This value is only needed from Brazilian and Indian + customers. traveler_handling_instructions: type: string description: "Custom traveler handling instructions for the hotel. Do not\ \ include PCI sensitive data, such as credit card numbers, in this field." invoicing: - type: object - properties: - company_name: - type: string - description: The traveler's company name to appear on the invoice. - company_address: - $ref: '#/components/schemas/Address_1' - point_of_sale_display: - type: string - description: | - Provide this when a specific site or branding should be used on the invoice instead of partner name. - email: - type: string - description: Email address to send invoices - description: | - To be included if invoicing is requested. - example: - affiliate_reference_id: 4480ABC - hold: false - email: john@example.com - phone: - country_code: "1" - area_code: "487" - number: "5550077" - rooms: - - given_name: John - family_name: Smith - smoking: false - special_request: Top floor or away from street please - loyalty_id: ABC123 - loyalty: - member_id: ABD123 - program_id: SN - payments: - - type: customer_card - number: "4111111111111111" - security_code: "123" - expiration_month: "08" - expiration_year: "2025" - billing_contact: - given_name: John - family_name: Smith - address: - line_1: 555 1st St - line_2: 10th Floor - line_3: Unit 12 - city: Seattle - state_province_code: WA - postal_code: "98121" - country_code: US - enrollment_date: '2018-09-15' - third_party_authentication: - cavv: jELUbgG+Tgj0AREBDMLeCad+oIs= - eci: "05" - three_ds_version: 2.2.0 - ds_transaction_id: ac01cc2b-c1a1-4981-8c6f-400d4eec88de - pa_res_status: "Y" - ve_res_status: C - xid: 47133847-13be-4ae3-9be9-e4053b9c83c0 - cavv_algorithm: "3" - ucaf_indicator: "0" - affiliate_metadata: data_point_1:123|data_point2:This is data. - tax_registration_number: "12345678910" - traveler_handling_instructions: Please use the card provided for payment. - Avoid cancelation as this is for a corporate traveler. Contact traveler - if any issues. + $ref: '#/components/schemas/Invoicing' + supplier_transparency: + $ref: '#/components/schemas/SupplierTransparency' PhoneRequest: required: - country_code @@ -22842,14 +25017,30 @@ components: properties: given_name: type: string - description: "First name of room guest. Max 60 characters. Special characters\ - \ (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be\ - \ re-encoded." + description: | + Given name of room guest. Max 60 characters. Special characters ("<", ">", "(", ")", and "&") entered in + this field will be re-encoded. family_name: type: string - description: "Last name of room guest. Max 60 characters. Special characters\ - \ (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be\ - \ re-encoded." + description: | + Family name of room guest. Max 60 characters. Special characters ("<", ">", "(", ")", and "&") entered in + this field will be re-encoded. + sensitive_traveler_details: + type: object + properties: + middle_name: + type: string + description: | + Middle name of room guest. Max 60 characters. Special characters ("<", ">", "(", ")", and "&") entered + in this field will be re-encoded. + date_of_birth: + type: string + description: "The date of birth of room guest, in ISO 8601 format (YYYY-MM-DD)." + address: + $ref: '#/components/schemas/Address_1' + description: | + Additional sensitive (PII) data about a traveler that should only be submitted in cases where it is + necessary to clarify the identity of the traveler. smoking: type: boolean description: "Specify if the guest would prefer a smoking room. This field\ @@ -22936,6 +25127,22 @@ components: description: "Last name of room guest. Max 60 characters. Special characters\ \ (\"<\", \">\", \"(\", \")\", and \"&\") entered in this field will be\ \ re-encoded." + sensitive_traveler_details: + type: object + properties: + middle_name: + type: string + description: | + Middle name of room guest. Max 60 characters. Special characters ("<", ">", "(", ")", and "&") entered in + this field will be re-encoded. + date_of_birth: + type: string + description: "The date of birth of room guest, in ISO 8601 format (YYYY-MM-DD)." + address: + $ref: '#/components/schemas/Address_1' + description: | + Additional sensitive (PII) data about a traveler that should only be submitted in cases where it is + necessary to clarify the identity of the traveler. smoking: type: boolean description: "Specify if the guest would prefer a smoking room. This field\ @@ -22954,15 +25161,6 @@ components: deprecated: true loyalty: $ref: '#/components/schemas/Loyalty' - example: - given_name: John - family_name: Smith - smoking: false - special_request: Top floor or away from street please - loyalty_id: ABC123 - loyalty: - member_id: ABD123 - program_id: SN CommitChangeRoomRequestBody: type: object properties: @@ -23154,6 +25352,234 @@ components: description: The event type for which the test notification is requested. example: event_type: itinerary.agent.create + Campaign: + type: object + properties: + campaign_id: + type: string + description: Unique identifier for the campaign + blockout_dates: + type: boolean + description: Boolean value indicating if promotions with blockout dates + are included in this campaign. + bookable_end: + type: string + description: "The last date that bookings can be made on in this campaign,\ + \ in ISO 8601 format (YYYY-MM-DD)." + bookable_start: + type: string + description: "The first date that bookings can be made on in this campaign,\ + \ in ISO 8601 format (YYYY-MM-DD)." + curated_content: + type: object + properties: + anz: + $ref: '#/components/schemas/MarketRegionContent' + asia: + $ref: '#/components/schemas/MarketRegionContent' + ca: + $ref: '#/components/schemas/MarketRegionContent' + emea: + $ref: '#/components/schemas/MarketRegionContent' + latam: + $ref: '#/components/schemas/MarketRegionContent' + us: + $ref: '#/components/schemas/MarketRegionContent' + description: Curated content object containing map of campaign regions containing + various curated content objects + lifetime: + type: string + description: The type of lifetime of this campaign. + max_discount: + type: string + description: The maximum discount amount that is included in a campaign. + min_discount: + type: string + description: The minimum discount amount that is included in a campaign. + name: + type: string + description: The name of the campaign. + property_count: + type: string + description: The number of properties participating in this campaign. + stay_end: + type: string + description: The last date that check-ins can be set to in this campaign + in ISO 8601 format (YYYY-MM-DD). + stay_start: + type: string + description: The first date that check-ins can be set to in this campaign + in ISO 8601 format (YYYY-MM-DD). + MarketRegionContent: + type: object + properties: + copy: + type: array + description: An array of copy objects that should be used for this campaign + and region. + items: + $ref: '#/components/schemas/Copy' + destinations: + type: array + description: An array of places a campaign is limited to having promotions + in. + items: + type: string + images: + type: array + description: An array of images associated with this campaign. + items: + $ref: '#/components/schemas/Image_2' + themes: + type: array + description: An array of themes associated with this campaign. + items: + type: string + Copy: + type: object + properties: + copy: + type: string + description: The marketing copy that should be used for this campaign. + subcopy: + type: string + description: The marketing subcopy that should be used for this campaign. + description: A copy object containing both copy and subcopy that should be used + with promotion for this region. + Image_2: + type: object + properties: + image: + type: string + description: A link to the image. + tags: + type: array + description: Tags for the image. + items: + type: string + description: An image object containing the link to the image and tags for the + image. + Promotion: + type: object + properties: + promotion_id: + type: string + description: Unique identifier for the promotion + blockout_dates: + type: array + description: | + An array of stay date ranges within this check-in / check-out range that are not eligible for this promotion. + The stay dates are determined by the would be check-in of that night. With a check-in date of 2023-09-01, + and a check-out date of 2023-09-06, this would be a 5 night stay. A `blockout_dates` with start: '2023-09-02' + and end: 2023-09-03 would mean 2 of the nights are not eligible. The 1st night is eligible, the 2nd and 3rd + nights are not eligible, and the 4th and 5th nights are eligible. + items: + $ref: '#/components/schemas/BlockoutDate' + bookable_end: + type: string + description: "The last date that bookings can be made on in this promotion,\ + \ in ISO 8601 format (YYYY-MM-DD)." + bookable_start: + type: string + description: "The first date that bookings can be made on in this promotion,\ + \ in ISO 8601 format (YYYY-MM-DD)." + campaign_id: + type: string + description: The campaign id this promotion is associated with. + category_id: + type: string + description: The category id of the property. + chain_id: + type: string + description: The chain id for the property. + description: + type: string + description: The description of the promotion. + discount_percentage: + type: string + description: | + The percent off of the cost of the property when using this promotion. + This will only be returned for percentage based promotions + guest_rating: + type: string + description: | + The overall rating for the property, averaged from all guest reviews. Returns a value between 1.0 and 5.0. + lifetime: + type: string + description: The type of lifetime of this promotion. + links: + type: object + properties: + content: + $ref: '#/components/schemas/Link' + description: "A map of links, including link to get the property content." + market_region: + type: string + description: The market region for the promotion. + members_only: + type: string + description: Boolean value indicating if a promotion is for members only. + min_advance_purchase_days: + type: string + description: The least number of days before check-in a stay must be booked + to use this promotion. + min_stay: + type: string + description: The least number of days that must be booked to use this promotion. + mobile_only: + type: string + description: Boolean value indicating if a promotion is for mobile only. + product_lines: + type: array + description: The list of product lines. + items: + type: string + description: The product line this promotion is a part of. + property_id: + type: string + description: Unique Expedia property ID. + rank: + type: object + properties: + destination: + type: string + description: Rank of the destination associated with the promotion. + promotion: + type: string + description: Rank of the promotion itself. + property: + type: string + description: Rank of the property associated with the promotion. + description: A map of ranks with 1 being the best and descending from there. + region_id: + type: string + description: The region id for the property. + star_rating: + type: string + description: | + The rating assigned to this property. Returns a value between 0.0 and 5.0. A value of 0.0 or a blank value + indicates no rating is available. + stay_end: + type: string + description: The last date that check-ins can be set to in this promotion + in ISO 8601 format (YYYY-MM-DD). + stay_start: + type: string + description: The first date that check-ins can be set to in this promotion + in ISO 8601 format (YYYY-MM-DD). + supply_source: + type: string + description: The supply source of the property. + BlockoutDate: + type: object + properties: + end: + type: string + description: End date of blockout date range in ISO 8601 format. + start: + type: string + description: Start date of blockout date range in ISO 8601 format. + description: An array of blockout dates that apply to the promotion. Amenity: type: object properties: @@ -23176,6 +25602,13 @@ components: items: type: string description: An individual amenity. + Coordinates: + type: object + properties: + latitude: + type: number + longitude: + type: number BedGroupConfiguration: type: object properties: @@ -23192,6 +25625,7 @@ components: MerchantOfRecord: type: string description: | + Merchant of Record * `expedia` - Payment is taken by Expedia. * `property` - Payment is taken by the property. enum: @@ -23252,6 +25686,8 @@ components: $ref: '#/components/schemas/Totals' fees: $ref: '#/components/schemas/FeesPricingInformation' + marketing_fee_details: + $ref: '#/components/schemas/MarketingFeeDetails' description: The pricing information object. NightCharge: type: object @@ -23270,20 +25706,20 @@ components: description: | The price breakout type. * `base_rate` - The room rate without any taxes and fees applied. - * `tax_and_service_fee` - Tax recovery charges, service fees, and taxes. Ensure that you capture these values and display as: - "Taxes and Fees" - * `extra_person_fee` - A per night fee that is charged by a hotel for additional adults over the nightly rate. This fee is included as part of the total. - * `property_fee` - The property fee surcharge type must be displayed beginning on the initial hotel room selection page, immediately after your hotel search results page. This placement is required by the U.S. Federal Trade Commission (FTC). - Display this surcharge as "Property Fee" on your room selection page, as described above, and in all subsequent price breakdowns for the following Points of Sale: - * `US` - * `Canada` - * `Brazil` - * `LATAM` - * `sales_tax` - Taxes that must be displayed by certain jurisdictional laws. Ensure that you capture these values and display as "Taxes". + * `tax_and_service_fee` - Tax recovery charges, service fees, and taxes. Ensure that you capture these values + and display as: "Taxes and Fees" + * `extra_person_fee` - A per night fee that is charged by a hotel for additional adults over the nightly rate. + This fee is included as part of the total. + * `property_fee` - For US POS: The property fee surcharge type must be displayed, combined with the base rate, + wherever you show a price, from the first display of the price throughout the booking path. + * `sales_tax` - Taxes that must be displayed by certain jurisdictional laws. Ensure that you capture these + values and display as "Taxes". * `adjustment` - This is the amount that the individual night have been adjusted/discounted. - * `recovery_charges_and_fees` - Tax recovery charges, service fees, and taxes. Ensure that you capture these values and display as: - "Taxes and Fees" - * `traveler_service_fee` - Fee charged by Vrbo to support use of online tools, services and functions on its platform which enable guest self service. May be displayed as 'Traveler Service Fee' or 'Service Fee' any time fees are broken out for display on partner sites. + * `recovery_charges_and_fees` - Tax recovery charges, service fees, and taxes. Ensure that you capture these + values and display as: "Taxes and Fees" + * `traveler_service_fee` - Fee charged by Vrbo to support use of online tools, services and functions on its + platform which enable guest self service. May be displayed as 'Traveler Service Fee' or 'Service Fee' any + time fees are broken out for display on partner sites. enum: - base_rate - tax_and_service_fee @@ -23396,6 +25832,25 @@ components: $ref: '#/components/schemas/Amount' description: An object representing a charge. Information about the charge is provided in both the billable currency and the request currency. + MarketingFeeDetails: + type: object + properties: + base: + $ref: '#/components/schemas/Charge' + overrides: + $ref: '#/components/schemas/Charge' + incentives: + $ref: '#/components/schemas/Charge' + other: + $ref: '#/components/schemas/Charge' + description: | + An object representing a more granular view and key components contributing to Marketing Fee estimates, in line + with contracted commercial terms between Expedia and partner. + * `base` - Potential earnings derived from standard or flat commission rates. + * `overrides` - Potential earnings derived from additional variable commission rates, typically subject to + achievement of specific revenue targets. + * `incentives` - Potential earnings derived from additional incentives, applicable for a limited time period. + * `other` - Potential earnings derived from a category not yet covered by the above components. ValueAdd: type: object properties: @@ -23722,4 +26177,4 @@ components: \ authentication](https://developers.expediagroup.com/docs/rapid/resources/reference/signature-authentication)\ \ page for full details." name: Authorization - in: header \ No newline at end of file + in: header