Product API
ReferenceProduct API

Room type resources

The Product API request enables you to read, create, and edit room types. The Product 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.

Note: This topic provides details about the v3 model, which is the current version. For the older v2 version of the room type resources, refer to Archived.

Obtain a list of room types

  • Method: GET
  • URL: https://services.expediapartnercentral.com/properties/{propertyId}/roomTypes
  • Consumes: HTTP Request (GET)
  • Produces: application/vnd.expedia.eps.product-v3+json

Request parameters

Parameter

Parameter Type

Description

Required

Data Type

Default

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

status

query

Status filter. String. Only supported value is "all".

false

string

If not provided, API will only return active room types (meaning room type with at least one active rate plan, as room type status can't be directly controlled, but is rather inferred from its rate plans statuses).

Success responses

Status Code

Description

Response Model

200

OK

RoomType

Create a room type

  • Method: POST
  • URL: https://services.expediapartnercentral.com/properties/{propertyId}/roomTypes
  • Consumes: application/vnd.expedia.eps.product-v3+json
  • Produces: application/vnd.expedia.eps.product-v3+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

body

body

JSON message describing the new room type

Yes

RoomType

Example syntax

1{
2 "partnerCode": "MyStringCode",
3 "name": {
4 "attributes": {
5 "typeOfRoom": "Penthouse",
6 "roomClass": "Executive",
7 "includeBedType": true,
8 "view": "City View",
9 "featuredAmenity": "Jetted Tub"
10 }
11 },
12 "ageCategories": [
13 {
14 "category": "Adult",
15 "minAge": 18
16 },
17 {
18 "category": "ChildAgeA",
19 "minAge": 6
20 },
21 {
22 "category": "Infant",
23 "minAge": 0
24 }
25 ],
26 "maxOccupancy": {
27 "adults": 2,
28 "children": 1,
29 "total": 3
30 },
31 "bedrooms": [
32 {
33 "count": 1,
34 "bedding": [
35 {
36 "option": [
37 {
38 "quantity": 1,
39 "type": "King Bed",
40 "size": "King"
41 }
42 ]
43 }
44 ]
45 }
46 ],
47 "livingRooms": [
48 {
49 "count": 1,
50 "bedding": [
51 {
52 "option": [
53 {
54 "quantity": 1,
55 "type": "Murphy Bed",
56 "size": "Full"
57 }
58 ]
59 }
60 ]
61 }
62 ],
63 "extraBedding": [
64 {
65 "quantity": 1,
66 "type": "Rollaway Bed",
67 "size": "Full",
68 "surcharge": {
69 "type": "Per Day",
70 "amount": 20
71 }
72 }
73 ],
74 "regulatoryRecords": {
75 "category": "HOTEL",
76 "records": [
77 {
78 "registrationNumber": "STR321321321",
79 "registrationNumberType": "LICENSE_ID",
80 "expiry": "2022-12-12"
81 }
82 ],
83 "exemptionCategories": ["MAX_NIGHT_CAP"]
84 },
85 "smokingPreferences": ["Non-Smoking"],
86 "floorSize": {
87 "squareFeet": 300,
88 "squareMeters": 14
89 },
90 "views": ["Ocean View", "Beach View"]
91}

Success responses

Status Code

Description

Response Model

201

Created

RoomType

Read a single room type

  • Method: GET
  • URL: https://services.expediapartnercentral.com/properties/{propertyId}/roomTypes/{roomTypeId}
  • Consumes: HTTP Request (GET)
  • Produces: application/vnd.expedia.eps.product-v3+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. Integer

Yes

string

Success responses

Status Code

Description

Response Model

200

OK

RoomType

Modify a room type

Expedia Group offers two ways to modify a room type.

  • Using the PUT verb, you can perform a full overlay change of the room type resource. It means that all elements of a room type 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 room type. Expedia Group implemented the Merge-Patch RFC.

Full overlay (PUT)

  • Method: PUT
  • URL: https://services.expediapartnercentral.com/properties/{propertyId}/roomTypes/{roomTypeId}
  • Consumes: application/vnd.expedia.eps.product-v3+json
  • Produces: application/vnd.expedia.eps.product-v3+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

body

body

JSON message with modified room type

Yes

RoomType

Example syntax
1{
2 "resourceId": 201171339,
3 "partnerCode": "JS002",
4 "name": {
5 "attributes": {
6 "typeOfRoom": "Suite",
7 "roomClass": "Executive",
8 "bedroomDetails": "1 Bedroom",
9 "featuredAmenity": "Jetted Tub",
10 "view": "City View"
11 },
12 "value": "Executive Suite"
13 },
14 "status": "Active",
15 "ageCategories": [
16 {
17 "category": "Adult",
18 "minAge": 13
19 },
20 {
21 "category": "Infant",
22 "minAge": 0
23 }
24 ],
25 "maxOccupancy": {
26 "total": 4,
27 "adults": 3,
28 "children": 2
29 },
30 "bedrooms": [
31 {
32 "count": 1,
33 "bedding": [
34 {
35 "option": [
36 {
37 "quantity": 1,
38 "type": "King Bed",
39 "size": "King"
40 }
41 ]
42 }
43 ]
44 }
45 ],
46 "extraBedding": [
47 {
48 "quantity": 1,
49 "type": "Rollaway Bed",
50 "size": "Full",
51 "surcharge": {
52 "type": "Per Day",
53 "amount": 20
54 }
55 },
56 {
57 "quantity": 1,
58 "type": "Crib",
59 "size": "Crib",
60 "surcharge": {
61 "type": "Free"
62 }
63 }
64 ],
65 "smokingPreferences": [
66 "Non-Smoking"
67 ]
68}
Success responses

Status Code

Description

Response Model

200

OK

RoomType

Partial update (PATCH)

Expedia chose the merge-patch method for partial update, as described in the IETF RFC. This method allows you to update a room type by providing only the fields/values you need to change. This saves you from having to first read the room type before updating it. If you provide the complete room type data, this method essentially behaves just like the PUT method.

The response will always be the complete image of the room type after changes have been applied.

Important: The PATCH logic only applies to first (top) level elements/objects of the room type. You can 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 name, age categories or maximum occupancy), 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 room type data. For instance, only providing an ageCategories that has no "Adult" category will yield the appropriate error response.
  • Method: PATCH
  • URL: https://services.expediapartnercentral.com/properties/{propertyId}/roomTypes/{roomTypeId}
  • Consumes: application/vnd.expedia.eps.product-v3+json
  • Produces: application/vnd.expedia.eps.product-v3+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

