Rate plan resources
The Product API enables you to read, create, and edit rate plans. The API response is transmitted through a synchronous connection to update the property’s system with the status of the Product API request. If a connectivity problem or another issue occurs, an error code will be returned that indicates what issue occurred.
Product API is RESTful and all requests and responses must be sent over a secure connection. All request and response bodies, including errors are encoded in JSON.
To facilitate integrating with Product API, Expedia Group offers a Swagger JSON file file documenting Product API’s model and operations.
Obtain a list of rate plans
- Method: GET
- URL:
https://services.expediapartnercentral.com/properties/{propertyId}/roomTypes/{roomTypeId}/ratePlans
- Consumes: HTTP Request (GET)
- Produces: application/vnd.expedia.eps.product-v2+json
Request parameters
Parameter | Parameter Type | Description | Required | Data Type | Default Value |
Authorization | header | Authorization token in HTTP header. Format: Authorization: Basic [username:password encoded by Base64] | Yes | Base64 encoded auth token |
|
propertyId | path | Expedia Property ID | Yes | string |
|
roomTypeId | path | Room type resource ID | Yes | string |
|
status | query | Status filter. String. Only supported value is "all". | false | string | active |
Success responses
Status Code | Description | Response Model |
200 | OK |
Create a new rate plan
In a rate plan create request, most fields are optional. If an optional field is not provided, it will be defaulted per specific rules. See the example below for more details.
There are some fields that you cannot set; these will default to values defined by Expedia Group. If fields that are documented as being not accepted in requests, like Compensation, are provided in the request, Product API validates that the data provided matches what Expedia Group defaults to. Otherwise, the API rejects the rate plan creation with an error message indicating why it was rejected.
For example, you do not need to specify the Compensation in the product create request. If you include the compensation elements in a request, the API checks if it matches the property contract, and rejects the message if it does not.
The create response will contain all the fields originally provided in the request. The response will also include the default values of the fields that were not provided in the request. If an error occurred, the response will contain one or more errors.
Note: Some optional fields may not have any values defined in the Expedia Group system. In this case the fields are omitted completely in the response.
- Method: POST
- URL:
https://services.expediapartnercentral.com/properties/{propertyId}/roomTypes/{roomTypeId}/ratePlans
- Consumes: application/vnd.expedia.eps.product-v2+json
- Produces: application/vnd.expedia.eps.product-v2+json
Request parameters
Parameter | Parameter Type | Description | Required | Data Type | Default Value |
Authorization | header | Authorization token in HTTP header. Format: Authorization: Basic [username:password encoded by Base64] | Yes | Base64 encoded auth token |
|
propertyId | path | Expedia Property ID | Yes | string |
|
roomTypeId | path | Room type resource ID | Yes | string |
|
body | body | JSON message describing the new rate plan | Yes |
|
Example syntax
1{2 "name": "My Rate Plan Name",3 "rateAcquisitionType": "NetRate",4 "distributionRules": [5 {6 "partnerCode": "ECCode",7 "distributionModel": "ExpediaCollect"8 },9 {10 "partnerCode": "HCCode",11 "distributionModel": "HotelCollect"12 }13 ],14 "status": "Active",15 "type": "Standalone",16 "pricingModel": "PerDayPricing",17 "occupantsForBaseRate": 2,18 "taxInclusive": false,19 "cancelPolicy": {20 "defaultPenalties": [21 {22 "deadline": 0,23 "perStayFee": "1stNightRoomAndTax",24 "amount": 025 },26 {27 "deadline": 24,28 "perStayFee": "None",29 "amount": 030 }31 ],32 "exceptions": [33 {34 "endDate": "2019-04-01",35 "startDate": "2019-03-01",36 "penalties": [37 {38 "amount": 1.0,39 "deadline": 0,40 "perStayFee": "1stNightRoomAndTax"41 },42 {43 "amount": 1.0,44 "deadline": 24,45 "perStayFee": "FullCostOfStay"46 }47 ]48 }49 ]50 },51 "additionalGuestAmounts": [52 {53 "ageCategory": "Adult",54 "amount": 8.7355 },56 {57 "ageCategory": "ChildAgeA",58 "amount": 559 }60 ],61 "serviceFeesPerStay": [62 {63 "isTaxable": false,64 "percent": 0.265 },66 {67 "isTaxable": true,68 "amountPerNight": 5.0,69 "amountPerStay": 20.070 }71 ],72 "serviceFeesPerPerson": [73 {74 "dateStart": "2018-09-20",75 "dateEnd": "2079-06-06",76 "ageCategory": "Adult",77 "isTaxable": true,78 "amountPerStay": 2079 },80 {81 "dateStart": "2018-07-27",82 "dateEnd": "2018-09-19",83 "ageCategory": "Adult",84 "isTaxable": true,85 "amountPerNight": 1286 }87 ],88 "valueAddInclusions": ["Free Parking", "Free Breakfast", "Free Internet"],89 "minLOSDefault": 1,90 "maxLOSDefault": 28,91 "minAdvBookDays": 0,92 "maxAdvBookDays": 500,93 "bookDateStart": "1900-01-01",94 "bookDateEnd": "2079-06-06",95 "travelDateStart": "1901-01-01",96 "travelDateEnd": "2079-06-06",97 "mobileOnly": false98}
Alternatively, you can send a minimal payload to add a new rate plan on an
existing room type, and Expedia Group will default everything. Doing a POST on
https://services.expediapartnercentral.com/properties/12933873/roomTypes/201357991/ratePlans
with
this payload to create an Expedia Traveler Preference-enabled rate plan. See the
Creating Expedia Traveler Preference Rate Plans section for additional details.
Success responses
Status Code | Description | Response Model |
201 | Created |
Read a single rate plan
- Method: GET
- URL:
https://services.expediapartnercentral.com/properties/{propertyId}/roomTypes/{roomTypeId}/ratePlans/{ratePlanId}
- Consumes: HTTP Request (GET)
- Produces: application/vnd.expedia.eps.product-v2+json
Request parameters
Parameter | Parameter Type | Description | Required | Data Type |
Authorization | header | Authorization token in HTTP header. Format: Authorization: Basic [username:password encoded by Base64] | Yes | Base64 encoded auth token |
propertyId | path | Expedia Property ID | Yes | string |
roomTypeId | path | Room type resource ID | Yes | string |
ratePlanId | path | Rate plan resource ID | Yes | string |
Success responses
Status Code | Description | Response Model |
200 | OK |
Modify an existing rate plan
Expedia offers two ways to modify a rate plan.
Using the PUT verb, you can perform a full overlay change of the rate plan resource. It means that all elements of a rate plan need to be provided, and any optional element not provided will be erased/removed.
Using the PATCH verb, you can perform a partial update of a rate plan. Expedia Group implemented the Merge-Patch RFC.
Full overlay (PUT)
- Method: PUT
- URL:
https://services.expediapartnercentral.com/properties/{propertyId}/roomTypes/{roomTypeId}/ratePlans/{ratePlanId}
- Consumes: application/vnd.expedia.eps.product-v2+json
- Produces: application/vnd.expedia.eps.product-v2+json
Request parameters
Parameter | Parameter Type | Description | Required | Data Type |
Authorization | header | Authorization token in HTTP header. Format: Authorization: Basic [username:password encoded by Base64] | Yes | Base64 encoded auth token |
propertyId | path | Expedia Property ID | Yes | string |
roomTypeId | path | Room type resource ID | Yes | string |
ratePlanId | path | Rate plan resource ID | Yes | string |
body | body | JSON message of modified rate plan | Yes |
Example syntax
1{2 "resourceId": 205020307,3 "name": "My Rate Plan Name",4 "rateAcquisitionType": "NetRate",5 "distributionRules": [6 {7 "expediaId": "205020307",8 "partnerCode": "ECCode",9 "distributionModel": "ExpediaCollect",10 "manageable": true,11 "compensation": {12 "percent": 0.15,13 "minAmount": 014 }15 },16 {17 "expediaId": "205020307A",18 "partnerCode": "HCCode",19 "distributionModel": "HotelCollect",20 "manageable": false,21 "compensation": {22 "percent": 0.1523 }24 }25 ],26 "status": "Active",27 "type": "Standalone",28 "pricingModel": "PerDayPricing",29 "occupantsForBaseRate": 2,30 "taxInclusive": false,31 "depositRequired": false,32 "creationDateTime": "2016-10-20T21:05:12Z",33 "lastUpdateDateTime": "2016-10-21T18:37:27Z",34 "cancelPolicy": {35 "defaultPenalties": [36 {37 "deadline": 0,38 "perStayFee": "1stNightRoomAndTax",39 "amount": 040 },41 {42 "deadline": 24,43 "perStayFee": "None",44 "amount": 045 }46 ],47 "exceptions": [48 {49 "endDate": "2019-04-01",50 "startDate": "2019-03-01",51 "penalties": [52 {53 "amount": 1.0,54 "deadline": 0,55 "perStayFee": "1stNightRoomAndTax"56 },57 {58 "amount": 1.0,59 "deadline": 24,60 "perStayFee": "FullCostOfStay"61 }62 ]63 }64 ]65 },66 "additionalGuestAmounts": [67 {68 "dateStart": "2015-11-27",69 "dateEnd": "2079-06-06",70 "ageCategory": "Adult",71 "amount": 8.7372 },73 {74 "dateStart": "2015-11-27",75 "dateEnd": "2079-06-06",76 "ageCategory": "ChildAgeA",77 "amount": 578 }79 ],80 "serviceFeesPerStay": [81 {82 "isTaxable": false,83 "percent": 0.284 },85 {86 "isTaxable": true,87 "amountPerNight": 5.0,88 "amountPerStay": 20.089 }90 ],91 "serviceFeesPerPerson": [92 {93 "dateStart": "2018-09-20",94 "dateEnd": "2079-06-06",95 "ageCategory": "Adult",96 "isTaxable": true,97 "amountPerStay": 2098 },99 {100 "dateStart": "2018-07-27",101 "dateEnd": "2018-09-19",102 "ageCategory": "Adult",103 "isTaxable": true,104 "amountPerNight": 12105 }106 ],107 "valueAddInclusions": ["Free Parking", "Free Breakfast", "Free Internet"],108 "minLOSDefault": 1,110 "maxLOSDefault": 28,112 "minAdvBookDays": 0,114 "maxAdvBookDays": 500,116 "bookDateStart": "1900-01-01",118 "bookDateEnd": "2079-06-06",120 "travelDateStart": "1901-01-01",122 "travelDateEnd": "2079-06-06",124 "mobileOnly": false,126 "_links": {127 "self": {128 "href": "https://services.expediapartnercentral.com/properties/12933870/roomTypes/201706782/ratePlans/205020307"129 }130 }131}
Success responses
Status Code | Description | Response Model |
200 | OK |
Partial update (PATCH)
Expedia Group chose the merge-patch method for partial update, as described in IETF RFC. This method allows you to update a rate plan by providing only the fields/values that need to be changed. This saves you from having to first read the rate plan before updating it. If you provide the complete rate plan data, this method essentially behaves just like the update method.
The response will always be the complete image of the rate plan after changes have been applied.
Important: The PATCH logic only applies to first (top) level elements/objects of the rate plan. You can decide to include any number of these top level elements/objects, and any elements/objects not included will be ignored/untouched. If you include any array or complex object (such as cancel policy, additional guest amounts or distribution rules), these objects must be fully specified with all the desired elements/attributes/object changes, as they are treated as full overlay. First-level elements/objects not provided in the input will remain unchanged. Some top-level elements can be removed, but to do so, you have to explicitly specify it in the JSON message as null. For array types, you need to provide a "null" or empty array value. Finally, all validation rules are applied on the complete updated rate plan data. For instance, only providing a travelDateStart that is after the current travelDateEnd will yield the appropriate error response.
- Method: PATCH
- URL:
https://services.expediapartnercentral.com/properties/{propertyId}/roomTypes/{roomTypeId}/ratePlans/{ratePlanId}
- Consumes: application/vnd.expedia.eps.product-v2+json
- Produces: application/vnd.expedia.eps.product-v2+json
Request parameters
Parameter | Parameter Type | Description | Required | Data Type |
Authorization | header | Authorization token in HTTP header. Format: Authorization: Basic [username:password encoded by Base64] | Yes | Base64 encoded auth token |
propertyId | path | Expedia Property ID | Yes | string |
roomTypeId | path | Room type resource ID | Yes | string |
ratePlanId | path | Rate plan resource ID | Yes | string |
body | body | JSON message of partially updated rate plan | Yes |
Examples
This updates the name and the status:
1{2 "name": "My New Rate Plan Name",3 "status": "Inactive"4}
This updates only the cancel policy:
1 "cancelPolicy": {2 "defaultPenalties": [3 {4 "deadline": 0,5 "perStayFee": "1stNightRoomAndTax",6 "amount": 07 },8 {9 "deadline": 24,10 "perStayFee": "None",11 "amount": 012 }13 ],14 "exceptions": [15 {16 "endDate": "2019-04-01",17 "startDate": "2019-03-01",18 "penalties": [19 {20 "amount": 1.0,21 "deadline": 0,22 "perStayFee": "1stNightRoomAndTax"23 },24 {25 "amount": 1.0,26 "deadline": 24,27 "perStayFee": "FullCostOfStay"28 }29 ]30 }31 ]32 }33}
Success responses
Status Code | Description | Response Model |
200 | OK |
Delete an existing rate plan
- Method: DELETE
- URL:
https://services.expediapartnercentral.com/properties/{propertyId}/roomTypes/{roomTypeId}/ratePlans/{ratePlanId}
- Consumes: HTTP Request (DELETE)
- Produces: application/vnd.expedia.eps.product-v2+json
Request parameters
Parameter | Parameter Type | Description | Required | Data Type |
Authorization | header | Authorization token in HTTP header. Format: Authorization: Basic [username:password encoded by Base64] | Yes | Base64 encoded auth token |
propertyId | path | Expedia Property ID | Yes | string |
roomTypeId | path | Room type resource ID | Yes | string |
ratePlanId | path | Rate plan resource ID | Yes | string |
Success responses
Status Code | Description |
204 | No Content |
Definitions
RatePlan resource definition
Property Name | Type | Description |
resourceId | integer | Uniquely describes the rate plan resource. Cannot be provided in a create request, will be assigned by Expedia Group after successful rate plan creation. |
name | string | Name of the rate plan, for information/identification purposes. Minimum 1, maximum 40 characters. If not provided, defaults to the manageable rate plan partner code. |
rateAcquisitionType | enum | Rate acquisition type, inherited from the Property. Possible values:
|
distributionRules | Array [DistributionRule] | Used to provide information about how this rate plan can be sold (Expedia Collect, Hotel Collect or both). Also contain the IDs and Codes that need to be mapped to push avail/rates and identify the right rate plans in booking messages. When a rate plan has a single Distribution Rule with the Distribution Model set as Hotel Collect, the rate plan will only be sold as Hotel Collect and the property is expected to collect the payment at the time customers check in. When a rate plan has a single Distribution Rule with Distribution Model set to Expedia Collect, it indicates that this rate plan will be sold as Expedia Collect and the property will collect payment from Expedia. If two distinct Distribution Rules are set, one for Expedia Collect, one for Hotel Collect, it indicates that the rate plan can be sold as either Expedia Collect or Hotel Collect. In this case, only one of them can be used to manage availability and rates but both can be used in booking messages, to indicate which option (Expedia Collect or Hotel Collect) the customer selected. Any other combination of Distribution Rules cannot exist. For properties that participate in the Expedia Traveler Preference (ETP) program, it is required for all their standalone rate plans to support both Expedia Collect and Hotel Collect. |
status | enum | Defaults to Active if not provided during creation. Possible values:
|
type | enum | Rate Plan type. Defaults to Standalone if not provided during creation. Possible values:
|
pricingModel | enum | Rate plan pricing model. Will default to the property's pricing model, and if provided, it has to match the property's pricing model (except in the case of Length of Stay-based pricing models which are only at the Rate plan level - PerDayPricingByLengthOfStay, OccupancyBasedPricingByDayOfArrival) . Possible values are:
|
occupantsForBaseRate | integer | Maximum occupants allowed for the base rate. Minimum 1, Maximum 20. This is only applicable for per-day pricing properties, and is required in create requests. It indicates how many occupants the per-day price applies to. |
taxInclusive | Boolean | Returned to indicate whether the rate being exchanged over other APIs (availability/rates or booking) is inclusive of taxes or not. During creation, for properties managing net rates, the default value is false. For sell rates, it is based on the property's configuration. |
depositRequired | Boolean | Indicates if a deposit is required upon booking. This flag is only available for rate plans with the Hotel Collect or Expedia Traveler Preference business models. |
creationDateTime | date | Date at which the rate plan has been created. The date is formatted in the ISO 8601 format. Set by Expedia Group at the time of create, cannot be provided in create request. Cannot be changed. Example: 2016-10-20T21:05:12Z. |
lastUpdateDateTime | date | Date of the last modifications to this rate plan. The date is formatted in the ISO 8601 format. Read-only. Set by Expedia Group at the time of Create or Update. Cannot be provided in create or changed by you in update messages. Example: 2016-10-21T18:37:27Z. |
cancelPolicy | Default cancel policy. If not provided in a create request, Product API will select a refundable cancellation policy that is currently used by the most recently created standalone rate plan under the same property. If Expedia Group cannot identify a recently created rate plan, the policy will be defaulted to a standard cancellation policy, where the cancellation deadline is set to 24 hours from guest arrival, the penalty for cancelling inside this deadline is one night room and tax, and there is no penalty for cancelling outside of this deadline. | |
additionalGuestAmounts | Array [AdditionalGuestAmount] | Array of additional guest amounts. Up to 6 can be specified, 1 per category. Only 1 amount can be given per category, for all dates. |
serviceFeesPerStay | Array [serviceFeesPerStay] | Array of Per Stay Service Fees that are collected at the time of Booking. |
serviceFeesPerPerson | Array [serviceFeesPerPerson] | Array of Per Person Service Fees that are collected at the time of Booking. |
valueAddInclusions | Array [valueAddInclusionsEnum] | Array of value add inclusions. Value add inclusions are special features included with this rate. Breakfast, Internet, or parking inclusions are the most frequently used ones |
minLOSDefault | integer | Default minimum LengthOfStay restriction. Minimum 1, maximum 28. Set to 1 by default if not provided in a create request. Will always be considered along the value defined for each stay date, and the most restrictive of this default and the daily restriction will prevail |
maxLOSDefault | integer | Default maximum LengthOfStay restriction. Minimum 1, maximum 28. Set to 28 by default if not provided in a create request. Will always be considered along the value defined for each stay date, and the most restrictive of this default and the daily restriction will prevail |
minAdvBookDays | integer | The minimum days before a stay date that the rate plan can be sold. Minimum 0, maximum 500 |
maxAdvBookDays | integer | The maximum days before a stay date that the rate plan can be sold. Minimum 0, maximum 500 |
bookDateStart | date | Date at which this rate plan starts being available for searching on any Expedia POS. If in the past, indicates rate plan book date start is not restricted. Accepted format: YYYY-MM-DD. If not restricted, will be returned as 1900-01-01 |
bookDateEnd | date | Date at which this rate plan stops being available for searching on any Expedia POS. Format YYYY-MM-DD. If not restricted, will be returned as 2079-06-06. If in 2079, indicates this rate plan book end date is unrestricted |
travelDateStart | date | Date at which customers can start checking in for a stay including this rate plan. Format YYYY-MM-DD. If not restricted, will be returned at 1900-01-01. If in the past, indicates rate plan travel start date is not restricted |
travelDateEnd | date | Latest date at which customers can checkout for a stay including this rate plan. Format YYYY-MM-DD. If not restricted, will be returned as 2079-06-06. If in 2079, indicates rate plan travel end date is not restricted |
mobileOnly | Boolean | Indicates this rate plan is only available through shopping done on mobile devices |
ratePlanLinkage | Describes how the Rate Plan rates and availability are going to be derived from its parent Rate Plan. Optional, only returned on rate plans being derived from a parent rate plan via a rate linkage rule. Cannot be provided in create requests. Cannot be changed via partial (PATCH) or full overlay (PUT) updates. | |
_links | Collection of URLs that point to various resources related to the current resource. Cannot be provided in create requests. Cannot be changed via partial (PATCH) or full overlay (PUT) updates. |
additionalGuestAmount resource definition
Property Name | Type | Description |
dateStart | date | Date at which this amount started being applicable, can be in the past |
dateEnd | date | Date until which this amount will be applied. If no end date is defined, will be returned as 2079-06-06. |
ageCategory | enum | The age category for the additional guests. Possible values:
|
amount | number | Minimum value 0.000, accepts up to 3 decimal points |
percent | number | Percentage value (of the base rate). Values should be between 0 and 1, will return up to 4 decimal points |
serviceFeesPerStay resource definition
Property Name | Type | Description |
isTaxable | Boolean | Indicates if the Service Fees loaded is to be taxed or not. |
amountPerNight | Number | Defines the amount charged per night. Maximum possible value is 12000000 |
amountPerStay | Number | Defines the amount charged for the entire stay period. Maximum possible value is 12000000 |
percent | number | Percentage value (of the base rate). Values should be between 0 and 1, will return up to 4 decimal points |
serviceFeesPerPerson resource definition
Property Name | Type | Description |
dateStart | date | Date at which this amount started being applicable, can be in the past |
dateEnd | date | Date until which this amount will be applied. If no end date defined, will be returned as 2079-06-06. |
ageCategory | enum | The age category for the additional guests. Possible values:
|
isTaxable | Boolean | Indicates if the Service Fees loaded is to be taxed or not. |
amountPerNight | Number | Defines the amount charged per night. Maximum possible value is 12000000 |
amountPerStay | Number | Defines the amount charged for the entire stay period. Maximum possible value is 12000000 |
cancelPolicy resource definition
Property Name | Type | Description |
defaultPenalties | Array [Penalty] | Array of penalties. There can be up to three penalties provided. A penalty with a deadline of 0 is always required. A second and third deadline can optionally be provided. |
exceptions | Array [CancelPolicyException] | Array of exceptions. Exceptions can be provided for specific date ranges. An exception will contain a startDate, endDate, and an array of penalties that follow the same structure and rules as the penalties provided as default. Maximum 500 exceptions. |
CancelPolicyException resource definition
Property Name | Type | Required | Description |
startDate | date | Yes | Start date of an exception. Has to be in format: YYYY-MM-DD |
endDate | date | Yes | End date of an exception. Cannot be in the past. Has to be in format: YYYY-MM-DD. |
penalties | Array [Penalty] | Yes | Array of penalties applicable to the start and end dates provided. There can be up to three penalties provided. A penalty with a deadline of 0 is always required. A second and third deadline can optionally be provided. |
Penalty resource definition
Property Name | Type | Description |
deadline | integer | Penalty window defined in hours. Hours are relative to check-in date and the property's cancellation time (property level configuration that is available in read-only mode under the property resource). Minimum 0, maximum 32767 hours. |
perStayFee | Fee that will be charged if the customer cancels within the specified deadline. | |
amount | number | Minimum value 0.000 (3 decimal points). The amount provided here should be based on the property rate acquisition type. If the property rate acquisition type is Net, the rate provided here should be net of Expedia compensation. If it is SellLAR, the rate should be what the customer will be charged (inclusive of Expedia Group compensation). Used to define a flat amount that would be charged as a cancel or change penalty. This replaces a per-stay fee. A cancel penalty can either be a per-stay fee or a flat amount, but it cannot be both. |
DistributionRule resource definition
Property Name | Type | Description |
expediaId | string | String, minimum 1, maximum 50 characters. Expedia Group rate plan ID that will be specified in booking messages and that should be used to manage avail/rates if this set of distribution rules is marked as manageable. |
partnerCode | string | Unique partner identifier for the rate plan. Minimum 1, maximum 10 characters. For a given room type, this code has to be unique per distribution model (e.g. for all Expedia Collect rate plan distribution rules under this room, this code has to be unique). Uniqueness will be validated by Expedia Group during create or update operations. Accepted characters are a-z, A-Z, 0-9, '.', '_' and '-'. |
distributionModel | string | Distribution model adopted by the rate plan, matching property configuration. |
manageable | Boolean | Cannot be provided in a create request. Default to yes for Hotel Collect-only or Expedia Collect-only rate plans. For Expedia Traveler Preference rate plans, if rate acquisition type is net, Expedia Collect will default to true; if rate acquisition type is Sell/LAR, Hotel Collect will default to true. |
compensation | Applicable compensation rules for this distribution model. Defaults to the value defined on your contract. Cannot be provided in a create request, and cannot be modified in update operation. |
CompensationRule resource definition
Property Name | Type | Description |
percent | number | Compensation percentage applied by default. Expressed as a value. Between 0 and 1, will return up to 4 decimal points |
minAmount | number | Minimum amount. Accepts up to 3 decimal points. Only applicable to Expedia Collect distribution rules |
exceptions | Array [CompensationExceptionRule] | Depending on the contractual agreement between Expedia Group and the partner, compensation can vary based on different criteria. This array of exceptions will reflect this. |
CompensationExceptionRule resource definition
Property Name | Type | Description |
dateStart | date | Starting date of the exception rule. Accepted format: YYYY-MM-DD |
dateEnd | date | End date of the exception rule. Accepted format: YYYY-MM-DD |
minAmount | number | Accepts up to 3 decimal points |
percent | number | Between 0 and 1, accepts up to 3 decimal points |
mon | Boolean | For any exception, all 7 days of the week are returned with a true/false indicator. |
tue | Boolean | For any exception, all 7 days of the week are returned with a true/false indicator. |
wed | Boolean | For any exception, all 7 days of the week are returned with a true/false indicator. |
thu | Boolean | For any exception, all 7 days of the week are returned with a true/false indicator. |
fri | Boolean | For any exception, all 7 days of the week are returned with a true/false indicator. |
sat | Boolean | For any exception, all 7 days of the week are returned with a true/false indicator. |
sun | Boolean | For any exception, all 7 days of the week are returned with a true/false indicator. |
RatePlanLinkage resource definition
Property Name | Type | Description |
deriveAvailabilityStatus | Boolean | Indicates if the rate plan daily availability status (open/close) is linked to parent or not. |
deriveLengthOfStayRestriction | Boolean | Indicates if the daily restrictions on minimum and maximum length of stay are derived from the parent Rate Plan or not. |
deriveClosedToArrival | Boolean | Indicates if the daily restriction on close to arrival is derived from the parent Rate Plan or not. |
deriveClosedToDeparture | Boolean | Indicates if the daily restriction on close to departure is derived from the parent Rate Plan or not. |
rateDerivationRules | Array [RateDerivationRule] | Rules that describe how the daily rates are derived from the parent Rate Plan. |
RateDerivationRule resource definition
Property Name | Type | Description |
dateStart | date | Starting date of the rate derivation rule. Format is YYYY-MM-DD. |
dateEnd | date | Ending date of the rate derivation rule. Format is YYYY-MM-DD. |
adjustmentType | Defines the type of adjustment made on the rate. Possible values are Percentage and Amount. | |
adjustmentValue | number | Defines the actual adjustment being applied to the rate. Can take a positive or negative value, depending on the type of adjustment applied. Percentage values are expressed as decimal numbers between 0.00 and 100.00, where 10.0 means 10%. |
exclusionDates | Array [Period] | Periods of time during which the rate plan derivation rule does not apply. When exclusion dates are specified, they apply to rate and restriction linkage. In other words, for these exclusion dates, nothing at all is linked. |
Period resource definition
Property Name | Type | Description |
dateStart | date | Starting date of the period. Format is YYYY-MM-DD. |
dateEnd | date | Ending date of the period. Format is YYYY-MM-DD. |
RatePlanLinks resource definition
Property Name | Type | Description |
self | URL of the current resource. Cannot be provided in create requests. Cannot be changed via partial (PATCH) or full overlay (PUT) updates. | |
parentRatePlan | URL of the parent Rate Plan, from which this Rate Plan derives its rate and availability. Optional, only returned if a rate plan is derived from a parent via a rate plan linkage rule. Cannot be provided in create requests. Cannot be changed via partial (PATCH) or full overlay (PUT) updates. | |
derivedRatePlans | Array [Link] | List of URLs that point to the derived Rate Plans. These Rate Plans have their rates and availability derived from the parent Rate Plan. Optional, only returned if a rate plan is being derived by children rate plans via rate plan linkage rules. Cannot be provided in create requests. Cannot be changed via partial (PATCH) or full overlay (PUT) updates. |
depositPolicy | URL of the property deposit policy. Cannot be provided in create requests. Cannot be changed via partial (PATCH) or full overlay (PUT) updates. |
Link resource definition
Property Name | Type | Description |
href | string | The link's URL. |
Response
The Product API response message is returned synchronously and allows Expedia Group to update the property’s system with the status of the Product API request.
All responses provided by the API will either contain an entity
attribute,
which may represent a single object or an array of objects, or an errors
attribute that includes an array of errors. Entity and errors are in the same wrapper because most frameworks will
deserialize responses automatically but require a target type to which the
response will be deserialized.
Both successful and unsuccessful responses are returned by the same DTO, but can have either entity or errors, never both.
A Java implementation to handle this, using Spring’s RestTemplate, could look like this:
1ResponseEntity <ResponseWrapperDTO <RoomTypeDTO>> response =2restTemplate.exchange(3 "url",4 HttpMethod.POST,5 entity,6 new ParameterizedTypeReference<ResponseWrapperDTO <RoomTypeDTO>>() {}7);
Entity attribute
The entities supported by Product API are rate plans, room types, and properties. The Entity approach allows you to use the same wrapper for all resources exposed by Expedia Group’s Product API and Image API services.
Consider the following code in Java:
1public class ResponseWrapperDTO <T> implements Serializable {2 private T entity;3 private List <ErrorDTO> errors;4}
Entities can be Product/RatePlan/RoomType/Property etc. Simple entity response:
1{2 "entity": {3 "resourceId": 123,4 ...5 }6}
There are two different read operations available against Product API’s resources:
To get a specific resource, the resource ID needs to be specified on the URL. Example: /products/properties/{propertyId}
To get all the active resources in the system, omit the resource ID on the URL. Example: /products/properties/
When requesting a single property, Product API will return the property resource information as part of an Entity object:
1{2 "entity": {3 "resourceId": 1,4 ...5 }6}
When requesting all properties assigned to a user account, an array of properties is returned:
1{2 "entity": [3 {4 "resourceId": 1,5 …6 },7 {8 "resourceId": 2,9 …10 }11 ]12}
Errors attribute
If a response doesn’t contain an Entity, it will contain Errors:
1{2 "errors": [3 {4 "code": 1000,5 "message": "Access denied: your account is not authorized to manage this property."6 }7 ]8}
Property Name | Type | Description |
code | integer | |
message | string |
|
Examples
The rate plan resource defines the configuration of a rate that you want to make available to Expedia Group customers. It contains the more static information about the rate, for example its name, code, cancellation and change policy, base compensation, fees for additional guests, etc. More dynamic information like availability and rate information per stay date is exchanged with the Availability and Rates API.
- All active rate plans read
- Single rate plan read (PerDay pricing, Expedia Collect, Net Rate)
- Single rate plan read (Occupancy-based pricing, Expedia Collect, Sell Rate)
- Single rate plan read (Occupancy-based pricing, Hotel Collect)
- Single rate plan read (Expedia Traveler Preference)
- Single rate plan read (with RatePlanLinkage)
- Single rate plan read (with deposit policy)
- Create rate plan (Per-day pricing, Expedia Collect)
- Create rate plan (Expedia Traveler Preference)
- Modify rate plan (name, additional guest amount, value adds) - full overlay (PUT)
- Rate plan partial update (PATCH)
- Updating only the name
- Updating both the name and the status
- Overriding the current list of value add inclusions to only include "Free Internet"
- Removing all value add inclusions and additional guest amounts
- Updating only the cancel policy
- Updating only the cancel policy (this would remove any exceptions since they are not specified)
- Delete rate plan
All active rate plans read
This example shows how to retrieve all active rate plans under a given room type.
Request:
1GET https://services.expediapartnercentral.com/properties/1780044/roomTypes/200828484/ratePlans4Request-ID : 307af24f-f59a-11e4-822e-005056b1298f
Response:
1{2 "entity": [3 {4 "resourceId": 205020299,5 "name": "RoomOnly22",6 "rateAcquisitionType": "SellLAR",7 "distributionRules": [8 {9 "expediaId": "205020299A",10 "partnerCode": "RoomOnly22",11 "distributionModel": "HotelCollect",12 "manageable": true,13 "compensation": {14 "percent": 0.115 }16 }17 ],18 "status": "Active",19 "type": "Standalone",20 "pricingModel": "PerDayPricing",21 "occupantsForBaseRate": 2,22 "taxInclusive": false,23 "depositRequired": false,24 "creationDateTime": "2016-10-20T21:05:12Z",25 "lastUpdateDateTime": "2016-10-21T18:37:27Z",26 "cancelPolicy": {27 "defaultPenalties": [28 {29 "deadline": 0,30 "perStayFee": "1stNightRoomAndTax",31 "amount": 032 },33 {34 "deadline": 24,35 "perStayFee": "None",36 "amount": 037 },38 {39 "deadline": 72,40 "perStayFee": "20PercentCostOfStay",41 "amount": 042 }43 ]44 },45 "additionalGuestAmounts": [46 {47 "dateStart": "2015-07-10",48 "dateEnd": "2079-06-06",49 "ageCategory": "Adult",50 "amount": 051 }52 ],53 "serviceFeesPerStay": [54 {55 "isTaxable": false,56 "amountPerStay": 1057 },58 {59 "isTaxable": true,60 "amountPerNight": 1261 }62 ],63 "serviceFeesPerPerson": [64 {65 "dateStart": "2018-09-20",66 "dateEnd": "2079-06-06",67 "ageCategory": "Adult",68 "isTaxable": true,69 "amountPerStay": 2070 },71 {72 "dateStart": "2018-07-27",73 "dateEnd": "2018-09-19",74 "ageCategory": "Adult",75 "isTaxable": true,76 "amountPerNight": 1277 }78 ],79 "minLOSDefault": 1,80 "maxLOSDefault": 28,81 "minAdvBookDays": 0,82 "maxAdvBookDays": 500,83 "bookDateStart": "1900-01-01",84 "bookDateEnd": "2079-06-06",85 "travelDateStart": "1901-01-01",86 "travelDateEnd": "2079-06-06",87 "mobileOnly": false,88 "_links": {89 "self": {90 "href": "https://services.expediapartnercentral.com/properties/1780044/roomTypes/200828484/ratePlans/205020299"91 }92 }93 },94 {95 "resourceId": 205020302,96 "name": "RoomOnly11",97 "rateAcquisitionType": "SellLAR",98 "distributionRules": [99 {100 "expediaId": "205020302A",101 "partnerCode": "RoomOnly",102 "distributionModel": "HotelCollect",103 "manageable": true,104 "compensation": {105 "percent": 0.1106 }107 }108 ],109 "status": "Active",110 "type": "Standalone",111 "pricingModel": "PerDayPricing",112 "occupantsForBaseRate": 2,113 "taxInclusive": false,114 "depositRequired": true,115 "creationDateTime": "2015-01-17T09:11:11Z",116 "lastUpdateDateTime": "2016-04-30T20:20:09Z",117 "cancelPolicy": {118 "defaultPenalties": [119 {120 "deadline": 0,121 "perStayFee": "1stNightRoomAndTax",122 "amount": 0123 },124 {125 "deadline": 24,126 "perStayFee": "None",127 "amount": 0128 }129 ]130 },131 "additionalGuestAmounts": [132 {133 "dateStart": "2015-07-10",134 "dateEnd": "2079-06-06",135 "ageCategory": "Adult",136 "amount": 0137 }138 ],139 "serviceFeesPerStay": [140 {141 "isTaxable": false,142 "percent": 0.2143 },144 {145 "isTaxable": true,146 "amountPerNight": 10.0147 }148 ],149 "minLOSDefault": 1,150 "maxLOSDefault": 28,151 "minAdvBookDays": 0,152 "maxAdvBookDays": 500,153 "bookDateStart": "1900-01-01",154 "bookDateEnd": "2079-06-06",155 "travelDateStart": "1901-01-01",156 "travelDateEnd": "2079-06-06",157 "mobileOnly": false,158 "_links": {159 "self": {160 "href": "https://services.expediapartnercentral.com/properties/1780044/roomTypes/200828484/ratePlans/205020302"161 },162 "depositPolicy": {163 "href": "https://services.expediapartnercentral.com/products/properties/1780044/depositPolicy"164 }165 }166 },167 {168 "resourceId": 205833985,169 "name": "BB",170 "rateAcquisitionType": "SellLAR",171 "distributionRules": [172 {173 "expediaId": "205833985",174 "partnerCode": "RoomOnly",175 "distributionModel": "ExpediaCollect",176 "manageable": false,177 "compensation": {178 "percent": 0.23,179 "minAmount": 0180 }181 },182 {183 "expediaId": "205833985A",184 "partnerCode": "RoomOnly",185 "distributionModel": "HotelCollect",186 "manageable": true,187 "compensation": {188 "percent": 0.23189 }190 }191 ],192 "status": "Active",193 "type": "Standalone",194 "pricingModel": "PerDayPricing",195 "occupantsForBaseRate": 2,196 "taxInclusive": false,197 "creationDateTime": "2015-06-20T21:05:12Z",198 "lastUpdateDateTime": "2016-10-21T18:37:27Z",199 "cancelPolicy": {200 "defaultPenalties": [201 {202 "deadline": 0,203 "perStayFee": "1stNightRoomAndTax",204 "amount": 0205 },206 {207 "deadline": 24,208 "perStayFee": "None",209 "amount": 0210 }211 ]212 },213 "additionalGuestAmounts": [214 {215 "dateStart": "2015-04-08",216 "dateEnd": "2079-06-06",217 "ageCategory": "Adult",218 "amount": 0219 }220 ],221 "serviceFeesPerStay": [222 {223 "isTaxable": false,224 "amountPerStay": 10225 },226 {227 "isTaxable": true,228 "amountPerNight": 12229 }230 ],231 "serviceFeesPerPerson": [232 {233 "dateStart": "2018-09-20",234 "dateEnd": "2079-06-06",235 "ageCategory": "Adult",236 "isTaxable": true,237 "amountPerStay": 20238 },239 {240 "dateStart": "2018-07-27",241 "dateEnd": "2018-09-19",242 "ageCategory": "Adult",243 "isTaxable": true,244 "amountPerNight": 12245 }246 ],247 "minLOSDefault": 1,248 "maxLOSDefault": 28,249 "minAdvBookDays": 0,250 "maxAdvBookDays": 500,251 "bookDateStart": "1900-01-01",252 "bookDateEnd": "2079-06-06",253 "travelDateStart": "1901-01-01",254 "travelDateEnd": "2079-06-06",255 "mobileOnly": false,256 "_links": {257 "self": {258 "href": "https://services.expediapartnercentral.com/properties/1780044/roomTypes/200828484/ratePlans/205833985"259 }260 }261 }262 ]263}
Single rate plan read (PerDay pricing, Expedia Collect, Net Rate acquisition type)
This example is for a Expedia Collect rate plan with per-day pricing model and NET rate acquisition type.
Request:
1GET https://services.expediapartnercentral.com/properties/1780044/roomTypes/200828484/ratePlans/2042971884Request-ID : 307af24f-f59a-11e4-822e-005056b1298f
Response:
1{2 "entity": {3 "resourceId": 204309700,4 "name": "Room Only",5 "distributionRules": [6 {7 "expediaId": "204309700",8 "partnerCode": "NK2",9 "distributionModel": "ExpediaCollect",10 "manageable": true,11 "compensation": {12 "percent": 0.26,13 "minAmount": 10.0,14 "exceptions": [15 {16 "dateStart": "2015-11-01",17 "dateEnd": "2015-11-02",18 "minAmount": 0,19 "percent": 0.24,20 "mon": true,21 "tue": true,22 "wed": true,23 "thu": true,24 "fri": true,25 "sat": true,26 "sun": true27 }28 ]29 }30 }31 ],32 "status": "Active",33 "type": "Standalone",34 "rateAcquisitionType": "NetRate",35 "pricingModel": "PerDayPricing",36 "occupantsForBaseRate": 1,37 "taxInclusive": false,38 "creationDateTime": "2016-10-20T21:05:12Z",39 "lastUpdateDateTime": "2016-10-21T18:37:27Z",40 "cancelPolicy": {41 "defaultPenalties": [42 {43 "deadline": 0,44 "perStayFee": "None",45 "amount": 0.046 }47 ]48 },49 "additionalGuestAmounts": [50 {51 "dateStart": "2014-12-04",52 "dateEnd": "2079-06-06",53 "ageCategory": "Adult",54 "amount": 3655 },56 {57 "dateStart": "2014-12-04",58 "dateEnd": "2079-06-06",59 "ageCategory": "ChildAgeA",60 "amount": 29.761 },62 {63 "dateStart": "2014-12-04",64 "dateEnd": "2079-06-06",65 "ageCategory": "ChildAgeB",66 "amount": 29.767 }68 ],69 "serviceFeesPerStay": [70 {71 "isTaxable": false,72 "amountPerStay": 1073 },74 {75 "isTaxable": true,76 "amountPerNight": 1277 }78 ],79 "serviceFeesPerPerson": [80 {81 "dateStart": "2018-09-20",82 "dateEnd": "2079-06-06",83 "ageCategory": "Adult",84 "isTaxable": true,85 "amountPerStay": 2086 },87 {88 "dateStart": "2018-07-27",89 "dateEnd": "2018-09-19",90 "ageCategory": "Adult",91 "isTaxable": true,92 "amountPerNight": 1293 }94 ],95 "valueAddInclusions": [96 "Free Parking",97 "Free Breakfast",98 "Free Internet"99 ],100 "minLOSDefault": 1,101 "maxLOSDefault": 28,102 "minAdvBookDays": 0,103 "maxAdvBookDays": 500,104 "bookDateStart": "1900-01-01",105 "bookDateEnd": "2079-06-06",106 "travelDateStart": "1900-01-30",107 "travelDateEnd": "2079-06-06",108 "mobileOnly": false,109 "_links": {110 "self": {111 "href": "https://services.expediapartnercentral.com/properties/1780044/roomTypes/200828484/ratePlans/204309700"112 }113 }114 }115}
Single rate plan read (Occupancy-based pricing, Expedia Collect, Sell Rate)
Request:
1GET https://services.expediapartnercentral.com/properties/1780044/roomTypes/200828484/ratePlans/2041268554Request-ID : 307af24f-f59a-11e4-822e-005056b1298f
Response:
1{2 "entity": {3 "resourceId": 204126855,4 "name": "Standard",5 "distributionRules": [6 {7 "expediaId": "204126855",8 "partnerCode": "Room Only",9 "distributionModel": "ExpediaCollect",10 "manageable": true,11 "compensation": {12 "percent": 0.25,13 "minAmount": 10.014 }15 }16 ],17 "status": "Active",18 "type": "Standalone",19 "rateAcquisitionType": "SellLAR",20 "pricingModel": "OccupancyBasedPricing",21 "taxInclusive": false,22 "creationDateTime": "2016-10-20T21:05:12Z",23 "lastUpdateDateTime": "2016-10-21T18:37:27Z",24 "cancelPolicy": {25 "defaultPenalties": [26 {27 "deadline": 0,28 "perStayFee": "50PercentCostOfStay",29 "amount": 0.031 },32 {33 "deadline": 72,34 "perStayFee": "None",35 "amount": 0.037 }38 ]39 },40 "additionalGuestAmounts": [41 {42 "dateStart": "2014-10-23",43 "dateEnd": "2079-06-06",44 "ageCategory": "Adult",45 "amount": 3046 },47 {48 "dateStart": "2014-10-23",49 "dateEnd": "2079-06-06",50 "ageCategory": "ChildAgeA",51 "amount": 3052 }53 ],54 "serviceFeesPerStay": [55 {56 "isTaxable": false,57 "amountPerStay": 1058 },59 {60 "isTaxable": true,61 "amountPerNight": 1262 }63 ],64 "serviceFeesPerPerson": [65 {66 "dateStart": "2018-09-20",67 "dateEnd": "2079-06-06",68 "ageCategory": "Adult",69 "isTaxable": true,70 "amountPerStay": 2071 },72 {73 "dateStart": "2018-07-27",74 "dateEnd": "2018-09-19",75 "ageCategory": "Adult",76 "isTaxable": true,77 "amountPerNight": 1278 }79 ],80 "valueAddInclusions": [81 "Free Breakfast"82 ],83 "minLOSDefault": 2,84 "maxLOSDefault": 28,85 "minAdvBookDays": 23,86 "maxAdvBookDays": 290,87 "bookDateStart": "1900-01-01",88 "bookDateEnd": "2079-06-06",89 "travelDateStart": "1900-01-30",90 "travelDateEnd": "2079-06-06",91 "mobileOnly": false,92 "_links": {93 "self": {94 "href": "https://services.expediapartnercentral.com/properties/1780044/roomTypes/200828484/ratePlans/204126855"95 }96 }97 }98}
Single rate plan read (Occupancy-based pricing, Hotel Collect)
Request:
1GET https://services.expediapartnercentral.com/properties/1780044/roomTypes/200828484/ratePlans/2043212484Request-ID : 307af24f-f59a-11e4-822e-005056b1298f
Response:
1{2 "entity": {3 "resourceId": 204321248,4 "name": "Vikings",5 "rateAcquisitionType": "SellLAR",6 "distributionRules": [7 {8 "expediaId": "204321248A",9 "partnerCode": "RoomOnly-1",10 "distributionModel": "HotelCollect",11 "manageable": true,12 "compensation": {13 "percent": 0.20,14 "exceptions": [15 {16 "dateStart": "2015-04-08",17 "dateEnd": "2015-12-31",18 "percent": 0.15,19 "mon": true,20 "tue": true,21 "wed": true,22 "thu": true,23 "fri": false,24 "sat": false,25 "sun": false26 },27 {28 "dateStart": "2015-04-08",29 "dateEnd": "2015-12-31",30 "percent": 0.18,31 "mon": false,32 "tue": false,33 "wed": false,34 "thu": false,35 "fri": true,36 "sat": true,37 "sun": true38 }39 ]40 }41 }42 ],43 "status": "Active",44 "type": "Standalone",45 "pricingModel": "OccupancyBasedPricing",46 "taxInclusive": true,47 "depositRequired": false,48 "creationDateTime": "2016-10-20T21:05:12Z",49 "lastUpdateDateTime": "2016-10-21T18:37:27Z",50 "cancelPolicy": {51 "defaultPenalties": [52 {53 "deadline": 0,54 "perStayFee": "50PercentCostOfStay",55 "amount": 0.057 }58 ]59 },60 "serviceFeesPerStay": [61 {62 "isTaxable": false,63 "amountPerStay": 1064 },65 {66 "isTaxable": true,67 "amountPerNight": 1268 }69 ],70 "serviceFeesPerPerson": [71 {72 "dateStart": "2018-09-20",73 "dateEnd": "2079-06-06",74 "ageCategory": "Adult",75 "isTaxable": true,76 "amountPerStay": 2077 },78 {79 "dateStart": "2018-07-27",80 "dateEnd": "2018-09-19",81 "ageCategory": "Adult",82 "isTaxable": true,83 "amountPerNight": 1284 }85 ],86 "valueAddInclusions": [87 "Free Parking",88 "Free Wireless Internet",89 "Breakfast Buffet"90 ],91 "minLOSDefault": 7,92 "maxLOSDefault": 14,93 "minAdvBookDays": 0,94 "maxAdvBookDays": 30,95 "bookDateStart": "2015-01-01",96 "bookDateEnd": "2016-06-06",97 "travelDateStart": "2015-01-02",98 "travelDateEnd": "2016-12-31",99 "mobileOnly": true,100 "_links": {101 "self": {102 "href": "https://services.expediapartnercentral.com/properties/1780044/roomTypes/200828484/ratePlans/204321248"103 }104 }105 }106}
Single rate plan read (Expedia Traveler Preference)
Request:
1GET https://services.expediapartnercentral.com/properties/1780044/roomTypes/200828484/ratePlans/2043097004Request-ID : 307af24f-f59a-11e4-822e-005056b1298f
Response:
1{2 "entity": {3 "resourceId": 204309700,4 "name": "Room Only",5 "rateAcquisitionType": "NetRate",6 "distributionRules": [7 {8 "expediaId": "204309700",9 "partnerCode": "NK2",10 "distributionModel": "ExpediaCollect",11 "manageable": true,12 "compensation": {13 "percent": 0.26,14 "minAmount": 10.015 }16 },17 {18 "expediaId": "204309700A",19 "partnerCode": "ANK2",20 "distributionModel": "HotelCollect",21 "manageable": false,22 "compensation": {23 "percent": 0.26,24 "minAmount": 10.025 }26 }27 ],28 "status": "Active",29 "type": "Standalone",30 "pricingModel": "PerDayPricing",31 "occupantsForBaseRate": 1,32 "taxInclusive": false,33 "depositRequired": false,34 "creationDateTime": "2016-10-20T21:05:12Z",35 "lastUpdateDateTime": "2016-10-21T18:37:27Z",36 "cancelPolicy": {37 "defaultPenalties": [38 {39 "deadline": 0,40 "perStayFee": "None",41 "amount": 0.043 }44 ]45 },46 "additionalGuestAmounts": [47 {48 "dateStart": "2014-12-04",49 "dateEnd": "2079-06-06",50 "ageCategory": "Adult",51 "amount": 3652 },53 {54 "dateStart": "2014-12-04",55 "dateEnd": "2079-06-06",56 "ageCategory": "ChildAgeA",57 "amount": 29.758 }59 ],60 "serviceFeesPerStay": [61 {62 "isTaxable": false,63 "amountPerStay": 1064 },65 {66 "isTaxable": true,67 "amountPerNight": 1268 }69 ],70 "serviceFeesPerPerson": [71 {72 "dateStart": "2018-09-20",73 "dateEnd": "2079-06-06",74 "ageCategory": "Adult",75 "isTaxable": true,76 "amountPerStay": 2077 },78 {79 "dateStart": "2018-07-27",80 "dateEnd": "2018-09-19",81 "ageCategory": "Adult",82 "isTaxable": true,83 "amountPerNight": 1284 }85 ],86 "valueAddInclusions": [87 "Free Breakfast"88 ],89 "minLOSDefault": 1,90 "maxLOSDefault": 28,91 "minAdvBookDays": 0,92 "maxAdvBookDays": 500,93 "bookDateStart": "1900-01-01",94 "bookDateEnd": "2079-06-06",95 "travelDateStart": "1900-01-30",96 "travelDateEnd": "2079-06-06",97 "mobileOnly": false,98 "_links": {99 "self": {100 "href": "https://services.expediapartnercentral.com/properties/1780044/roomTypes/200828484/ratePlans/204309700"101 }102 }103 }104}
Single rate plan read (with RatePlanLinkage)
The rate plan being requested (resourceId: 208504016) derives its rate and availability from a parent rate plan (resourceId: 208503977). Note that another rate plan (resourceId: 208616685) derives its own rate and availability from this rate plan (resourceId: 208504016).
Request:
1GET https://services.expediapartnercentral.com/properties/12933870/roomTypes/201706782/ratePlans/2085040164Request-ID : 307af24f-f59a-11e4-822e-005056b1298f
Response:
1{2 "entity": {3 "resourceId": 208504016,4 "name": "EQ1",5 "rateAcquisitionType": "SellLAR",6 "distributionRules": [7 {8 "expediaId": "208504016",9 "partnerCode": "EQ1",10 "distributionModel": "ExpediaCollect",11 "manageable": false,12 "compensation": {13 "percent": 0.1,14 "minAmount": 015 }16 },17 {18 "expediaId": "208504016A",19 "partnerCode": "EQ1HC",20 "distributionModel": "HotelCollect",21 "manageable": true,22 "compensation": {23 "percent": 0.124 }25 }26 ],27 "status": "Active",28 "type": "Standalone",29 "pricingModel": "OccupancyBasedPricing",30 "taxInclusive": false,31 "depositRequired": false,32 "creationDateTime": "2016-10-20T21:05:12Z",33 "lastUpdateDateTime": "2016-10-21T18:37:27Z",34 "cancelPolicy": {35 "defaultPenalties": [36 {37 "deadline": 0,38 "perStayFee": "None",39 "amount": 040 }41 ]42 },43 "additionalGuestAmounts": [44 {45 "dateStart": "2016-07-08",46 "dateEnd": "2079-06-06",47 "ageCategory": "Adult",48 "amount": 4049 },50 {51 "dateStart": "2016-07-08",52 "dateEnd": "2079-06-06",53 "ageCategory": "ChildAgeA",54 "amount": 2055 }56 ],57 "serviceFeesPerStay": [58 {59 "isTaxable": false,60 "amountPerStay": 1061 },62 {63 "isTaxable": true,64 "amountPerNight": 1265 }66 ],67 "serviceFeesPerPerson": [68 {69 "dateStart": "2018-09-20",70 "dateEnd": "2079-06-06",71 "ageCategory": "Adult",72 "isTaxable": true,73 "amountPerStay": 2074 },75 {76 "dateStart": "2018-07-27",77 "dateEnd": "2018-09-19",78 "ageCategory": "Adult",79 "isTaxable": true,80 "amountPerNight": 1281 }82 ],83 "minLOSDefault": 1,84 "maxLOSDefault": 28,85 "minAdvBookDays": 0,86 "maxAdvBookDays": 0,87 "bookDateStart": "2000-01-01",88 "bookDateEnd": "2025-05-04",89 "travelDateStart": "2015-05-04",90 "travelDateEnd": "2025-05-04",91 "mobileOnly": false,92 "ratePlanLinkage": {93 "deriveAvailabilityStatus": false,94 "deriveLengthOfStayRestriction": false,95 "deriveClosedToArrival": false,96 "deriveClosedToDeparture": false,97 "rateDerivationRules": [98 {99 "dateStart": "2016-10-11",100 "dateEnd": "2079-06-06",101 "adjustmentType": "Amount",102 "adjustmentValue": 5103 }104 ]105 },106 "_links": {107 "self": {108 "href": "https://services.expediapartnercentral.com/properties/12933870/roomTypes/201706782/ratePlans/208504016"109 },110 "parentRatePlan": {111 "href": "https://services.expediapartnercentral.com/properties/12933870/roomTypes/201706774/ratePlans/208503977"112 },113 "derivedRatePlans": [114 {115 "href": "https://services.expediapartnercentral.com/properties/12933870/roomTypes/201706782/ratePlans/208616685"116 }117 ]118 }119 }120}
Single rate plan read (with deposit policy)
The rate plan being requested (resourceId: 205020302) has a deposit policy (its depositRequired flag is set to true). Therefore, it has a link to its deposit policy in the _links section.
Request:
1GET https://services.expediapartnercentral.com/products/properties/1780044/roomTypes/200828484/ratePlans/2050203024Request-ID : 7804d78d-b8bb-4f9d-b4b9-7d7914cf1e73
Response:
1{2 "entity": {3 "resourceId": 205020302,4 "name": "RoomOnly11",5 "rateAcquisitionType": "SellLAR",6 "distributionRules": [7 {8 "expediaId": "205020302A",9 "partnerCode": "RoomOnly",10 "distributionModel": "HotelCollect",11 "manageable": true,12 "compensation": {13 "percent": 0.114 }15 }16 ],17 "status": "Active",18 "type": "Standalone",19 "pricingModel": "PerDayPricing",20 "occupantsForBaseRate": 2,21 "taxInclusive": false,22 "depositRequired": true,23 "creationDateTime": "2015-01-17T09:11:11Z",24 "lastUpdateDateTime": "2016-04-30T20:20:09Z",25 "cancelPolicy": {26 "defaultPenalties": [27 {28 "deadline": 0,29 "perStayFee": "1stNightRoomAndTax",30 "amount": 031 },32 {33 "deadline": 24,34 "perStayFee": "None",35 "amount": 036 }37 ]38 },39 "additionalGuestAmounts": [40 {41 "dateStart": "2015-07-10",42 "dateEnd": "2079-06-06",43 "ageCategory": "Adult",44 "amount": 045 }46 ],47 "serviceFeesPerStay": [48 {49 "isTaxable": false,50 "amountPerStay": 1051 },52 {53 "isTaxable": true,54 "amountPerNight": 1255 }56 ],57 "serviceFeesPerPerson": [58 {59 "dateStart": "2018-09-20",60 "dateEnd": "2079-06-06",61 "ageCategory": "Adult",62 "isTaxable": true,63 "amountPerStay": 2064 },65 {66 "dateStart": "2018-07-27",67 "dateEnd": "2018-09-19",68 "ageCategory": "Adult",69 "isTaxable": true,70 "amountPerNight": 1271 }72 ],73 "minLOSDefault": 1,74 "maxLOSDefault": 28,75 "minAdvBookDays": 0,76 "maxAdvBookDays": 500,77 "bookDateStart": "1900-01-01",78 "bookDateEnd": "2079-06-06",79 "travelDateStart": "1901-01-01",80 "travelDateEnd": "2079-06-06",81 "mobileOnly": false,82 "_links": {83 "self": {84 "href": "https://services.expediapartnercentral.com/products/properties/1780044/roomTypes/200828484/ratePlans/205020302"85 },86 "depositPolicy": {87 "href": "https://services.expediapartnercentral.com/products/properties/1780044/depositPolicy"88 }89 }90 }91}
Create rate plan (Per-day pricing, Expedia Collect)
Request:
1POST https://services.expediapartnercentral.com/properties/1780044/roomTypes/200835/ratePlans/4Content-Length: 9845Request-ID : 307af24f-f59a-11e4-822e-005056b1298f
1{2 "name": "My first test rate plan",3 "distributionRules": [4 {5 "partnerCode": "TEST1",6 "distributionModel": "ExpediaCollect"7 }8 ],9 "status": "Active",10 "type": "Standalone",11 "occupantsForBaseRate": 2,12 "taxInclusive": false,13 "cancelPolicy": {14 "defaultPenalties": [15 {16 "deadline": 0,17 "perStayFee": "None",18 "amount": 0.020 }21 ]22 },23 "additionalGuestAmounts": [24 {25 "ageCategory": "Adult",26 "amount": 4027 },28 {29 "ageCategory": "ChildAgeA",30 "amount": 2031 },32 {33 "ageCategory": "ChildAgeB",34 "amount": 1035 }36 ],37 "serviceFeesPerStay": [38 {39 "isTaxable": false,40 "amountPerStay": 1041 },42 {43 "isTaxable": true,44 "amountPerNight": 1245 }46 ],47 "serviceFeesPerPerson": [48 {49 "dateStart": "2018-09-20",50 "dateEnd": "2079-06-06",51 "ageCategory": "Adult",52 "isTaxable": true,53 "amountPerStay": 2054 },55 {56 "dateStart": "2018-07-27",57 "dateEnd": "2018-09-19",58 "ageCategory": "Adult",59 "isTaxable": true,60 "amountPerNight": 1261 }62 ],63 "valueAddInclusions": [64 "Free Parking",65 "Free Breakfast",66 "Free Internet"67 ]68}
Response:
1{2 "entity": {3 "resourceId": 204886798,4 "name": "My first test rate plan",5 "distributionRules": [6 {7 "expediaId": "204886798",8 "partnerCode": "TEST1",9 "distributionModel": "ExpediaCollect",10 "manageable": true,11 "compensation": {12 "percent": 0.26,13 "minAmount": 0.26,14 "exceptions": [15 {16 "from": "2015-11-01",17 "to": "2015-11-02",18 "minAmount": 0,19 "percent": 0.24,20 "mon": true,21 "tue": true,22 "wed": true,23 "thu": true,24 "fri": true,25 "sat": true,26 "sun": true27 }28 ]29 }30 }31 ],32 "status": "Active",33 "type": "Standalone",34 "rateAcquisitionType": "NetRate",35 "pricingModel": "PerDayPricing",36 "occupantsForBaseRate": 2,37 "taxInclusive": false,38 "creationDateTime": "2016-11-09T12:00:00Z",39 "lastUpdateDateTime": "2016-11-09T12:00:00Z",40 "cancelPolicy": {41 "defaultPenalties": [42 {43 "deadline": 0,44 "perStayFee": "None",45 "amount": 0.047 }48 ]49 },50 "additionalGuestAmounts": [51 {52 "dateStart": "2015-03-17",53 "dateEnd": "2079-06-06",54 "ageCategory": "ChildAgeB",55 "amount": 1056 },57 {58 "dateStart": "2015-03-17",59 "dateEnd": "2079-06-06",60 "ageCategory": "ChildAgeA",61 "amount": 2062 },63 {64 "dateStart": "2015-03-17",65 "dateEnd": "2079-06-06",66 "ageCategory": "Adult",67 "amount": 4068 }69 ],70 "serviceFeesPerStay": [71 {72 "isTaxable": false,73 "amountPerStay": 1074 },75 {76 "isTaxable": true,77 "amountPerNight": 1278 }79 ],80 "serviceFeesPerPerson": [81 {82 "dateStart": "2018-09-20",83 "dateEnd": "2079-06-06",84 "ageCategory": "Adult",85 "isTaxable": true,86 "amountPerStay": 2087 },88 {89 "dateStart": "2018-07-27",90 "dateEnd": "2018-09-19",91 "ageCategory": "Adult",92 "isTaxable": true,93 "amountPerNight": 1294 }95 ],96 "valueAddInclusions": [97 "Free Parking",98 "Free Breakfast",99 "Free Internet"100 ],101 "minLOSDefault": 1,102 "maxLOSDefault": 28,103 "minAdvBookDays": 0,104 "maxAdvBookDays": 500,105 "bookDateStart": "2015-03-17",106 "bookDateEnd": "2079-06-06",107 "travelDateStart": "2015-03-17",108 "travelDateEnd": "2079-06-06",109 "mobileOnly": false,110 "_links": {111 "self": {112 "href": "https://services.expediapartnercentral.com/properties/1780044/roomTypes/200835/ratePlans/204886798"113 }114 }115 }116}
Create rate plan (Expedia Traveler Preference)
Request:
1POST https://services.expediapartnercentral.com/properties/1780044/roomTypes/200835/ratePlans/ HTTP/1.14Content-Length: 9845Request-ID : 307af24f-f59a-11e4-822e-005056b1298f
1{2 "name": "Room Only",3 "distributionRules": [4 {5 "partnerCode": "NK2",6 "distributionModel": "ExpediaCollect"7 },8 {9 "partnerCode": "ANK2",10 "distributionModel": "HotelCollect"11 }12 ],13 "occupantsForBaseRate": 1,14 "taxInclusive": false,15 "cancelPolicy": {16 "defaultPenalties": [17 {18 "deadline": 0,19 "perStayFee": "None",20 "amount": 0.022 }23 ]24 },25 "additionalGuestAmounts": [26 {27 "dateStart": "2014-12-04",28 "dateEnd": "2079-06-06",29 "ageCategory": "Adult",30 "amount": 3631 },32 {33 "dateStart": "2014-12-04",34 "dateEnd": "2079-06-06",35 "ageCategory": "ChildAgeA",36 "amount": 29.737 }38 ],39 "serviceFeesPerStay": [40 {41 "isTaxable": false,42 "amountPerStay": 1043 },44 {45 "isTaxable": true,46 "amountPerNight": 1247 }48 ],49 "serviceFeesPerPerson": [50 {51 "dateStart": "2018-09-20",52 "dateEnd": "2079-06-06",53 "ageCategory": "Adult",54 "isTaxable": true,55 "amountPerStay": 2056 },57 {58 "dateStart": "2018-07-27",59 "dateEnd": "2018-09-19",60 "ageCategory": "Adult",61 "isTaxable": true,62 "amountPerNight": 1263 }64 ],65 "valueAddInclusions": [66 "Free Breakfast"67 ]68}
Response:
1{2 "entity": {3 "resourceId": 204309700,4 "name": "Room Only",5 "rateAcquisitionType": "NetRate",6 "distributionRules": [7 {8 "expediaId": "204309700",9 "partnerCode": "NK2",10 "distributionModel": "ExpediaCollect",11 "manageable": true,12 "compensation": {13 "percent": 0.26,14 "minAmount": 10.015 }16 },17 {18 "expediaId": "204309700A",19 "partnerCode": "ANK2",20 "distributionModel": "HotelCollect",21 "manageable": false,22 "compensation": {23 "percent": 0.26,24 "minAmount": 10.025 }26 }27 ],28 "status": "Active",29 "type": "Standalone",30 "pricingModel": "PerDayPricing",31 "occupantsForBaseRate": 1,32 "taxInclusive": false,33 "depositRequired": false,34 "creationDateTime": "2016-11-09T21:00:00Z",35 "lastUpdateDateTime": "2016-11-09T21:00:00Z",36 "cancelPolicy": {37 "defaultPenalties": [38 {39 "deadline": 0,40 "perStayFee": "None",41 "amount": 0.043 }44 ]45 },46 "additionalGuestAmounts": [47 {48 "dateStart": "2014-12-04",49 "dateEnd": "2079-06-06",50 "ageCategory": "Adult",51 "amount": 3652 },53 {54 "dateStart": "2014-12-04",55 "dateEnd": "2079-06-06",56 "ageCategory": "ChildAgeA",57 "amount": 29.758 }59 ],60 "serviceFeesPerStay": [61 {62 "isTaxable": false,63 "amountPerStay": 1064 },65 {66 "isTaxable": true,67 "amountPerNight": 1268 }69 ],70 "serviceFeesPerPerson": [71 {72 "dateStart": "2018-09-20",73 "dateEnd": "2079-06-06",74 "ageCategory": "Adult",75 "isTaxable": true,76 "amountPerStay": 2077 },78 {79 "dateStart": "2018-07-27",80 "dateEnd": "2018-09-19",81 "ageCategory": "Adult",82 "isTaxable": true,83 "amountPerNight": 1284 }85 ],86 "valueAddInclusions": [87 "Free Breakfast"88 ],89 "minLOSDefault": 1,90 "maxLOSDefault": 28,91 "minAdvBookDays": 0,92 "maxAdvBookDays": 500,93 "bookDateStart": "1900-01-01",94 "bookDateEnd": "2079-06-06",95 "travelDateStart": "1900-01-30",96 "travelDateEnd": "2079-06-06",97 "mobileOnly": false,98 "_links": {99 "self": {100 "href": "https://services.expediapartnercentral.com/properties/1780044/roomTypes/200835/ratePlans/204309700"101 }102 }103 }104}
Modify rate plan (name, additional guest amount, value adds) - full overlay (PUT)
In this example, the rate plan created in a previous example is modified to have a more meaningful name, lower additional guest amounts and free Internet.
Request:
1PUT https://services.expediapartnercentral.com/properties/1780044/roomTypes/200835/ratePlans/2043097004Request-ID : 307af24f-f59a-11e4-822e-005056b1298f
1{2 "resourceId": 204309700,3 "name": "More Meaningful Name",4 "rateAcquisitionType": "NetRate",5 "distributionRules": [6 {7 "expediaId": "204309700",8 "partnerCode": "NK2",9 "distributionModel": "ExpediaCollect",10 "manageable": true,11 "compensation": {12 "percent": 0.26,13 "minAmount": 10.014 }15 },16 {17 "expediaId": "204309700A",18 "partnerCode": "ANK2",19 "distributionModel": "HotelCollect",20 "manageable": false,21 "compensation": {22 "percent": 0.26,23 "minAmount": 10.024 }25 }26 ],27 "status": "Active",28 "type": "Standalone",29 "pricingModel": "PerDayPricing",30 "occupantsForBaseRate": 2,31 "taxInclusive": false,32 "depositRequired": false,33 "creationDateTime": "2016-10-20T21:05:12Z",34 "lastUpdateDateTime": "2016-10-21T18:37:27Z",35 "cancelPolicy": {36 "defaultPenalties": [37 {38 "deadline": 0,39 "perStayFee": "None",40 "amount": 0.042 }43 ]44 },45 "additionalGuestAmounts": [46 {47 "dateStart": "2014-12-04",48 "dateEnd": "2079-06-06",49 "ageCategory": "Adult",50 "amount": 3051 },52 {53 "dateStart": "2014-12-04",54 "dateEnd": "2079-06-06",55 "ageCategory": "ChildAgeA",56 "amount": 2057 }58 ],59 "serviceFeesPerStay": [60 {61 "isTaxable": false,62 "amountPerStay": 1063 },64 {65 "isTaxable": true,66 "amountPerNight": 1267 }68 ],69 "serviceFeesPerPerson": [70 {71 "dateStart": "2018-09-20",72 "dateEnd": "2079-06-06",73 "ageCategory": "Adult",74 "isTaxable": true,75 "amountPerStay": 2076 },77 {78 "dateStart": "2018-07-27",79 "dateEnd": "2018-09-19",80 "ageCategory": "Adult",81 "isTaxable": true,82 "amountPerNight": 1283 }84 ],85 "valueAddInclusions": [86 "Free Breakfast",87 "Free Internet"88 ],89 "minLOSDefault": 1,90 "maxLOSDefault": 28,91 "minAdvBookDays": 0,92 "maxAdvBookDays": 500,93 "bookDateStart": "1900-01-01",94 "bookDateEnd": "2079-06-06",95 "travelDateStart": "1900-01-30",96 "travelDateEnd": "2079-06-06",97 "mobileOnly": false98}
Response:
1{2 "entity": {3 "resourceId": 204309700,4 "name": "More Meaningful Name",5 "rateAcquisitionType": "NetRate",6 "distributionRules": [7 {8 "expediaId": "204309700",9 "partnerCode": "NK2",10 "distributionModel": "ExpediaCollect",11 "manageable": true,12 "compensation": {13 "percent": 0.26,14 "minAmount": 10.015 }16 },17 {18 "expediaId": "204309700A",19 "partnerCode": "ANK2",20 "distributionModel": "HotelCollect",21 "manageable": false,22 "compensation": {23 "percent": 0.26,24 "minAmount": 10.025 }26 }27 ],28 "status": "Active",29 "type": "Standalone",30 "pricingModel": "PerDayPricing",31 "occupantsForBaseRate": 2,32 "taxInclusive": false,33 "depositRequired": false,34 "creationDateTime": "2016-10-20T21:05:12Z",35 "lastUpdateDateTime": "2016-10-21T18:37:27Z",36 "cancelPolicy": {37 "defaultPenalties": [38 {39 "deadline": 0,40 "perStayFee": "None",41 "amount": 0.043 }44 ]45 },46 "additionalGuestAmounts": [47 {48 "dateStart": "2014-12-04",49 "dateEnd": "2079-06-06",50 "ageCategory": "Adult",51 "amount": 3052 },53 {54 "dateStart": "2014-12-04",55 "dateEnd": "2079-06-06",56 "ageCategory": "ChildAgeA",57 "amount": 2058 }59 ],60 "serviceFeesPerStay": [61 {62 "isTaxable": false,63 "amountPerStay": 1064 },65 {66 "isTaxable": true,67 "amountPerNight": 1268 }69 ],70 "serviceFeesPerPerson": [71 {72 "dateStart": "2018-09-20",73 "dateEnd": "2079-06-06",74 "ageCategory": "Adult",75 "isTaxable": true,76 "amountPerStay": 2077 },78 {79 "dateStart": "2018-07-27",80 "dateEnd": "2018-09-19",81 "ageCategory": "Adult",82 "isTaxable": true,83 "amountPerNight": 1284 }85 ],86 "valueAddInclusions": [87 "Free Breakfast",88 "Free Internet"89 ],90 "minLOSDefault": 1,91 "maxLOSDefault": 28,92 "minAdvBookDays": 0,93 "maxAdvBookDays": 500,94 "bookDateStart": "1900-01-01",95 "bookDateEnd": "2079-06-06",96 "travelDateStart": "1900-01-30",97 "travelDateEnd": "2079-06-06",98 "mobileOnly": false,99 "_links": {100 "self": {101 "href": "https://services.expediapartnercentral.com/properties/1780044/roomTypes/200835/ratePlans/204309700"102 }103 }104 }105}
Rate plan partial update (PATCH)
Here are a few examples of potential PATCH requests. Response examples are not included, but they would be the full rate plan resource definition with all its fields, in its final state after the partial update.
Updating only the name
1{2 "name": "My New Rate Plan Name"3}
Updating both the name and the status
1{2 "name": "My New Rate Plan Name",3 "status": "Inactive"4}
Overriding the current list of value add inclusions to only include "Free Internet"
1{2 "valueAddInclusions": ["Free Internet"]3}
Removing all value add inclusions and additional guest amounts
1{2 "valueAddInclusions": [],3 "additionalGuestAmounts": null4}
Updating only the cancel policy
1{2 "cancelPolicy": {3 "defaultPenalties": [4 {5 "deadline": 0,6 "perStayFee": "1stNightRoomAndTax",7 "amount": 08 },9 {10 "deadline": 24,11 "perStayFee": "None",12 "amount": 013 }14 ],15 "exceptions": [16 {17 "endDate": "2019-04-01",18 "startDate": "2019-03-01",19 "penalties": [20 {21 "amount": 1.0,22 "deadline": 0,23 "perStayFee": "1stNightRoomAndTax"24 },25 {26 "amount": 1.0,27 "deadline": 24,28 "perStayFee": "FullCostOfStay"29 }30 ]31 }32 ]33 }34}
Updating only the cancel policy (this would remove any exceptions since they are not specified)
1{2 "cancelPolicy": {3 "defaultPenalties": [4 {5 "deadline": 0,6 "perStayFee": "1stNightRoomAndTax",7 "amount": 08 },10 {11 "deadline": 24,12 "perStayFee": "None",13 "amount": 014 }15 ]16 }17}
Delete rate plan
In this example, the rate plan created in a previous example is deleted.
Request:
1DELETE https://services.expediapartnercentral.com/properties/1780044/roomTypes/200835/ratePlans/2043097004Request-ID : 307af24f-f59a-11e4-822e-005056b1298f