body

body

JSON message of partially updated room type

Yes

RoomType

Example syntax

This example updates the partner code and the name attributes:

1{
2 "partnerCode": "PatchedPartnerCode",
3 "name": {
4 "attributes": {
5 "typeOfRoom": "Loft",
6 "roomClass": "Deluxe",
7 "area": "Poolside"
8 }
9 }
10}

This updates only the maximum occupancy:

1{
2 "maxOccupancy": {
3 "total": 3,
4 "adults": 2
5 }
6}
Success responses

Status Code

Description

Response Model

200

OK

RoomType

Definitions

Room type resource definition

Property Name

Type

Required for POST

Description

resourceId

integer

No

Integer. Required for modify, and cannot be changed. This resource ID is what will be used to manage availability and rates, and also what Expedia Group specifies in booking messages to identify the room booked.

partnerCode

string

Yes

Partner room type code/identifier. Maximum of 40 characters. Has to be unique across all room types for this hotel. This is used as a unique key to ensure you do not duplicate room types in Expedia Group's system.

name

RoomTypeName

Yes

Name object. Collection of elements/attributes related to the name of a room.

status

enum

No

Possible values are (Active, Inactive). Room type status is derived from the rate plans associated with the room type: if at least one rate plan is active, the room type status will be active.

If all rate plans are inactive, then the room type becomes inactive as well. This value can be omitted in a create request. If provided during create, it will be ignored. This value cannot be edited in an update message. If modified, an error will be returned.

ageCategories

Array[RoomTypeAgeCategory ]

Yes

Array of age categories. Defines the different age categories supported by the room type. At the very least, the 'Adult' category must be defined.

maxOccupancy

Occupancy

No

Defines the maximum occupancy of the room in total and by age category. Always returned by room type GET. Optional for room type create and update. When not provided the Product API will calculate the occupancy based on bedding options.

bedRooms

bedRoomOption

Yes

A count of Bedrooms can be specified. Minimum 1, maximum 2 bedding options a bedroom may have. Each bedding option can be with a combination of beds (type, size and quantity).

livingRooms

livingRoomOption

No

A count of living rooms can be specified. A bedding option can be with a combination of beds (type, size and quantity).

extraBedding

Array[ExtraBed ]

No

Defines the extra bed combination (type, size and quality) the room type may have.

regulatoryRecords

regulatoryRecords

No

Regulatory and license details required to sell the room. Depending on the location of the property and the property type, this attribute may or may not be mandatory. Predominantly used for vacation rental listings.

For more details on government regulations that may potentially affect your short term rental, please refer to the page here.

smokingPreferences

Array[smokingPreferenceEnum ]

Yes

Used to define whether the room type is smoking, nonsmoking, or if both options are available on request.

If a single smoking option is provided, then the room is, by default, only available in this configuration.

If both options are provided, then a choice will be offered to the customer at the time he makes a reservation, and the customer preference will be sent in electronic booking messages to you.

floorSize

floorSize

No

Used to define room size. When used, both size in square feet and in square meters must be specified.

views

Array[viewEnum ]

No

Used to define view(s) from the room. There can be up to 2 different views defined per room type.

wheelchairAccessibility

Boolean

No

Used to indicate whether the room is configured to be wheelchair accessible or not.

_links

RoomTypeLinks

No

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.

roomTypeName resource definition

For more information about room type names, see Room name logic section.

Property Name

Type

Description

attributes

RoomNameAttributes

Collection of attributes that can be used to build a room type name. Should only be provided if you don't want to use one of the predefined names Expedia Group supports.

value

string

For create and modify requests, optional and ignored if name attributes are used. Required if name attributes are not provided.

When provided in create or update requests, without any name attributes, value provided needs to be one of the predefined room names found in PredefinedRoomNamesEnum section.

For read, create and modify responses, if you are making use of room name attributes, this field will contain the auto-generated name based off of the attributes that were provided, in English-US language.

If you are using a predefined name, this field will contain the predefined name value, as provided in the create or update request.

roomNameAttributes resource definition

For more information about room type names, see the Room name logic section.

Property Name

Type

Required

Description

typeOfRoom

typeOfRoomEnum

Yes

Attribute that determines the type of room, which is used to compose the name

roomClass

roomClassEnum

No

Attribute that described the class of room, which is used to compose the name

includeBedType

Boolean

No

Attribute that determines whether or not to include bed type on the room name

bedroomDetails

bedroomDetailsEnum

No

Attribute that describes the details of the bedroom used to compose the name of the room

includeSmokingPref

Boolean

No

Attribute that determines if room has smoking preference

accessibility

Boolean

No

Attribute that determines if room is considered wheelchair accessible

view

viewEnum

No

Attribute that gives additional information about the view of the room

featuredAmenity

featuredAmenityEnum

No

Attribute used to highlight a feature of the room on its name

area

areaEnum

No

Attributed used to highlight the location of the room

roomTypeAgeCategory resource definition

Property Name

Type

Required

Description

category

categoryEnum

Yes

Defines which category of age is being defined.

minAge

integer

Yes

Defines what is the minimum age for a person to belong in the given age category.

Occupancy resource definition

Property Name

Type

Required

Description

total

integer

Yes

Total count of people that can reside in the room.

adults

integer

Yes

Maximum number of adults that can reside in the room.

children

integer

Yes

Maximum number of children that can reside in the room.

bedroomOption resource definition

Property Name

Type

Required

Description

count

integer

Yes

Total count of bedrooms in the room.

bedding

BeddingOption

Yes

Provides details on each bedding option within a bedroom.

beddingOption resource definition

Property Name

Type

Required

Description

option

Array[ Bed ]

Yes

Each bedding option can be with a combination of beds (type, size and quality).

Expedia Group only supports two bedding options. When both options are included in the call, i.e. "option" node is listed twice with different bed types, this bedding configuration will be presented to the customer as "OR". For instance, the following JSON configuration is displayed as "1 Queen Bed OR 1 King Bed":

1"bedding": [
2 {
3 "option": [
4 {
5 "quantity": 1,
6 "type": "Queen Bed",
7 "size": "Queen"
8 }
9 ]
10 },
11 {
12 "option": [
13 {
14 "quantity": 1,
15 "type": "King Bed",
16 "size": "King"
17 }
18 ]
19 }
20]

When the "options" node is listed only once with multiple bed types, these bed types will be displayed to the customer as "AND". For instance, the following JSON configuration is displayed as "1 Queen Bed AND 1 King Bed":

1"bedding": [
2 {
3 "option": [
4 {
5 "quantity": 1,
6 "type": "Queen Bed",
7 "size": "Queen"
8 },
9 {
10 "quantity": 1,
11 "type": "King Bed",
12 "size": "King"
13 }
14 ]
15 }
16]

Please note that the screenshot below illustrates two bedrooms, therefore, the count of each bedding type is multiplied by 2.

product api updated eg documentation image6

Bed resource definition

Property Name

Type

Required

Description

quantity

integer

Yes

Number of beds.

type

bedTypeEnum

Yes

Defines the bed type. Example: "King Bed", "Sofa Bed".

size

bedSizeEnum

No

Defines the size of the bed. Example: "King", "Queen". When specified, only certain sizes can be used for each type. For bed types where Expedia Group accepts different sizes, when the size is not specific, Expedia Group will default to the smallest size possible for the bed type.

livingRoomOption resource definition

Property Name

Type

Required

Description

count

integer

Yes

Total count of living rooms in the RoomType.

bedding

[livingRoomBeddingOption ]

Yes

Provides details on each bedding option within a livingRoom.

livingRoomBeddingOption resource definition

Property Name

Type

Required

Description

option

Array[livingRoomBed ]

Yes

Each bedding option can be with a combination of beds (type, size and quality).

livingRoomBed resource definition

Property Name

Type

Required

Description

quantity

integer

Yes

Number of beds.

type

bedTypeEnum

Yes

Defines the bed type. Example: "King Bed", "Sofa Bed".

size

bedSizeEnum

No

Defines the size of the bed. Example: "King", "Queen". When specified, only certain sizes can be used for each type . For bed types where Expedia Group accepts different sizes, when the size is not specific, Expedia Group will default to the smallest size possible for the bed type.

extraBed resource definition

Property Name

Type

Required

Description

quantity

integer

Yes

Number of beds.

type

bedTypeEnum

Yes

Defines the bed type. Example: "King Bed", "Sofa Bed".

size

bedSizeEnum

No

Defines the size of the bed. Example: "King", "Queen". When specified, only certain sizes can be used for each type . For bed types where Expedia Group accepts different sizes, when the size is not specific, Expedia Group will default to the smallest size possible for the bed type.

surcharge

surcharge

No

Defines the surcharge of the bed. Only extra beds of type "Crib" and "Rollaway Bed" can have a surcharge defined.

Surcharge resource definition

Property Name

Type

Required

Description

type

surchargeTypeEnum

Yes

Defines the surcharge type. Example: "Free", "Per Day".

amount

number

No

Defines the amount of the surcharge. Must be defined if type is not "Free".

regulatoryRecords resource definition

Property Name

Type

Required

Description

category

categoryEnum

Yes

Used to specify the category of property as per jurisdiction requirements. Utilized for regulatory validation purposes.

records

records

Yes

Lists the regulatory data attributes Expedia is collecting. This page has more details on the regulatory data required for short-term rentals.

records resource definition

Property Name

Type

Required

Description

registrationNumber

string

Yes

Used to specify the license/registration number of the property/room type that is registered with the city's regulators. Could be required for certain jurisdictions depending on property type.

registrationNumberType

registrationNumberTypeEnum

Yes

Type of license/registration number that is registered with the city's regulator. Could be required for certain jurisdictions depending on property type.

expiry

date

No

Date of expiration of the license/registration number in YYYY-MM-DD format

floorSize resource definition

Property Name

Type

Required

Description

squareFeet

integer

Yes

Room size in square feet.

squareMeters

integer

Yes

Room size in square meters.

Property Name

Type

Description

self

Link

URL of the current resource. Cannot be provided in create requests. Cannot be changed via partial (PATCH) or full overlay (PUT) updates.

Examples

The room type resource describes the configuration of a specific room type/category/class in the Expedia Group system. Room types belong to properties, and each room type contains one or more rate plans. A room type resource contains information such as bed types, smoking preferences, occupancy settings by age categories, etc.

Against the room type resource, you can retrieve a list of room types or a specific room type. You can also create new room types (one at a time), and edit an existing room type (one at a time, full overlay operation).

All room types read

This example shows how to perform a read request to retrieve all room types under a given property. The example below illustrates how to add the status param on the request to get all active and inactive room types. In this example, the property has active and inactive room types, sorted by resourceId.

Request:

1GET https://services.expediapartnercentral.com/properties/1780041/roomTypes?status=all

Response:

1{
2 "entity": [
3 {
4 "resourceId": 209857,
5 "partnerCode": "Deluxe Suite",
6 "name": {
7 "attributes": {
8 "typeOfRoom": "Suite",
9 "roomClass": "Executive",
10 "area": "Ground Floor"
11 },
12 "value": "Executive Suite, Ground Floor"
13 },
14 "status": "Active",
15 "ageCategories": [
16 {
17 "category": "Adult",
18 "minAge": 17
19 },
20 {
21 "category": "ChildAgeA",
22 "minAge": 0
23 }
24 ],
25 "maxOccupancy": {
26 "total": 3,
27 "adults": 3,
28 "children": 2
29 },
30 "bedrooms": [
31 {
32 "count": 1,
33 "bedding": [
34 {
35 "option": [
36 {
37 "quantity": 1,
38 "type": "King Bed",
39 "size": "King"
40 }
41 ]
42 }
43 ]
44 }
45 ],
46 "livingRooms": [
47 {
48 "count": 1,
49 "bedding": [
50 {
51 "option": [
52 {
53 "quantity": 1,
54 "type": "Murphy Bed",
55 "size": "Full"
56 }
57 ]
58 }
59 ]
60 }
61 ],
62 "extraBedding": [
63 {
64 "quantity": 1,
65 "type": "Rollaway Bed",
66 "size": "Full",
67 "surcharge": {
68 "type": "Per Day",
69 "amount": 20
70 }
71 },
72 {
73 "quantity": 1,
74 "type": "Crib",
75 "size": "Crib",
76 "surcharge": {
77 "type": "Free"
78 }
79 }
80 ],
81 "regulatoryRecords": {
82 "category": "HOTEL",
83 "records": [
84 {
85 "registrationNumber": "STR321321321",
86 "registrationNumberType": "LICENSE_ID",
87 "expiry": "2022-12-12"
88 }
89 ],
90 "exemptionCategories": [
91 "MAX_NIGHT_CAP"
92 ]
93 },
94 "smokingPreferences": [
95 "Smoking",
96 "Non-Smoking"
97 ],
98 "_links": {
99 "self": {
100 "href": "https://services.expediapartnercentral.com/properties/1780041/roomTypes/209857"
101 }
102 }
103 },
104 {
105 "resourceId": 200108425,
106 "partnerCode": "Caribbean Test",
107 "name": {
108 "attributes": {
109 "typeOfRoom": "Room",
110 "roomClass": "Standard",
111 "includeBedType": true
112 },
113 "value": "Standard Room, 2 Double Beds"
114 },
115 "status": "Inactive",
116 "ageCategories": [
117 {
118 "category": "Adult",
119 "minAge": 13
120 },
121 {
122 "category": "ChildAgeA",
123 "minAge": 0
124 }
125 ],
126 "maxOccupancy": {
127 "total": 4,
128 "adults": 4,
129 "children": 3
130 },
131 "bedrooms": [
132 {
133 "count": 1,
134 "bedding": [
135 {
136 "option": [
137 {
138 "quantity": 1,
139 "type": "King Bed",
140 "size": "King"
141 }
142 ]
143 }
144 ]
145 }
146 ],
147 "livingRooms": [
148 {
149 "count": 1,
150 "bedding": [
151 {
152 "option": [
153 {
154 "quantity": 1,
155 "type": "Murphy Bed",
156 "size": "Full"
157 }
158 ]
159 }
160 ]
161 }
162 ],
163 "smokingPreferences": [
164 "Smoking",
165 "Non-Smoking"
166 ],
167 "floorSize": {
168 "squareFeet": 150,
169 "squareMeters": 14
170 },
171 "views": [
172 "Beach View",
173 "Bay View"
174 ],
175 "_links": {
176 "self": {
177 "href": "https://services.expediapartnercentral.com/properties/1780041/roomTypes/200108425"
178 }
179 }
180 }
181 ]
182}

Single room type read

This example shows how to do a read request for a single room type with 2 age categories, a choice of 2 bedding options, and supporting both smoking and non-smoking preferences.

Request:

1GET https://services.expediapartnercentral.com/properties/1780044/roomTypes/200192910

Response:

1{
2 "entity": {
3 "resourceId": 200192910,
4 "partnerCode": "Deluxe",
5 "name": {
6 "attributes": {
7 "typeOfRoom": "Apartment "
8 },
9 "value": "Apartment"
10 },
11 "status": "Active",
12 "ageCategories": [
13 {
14 "category": "Adult",
15 "minAge": 18
16 },
17 {
18 "category": "ChildAgeA",
19 "minAge": 0
20 }
21 ],
22 "maxOccupancy": {
23 "total": 4,
24 "adults": 4,
25 "children": 3
26 },
27 "bedrooms": [
28 {
29 "count": 1,
30 "bedding": [
31 {
32 "option": [
33 {
34 "quantity": 1,
35 "type": "King Bed",
36 "size": "King"
37 }
38 ]
39 }
40 ]
41 }
42 ],
43 "livingRooms": [
44 {
45 "count": 1,
46 "bedding": [
47 {
48 "option": [
49 {
50 "quantity": 1,
51 "type": "Murphy Bed",
52 "size": "Full"
53 }
54 ]
55 }
56 ]
57 }
58 ],
59 "extraBedding": [
60 {
61 "quantity": 1,
62 "type": "Rollaway Bed",
63 "size": "Full",
64 "surcharge": {
65 "type": "Per Day",
66 "amount": 20
67 }
68 },
69 {
70 "quantity": 1,
71 "type": "Crib",
72 "size": "Crib",
73 "surcharge": {
74 "type": "Free"
75 }
76 }
77 ],
78 "regulatoryRecords": {
79 "category": "HOTEL",
80 "records": [
81 {
82 "registrationNumber": "STR321321321",
83 "registrationNumberType": "LICENSE_ID",
84 "expiry": "2022-12-12"
85 }
86 ],
87 "exemptionCategories": [
88 "MAX_NIGHT_CAP"
89 ]
90 },
91 "smokingPreferences": [
92 "Smoking",
93 "Non-Smoking"
94 ],
95 "floorSize": {
96 "squareFeet": 500,
97 "squareMeters": 46
98 },
99 "views": [
100 "Partial Sea View"
101 ],
102 "wheelchairAccessibility": false,
103 "_links": {
104 "self": {
105 "href": "https://services.expediapartnercentral.com/properties/1780044/roomTypes/200192910"
106 }
107 }
108 }
109}

Create room type (predefined room name)

When creating a new room type, you have the choice to pick a predefined name, or provide a set of attributes that can be included in the room name.

This example creates a room type with a predefined name, 3 age categories, a single bedding configuration and "non-smoking" for smoking policy.

Request:

1POST https://services.expediapartnercentral.com/properties/1780041/roomTypes
1{
2 "partnerCode": "JS001",
3 "name": {
4 "value": "Junior Suite"
5 },
6 "ageCategories": [
7 {
8 "category": "Adult",
9 "minAge": 13
10 },
11 {
12 "category": "ChildAgeA",
13 "minAge": 5
14 },
15 {
16 "category": "Infant",
17 "minAge": 0
18 }
19 ],
20 "maxOccupancy": {
21 "total": 4,
22 "adults": 3,
23 "children": 2
24 },
25 "bedrooms": [
26 {
27 "count": 1,
28 "bedding": [
29 {
30 "option": [
31 {
32 "quantity": 1,
33 "type": "King Bed",
34 "size": "King"
35 }
36 ]
37 }
38 ]
39 }
40 ],
41 "livingRooms": [
42 {
43 "count": 1,
44 "bedding": [
45 {
46 "option": [
47 {
48 "quantity": 1,
49 "type": "Murphy Bed",
50 "size": "Full"
51 }
52 ]
53 }
54 ]
55 }
56 ],
57 "extraBedding": [
58 {
59 "quantity": 1,
60 "type": "Rollaway Bed",
61 "size": "Full",
62 "surcharge": {
63 "type": "Per Day",
64 "amount": 20
65 }
66 },
67 {
68 "quantity": 1,
69 "type": "Crib",
70 "size": "Crib",
71 "surcharge": {
72 "type": "Free"
73 }
74 }
75 ],
76 "regulatoryRecords": {
77 "category": "HOTEL",
78 "records": [
79 {
80 "registrationNumber": "STR321321321",
81 "registrationNumberType": "LICENSE_ID",
82 "expiry": "2022-12-12"
83 }
84 ]
85 },
86 "smokingPreferences": [
87 "Non-Smoking"
88 ],
89 "floorSize": {
90 "squareFeet": 1023,
91 "squareMeters": 95
92 },
93 "views": [
94 "Ocean View",
95 "Beach View"
96 ],
97 "wheelchairAccessibility": false
98}

When successful, the API will respond with the room that Expedia Group created.

Note: Room types are always created as inactive, and will become active automatically when the first active rate plan is created.

Response:

1{
2 "entity": {
3 "resourceId": 201171339,
4 "partnerCode": "JS001",
5 "name": {
6 "value": "Junior Suite"
7 },
8 "status": "Inactive",
9 "ageCategories": [
10 {
11 "category": "Adult",
12 "minAge": 13
13 },
14 {
15 "category": "ChildAgeA",
16 "minAge": 5
17 },
18 {
19 "category": "Infant",
20 "minAge": 0
21 }
22 ],
23 "maxOccupancy": {
24 "total": 4,
25 "adults": 3,
26 "children": 2
27 },
28 "bedrooms": [
29 {
30 "count": 1,
31 "bedding": [
32 {
33 "option": [
34 {
35 "quantity": 1,
36 "type": "King Bed",
37 "size": "King"
38 }
39 ]
40 }
41 ]
42 }
43 ],
44 "livingRooms": [
45 {
46 "count": 1,
47 "bedding": [
48 {
49 "option": [
50 {
51 "quantity": 1,
52 "type": "Murphy Bed",
53 "size": "Full"
54 }
55 ]
56 }
57 ]
58 }
59 ],
60 "extraBedding": [
61 {
62 "quantity": 1,
63 "type": "Rollaway Bed",
64 "size": "Full",
65 "surcharge": {
66 "type": "Per Day",
67 "amount": 20
68 }
69 },
70 {
71 "quantity": 1,
72 "type": "Crib",
73 "size": "Crib",
74 "surcharge": {
75 "type": "Free"
76 }
77 }
78 ],
79 "regulatoryRecords": {
80 "category": "HOTEL",
81 "records": [
82 {
83 "registrationNumber": "STR321321321",
84 "registrationNumberType": "LICENSE_ID",
85 "expiry": "2022-12-12"
86 }
87 ]
88 },
89 "smokingPreferences": [
90 "Non-Smoking"
91 ],
92 "floorSize": {
93 "squareFeet": 1023,
94 "squareMeters": 95
95 },
96 "views": [
97 "Ocean View",
98 "Beach View"
99 ],
100 "wheelchairAccessibility": false,
101 "_links": {
102 "self": {
103 "href": "https://services.expediapartnercentral.com/properties/1780041/roomTypes/201171339"
104 }
105 }
106 }
107}

Create room type (room name attributes)

When creating a new room type, you have the choice to pick a predefined name, or provide a set of attributes that can be included in the room name.

This example creates a room type with a set of name attributes, 3 age categories, a single bedding configuration and "non-smoking" for smoking policy.

Request:

1POST https://services.expediapartnercentral.com/properties/1780041/roomTypes
1{
2 "partnerCode": "JS001",
3 "name": {
4 "attributes": {
5 "typeOfRoom": "Condo",
6 "bedroomDetails": "3 Bedrooms",
7 "featuredAmenity": "2 Bathrooms",
8 "view": "Partial Ocean View"
9 }
10 },
11 "ageCategories": [
12 {
13 "category": "Adult",
14 "minAge": 13
15 },
16 {
17 "category": "ChildAgeA",
18 "minAge": 5
19 },
20 {
21 "category": "Infant",
22 "minAge": 0
23 }
24 ],
25 "maxOccupancy": {
26 "total": 4,
27 "adults": 3,
28 "children": 2
29 },
30 "bedrooms": [
31 {
32 "count": 1,
33 "bedding": [
34 {
35 "option": [
36 {
37 "quantity": 1,
38 "type": "King Bed",
39 "size": "King"
40 }
41 ]
42 }
43 ]
44 }
45 ],
46 "extraBedding": [
47 {
48 "quantity": 1,
49 "type": "Rollaway Bed",
50 "size": "Full",
51 "surcharge": {
52 "type": "Per Day",
53 "amount": 20
54 }
55 },
56 {
57 "quantity": 1,
58 "type": "Crib",
59 "size": "Crib",
60 "surcharge": {
61 "type": "Free"
62 }
63 }
64 ],
65 "smokingPreferences": [
66 "Non-Smoking"
67 ],
68 "floorSize": {
69 "squareFeet": 1023,
70 "squareMeters": 95
71 },
72 "views": [
73 "Ocean View",
74 "Beach View"
75 ],
76 "wheelchairAccessibility": false
77}

When successful, the API will respond with what Expedia Group created.

Note: Room types are always created as inactive, and will become active automatically when the first active rate plan is created.

Response:

1{
2 "entity": {
3 "resourceId": 201171339,
4 "partnerCode": "JS001",
5 "name": {
6 "attributes": {
7 "typeOfRoom": "Condo",
8 "bedroomDetails": "3 Bedrooms",
9 "featuredAmenity": "2 Bathrooms",
10 "view": "Partial Ocean View"
11 },
12 "value": "Condo, 3 Bedrooms, 2 Bathrooms, Partial Ocean View"
13 },
14 "status": "Inactive",
15 "ageCategories": [
16 {
17 "category": "Adult",
18 "minAge": 13
19 },
20 {
21 "category": "ChildAgeA",
22 "minAge": 5
23 },
24 {
25 "category": "Infant",
26 "minAge": 0
27 }
28 ],
29 "maxOccupancy": {
30 "total": 4,
31 "adults": 3,
32 "children": 2
33 },
34 "bedrooms": [
35 {
36 "count": 1,
37 "bedding": [
38 {
39 "option": [
40 {
41 "quantity": 1,
42 "type": "King Bed",
43 "size": "King"
44 }
45 ]
46 }
47 ]
48 }
49 ],
50 "extraBedding": [
51 {
52 "quantity": 1,
53 "type": "Rollaway Bed",
54 "size": "Full",
55 "surcharge": {
56 "type": "Per Day",
57 "amount": 20
58 }
59 },
60 {
61 "quantity": 1,
62 "type": "Crib",
63 "size": "Crib",
64 "surcharge": {
65 "type": "Free"
66 }
67 }
68 ],
69 "smokingPreferences": [
70 "Non-Smoking"
71 ],
72 "floorSize": {
73 "squareFeet": 1023,
74 "squareMeters": 95
75 },
76 "views": [
77 "Ocean View",
78 "Beach View"
79 ],
80 "wheelchairAccessibility": false,
81 "_links": {
82 "self": {
83 "href": "https://services.expediapartnercentral.com/properties/1780041/roomTypes/201171339"
84 }
85 }
86 }
87}

Create room type (ignored room name attributes)

When using room name attributes to generate a name, Expedia Group has specific rules around how many attributes can be used. To reserve the logic complexity behind these rules, Product API allows you to specify more attributes than Expedia Group will actually use to generate the name. The selection logic and ranking of attributes are described in detail in the Room name logic section.

The example below shows what would happen if you sent all possible room name attributes in a create request. Product API responds with the attributes it used, and the name that was generated.

Request:

1POST https://services.expediapartnercentral.com/properties/1780041/roomTypes
1{
2 "partnerCode": "JS001",
3 "name": {
4 "attributes": {
5 "typeOfRoom": "Studio",
6 "roomClass": "Basic",
7 "includeBedType": true,
8 "bedroomDetails": "1 Bedroom",
9 "includeSmokingPref": true,
10 "accessibility": true,
11 "view": "Beach View",
12 "featuredAmenity": "Hot Tub",
13 "area": "Corner",
14 "customLabel": "Blue Room"
15 }
16 },
17 "ageCategories": [
18 {
19 "category": "Adult",
20 "minAge": 13
21 },
22 {
23 "category": "Infant",
24 "minAge": 0
25 }
26 ],
27 "maxOccupancy": {
28 "total": 4,
29 "adults": 3,
30 "children": 2
31 },
32 "bedrooms": [
33 {
34 "count": 1,
35 "bedding": [
36 {
37 "option": [
38 {
39 "quantity": 1,
40 "type": "King Bed",
41 "size": "King"
42 }
43 ]
44 }
45 ]
46 }
47 ],
48 "extraBedding": [
49 {
50 "quantity": 1,
51 "type": "Rollaway Bed",
52 "size": "Full",
53 "surcharge": {
54 "type": "Per Day",
55 "amount": 20
56 }
57 },
58 {
59 "quantity": 1,
60 "type": "Crib",
61 "size": "Crib",
62 "surcharge": {
63 "type": "Free"
64 }
65 }
66 ],
67 "smokingPreferences": [
68 "Non-Smoking"
69 ]
70}

The response will not include bedroom details, view, featured amenity and area as we cannot use all attributes to build a name.

Response:

1{
2 "entity": {
3 "resourceId": 201171339,
4 "partnerCode": "JS001",
5 "name": {
6 "attributes": {
7 "typeOfRoom": "Studio",
8 "roomClass": "Basic",
9 "includeBedType": true,
10 "includeSmokingPref": true,
11 "accessibility": true,
12 "customLabel": "Blue Room"
13 },
14 "value": "Basic Studio, 1 Queen Bed, Accessible, Non Smoking (Blue Room)"
15 },
16 "ageCategories": [
17 {
18 "category": "Adult",
19 "minAge": 13
20 },
21 {
22 "category": "Infant",
23 "minAge": 0
24 }
25 ],
26 "maxOccupancy": {
27 "total": 4,
28 "adults": 3,
29 "children": 2
30 },
31 "bedrooms": [
32 {
33 "count": 1,
34 "bedding": [
35 {
36 "option": [
37 {
38 "quantity": 1,
39 "type": "King Bed",
40 "size": "King"
41 }
42 ]
43 }
44 ]
45 }
46 ],
47 "extraBedding": [
48 {
49 "quantity": 1,
50 "type": "Rollaway Bed",
51 "size": "Full",
52 "surcharge": {
53 "type": "Per Day",
54 "amount": 20
55 }
56 },
57 {
58 "quantity": 1,
59 "type": "Crib",
60 "size": "Crib",
61 "surcharge": {
62 "type": "Free"
63 }
64 }
65 ],
66 "smokingPreferences": [
67 "Non-Smoking"
68 ],
69 "_links": {
70 "self": {
71 "href": "https://services.expediapartnercentral.com/properties/1780041/roomTypes/201171339"
72 }
73 }
74 }
75}

Modify room type (predefined name, code, and age categories)

Following the Create (Predefined room name) example, the name is modified to "Executive Suite", childage category is removed, and partner code is changed.

Request:

1PUT https://services.expediapartnercentral.com/properties/1780041/roomTypes/201171339
1{
2 "resourceId": 201171339,
3 "partnerCode": "JS002",
4 "name": {
5 "value": "Executive Suite"
6 },
7 "status": "Active",
8 "ageCategories": [
9 {
10 "category": "Adult",
11 "minAge": 18
12 },
13 {
14 "category": "ChildAgeA",
15 "minAge": 12
16 },
17 {
18 "category": "Infant",
19 "minAge": 0
20 }
21 ],
22 "maxOccupancy": {
23 "total": 4,
24 "adults": 3,
25 "children": 2
26 },
27 "bedrooms": [
28 {
29 "count": 1,
30 "bedding": [
31 {
32 "option": [
33 {
34 "quantity": 1,
35 "type": "King Bed",
36 "size": "King"
37 }
38 ]
39 }
40 ]
41 }
42 ],
43 "extraBedding": [
44 {
45 "quantity": 1,
46 "type": "Rollaway Bed",
47 "size": "Full",
48 "surcharge": {
49 "type": "Per Day",
50 "amount": 20
51 }
52 },
53 {
54 "quantity": 1,
55 "type": "Crib",
56 "size": "Crib",
57 "surcharge": {
58 "type": "Free"
59 }
60 }
61 ],
62 "smokingPreferences": [
63 "Non-Smoking"
64 ],
65 "floorSize": {
66 "squareFeet": 1023,
67 "squareMeters": 95
68 },
69 "views": [
70 "Ocean View",
71 "Beach View"
72 ],
73 "wheelchairAccessibility": false
74}

Response:

1{
2 "entity": {
3 "resourceId": 201171339,
4 "partnerCode": "JS002",
5 "name": {
6 "value": "Executive Suite"
7 },
8 "status": "Active",
9 "ageCategories": [
10 {
11 "category": "Adult",
12 "minAge": 18
13 },
14 {
15 "category": "ChildAgeA",
16 "minAge": 12
17 },
18 {
19 "category": "Infant",
20 "minAge": 0
21 }
22 ],
23 "maxOccupancy": {
24 "total": 4,
25 "adults": 3,
26 "children": 2
27 },
28 "bedrooms": [
29 {
30 "count": 1,
31 "bedding": [
32 {
33 "option": [
34 {
35 "quantity": 1,
36 "type": "King Bed",
37 "size": "King"
38 }
39 ]
40 }
41 ]
42 }
43 ],
44 "extraBedding": [
45 {
46 "quantity": 1,
47 "type": "Rollaway Bed",
48 "size": "Full",
49 "surcharge": {
50 "type": "Per Day",
51 "amount": 20
52 }
53 },
54 {
55 "quantity": 1,
56 "type": "Crib",
57 "size": "Crib",
58 "surcharge": {
59 "type": "Free"
60 }
61 }
62 ],
63 "smokingPreferences": [
64 "Non-Smoking"
65 ],
66 "floorSize": {
67 "squareFeet": 1023,
68 "squareMeters": 95
69 },
70 "views": [
71 "Ocean View",
72 "Beach View"
73 ],
74 "wheelchairAccessibility": false,
75 "_links": {
76 "self": {
77 "href": "https://services.expediapartnercentral.com/properties/1780041/roomTypes/201171339"
78 }
79 }
80 }
81}

Modify room type (predefined name to name attributes)

Based on the Room type create (Predefined room name) example, a predefined name is modified to a new room name built from attributes, child age category is removed, and the partner code is changed.

The name field is kept with its old value, but will be overridden by the room name attributes, as name attributes always take precedence over predefined names.

Request:

1PUT https://services.expediapartnercentral.com/properties/1780041/roomTypes/201171339
1{
2 "resourceId": 201171339,
3 "partnerCode": "JS002",
4 "name": {
5 "attributes": {
6 "typeOfRoom": "Suite",
7 "roomClass": "Executive",
8 "bedroomDetails": "1 Bedroom",
9 "featuredAmenity": "Jetted Tub",
10 "view": "City View"
11 },
12 "value": "Executive Suite"
13 },
14 "status": "Active",
15 "ageCategories": [
16 {
17 "category": "Adult",
18 "minAge": 13
19 },
20 {
21 "category": "Infant",
22 "minAge": 0
23 }
24 ],
25 "maxOccupancy": {
26 "total": 4,
27 "adults": 3,
28 "children": 2
29 },
30 "bedrooms": [
31 {
32 "count": 1,
33 "bedding": [
34 {
35 "option": [
36 {
37 "quantity": 1,
38 "type": "King Bed",
39 "size": "King"
40 }
41 ]
42 }
43 ]
44 }
45 ],
46 "extraBedding": [
47 {
48 "quantity": 1,
49 "type": "Rollaway Bed",
50 "size": "Full",
51 "surcharge": {
52 "type": "Per Day",
53 "amount": 20
54 }
55 },
56 {
57 "quantity": 1,
58 "type": "Crib",
59 "size": "Crib",
60 "surcharge": {
61 "type": "Free"
62 }
63 }
64 ],
65 "smokingPreferences": [
66 "Non-Smoking"
67 ]
68}

Response:

1{
2 "entity": {
3 "resourceId": 201171339,
4 "partnerCode": "JS002",
5 "name": {
6 "attributes": {
7 "typeOfRoom": "Suite",
8 "roomClass": "Executive",
9 "bedroomDetails": "1 Bedroom",
10 "featuredAmenity": "Jetted Tub",
11 "view": "City View"
12 },
13 "value": "Executive Suite, 1 Bedroom, Jetted Tub, City View"
14 },
15 "status": "Active",
16 "ageCategories": [
17 {
18 "category": "Adult",
19 "minAge": 13
20 },
21 {
22 "category": "Infant",
23 "minAge": 0
24 }
25 ],
26 "maxOccupancy": {
27 "total": 4,
28 "adults": 3,
29 "children": 2
30 },
31 "bedrooms": [
32 {
33 "count": 1,
34 "bedding": [
35 {
36 "option": [
37 {
38 "quantity": 1,
39 "type": "King Bed",
40 "size": "King"
41 }
42 ]
43 }
44 ]
45 }
46 ],
47 "extraBedding": [
48 {
49 "quantity": 1,
50 "type": "Rollaway Bed",
51 "size": "Full",
52 "surcharge": {
53 "type": "Per Day",
54 "amount": 20
55 }
56 },
57 {
58 "quantity": 1,
59 "type": "Crib",
60 "size": "Crib",
61 "surcharge": {
62 "type": "Free"
63 }
64 }
65 ],
66 "smokingPreferences": [
67 "Non-Smoking"
68 ],
69 "_links": {
70 "self": {
71 "href": "https://services.expediapartnercentral.com/properties/1780041/roomTypes/201171339"
72 }
73 }
74 }
75}

Room type partial update (PATCH)

Here are a few examples of PATCH requests you can make. Response examples are not included, but they would include the full room type resource definition with all its fields, in its final state after the partial update.

Updating only the name attributes
1{
2 "name": {
3 "attributes": {
4 "typeOfRoom": "Penthouse",
5 "roomClass": "Executive",
6 "view": "City View",
7 "featuredAmenity": "Jetted Tub"
8 }
9 }
10}
Updating both the partner code and the age categories
1{
2 "partnerCode": "PatchedPartnerCode",
3 "ageCategories": [
4 {
5 "category": "Adult",
6 "minAge": 18
7 },
8 {
9 "category": "ChildAgeA",
10 "minAge": 0
11 }
12 ]
13}
Updating the maximum occupancy
1{
2 "maxOccupancy": {
3 "total": 3,
4 "adults": 2,
5 "children": 1
6 }
Updating only the room views
1{
2 "views": [
3 "Pool View",
4 "Partial Ocean View"
5 ]
6}
Updating only the room views (this will remove views since the provided list is empty)
1{
2 "views": []
3}