Property resources
The Property API request message allows you to onboard property attributes, images, policies, and fees. Property API can also be used to update property content, policies, and fees after onboarding as well. This API can be utilized by partners using Availability and Rates API (AR) as well as our Availability, Rate and Inventory (ARI) partners. If you are an ARI partner, there is a small addition to the Onboarding Request - the property’s Brand Code and Chain Code must be defined as well. You can find details here
Property 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. Partners wishing to try Product API can use the endpoints and suggested scripts below.
Set or update property details
This endpoint may be used to initiate onboarding for new properties or update existing properties. The request body will accept an array containing between 1 and 50 properties per request. Each property must have a unique Provider Property Id. When sending updates, a full overlay is required for each property.
Request syntax
PUT /properties/v1/{providerName}
Response
The Property API response message is returned synchronously and allows Expedia Group to update the property’s system with the status of the Property API request. The status can either be Success or Error.
The response body will echo back the values of the request received and will include the following additional attributes:
Attribute | Type | Description |
---|---|---|
expediaId | Int | Expedia Group's unique ID for the property |
provider | String | Name of the provider associated with the property (this is your organization) |
createdUtc | DateTime | DateTime the property was created in Expedia Group's system |
modifiedUtc | DateTime | Last Modified time in Expedia Group's system |
status | String | callback URL to get property status. See GET Property Status for more information |
Here is an example:
1[2 {3 "providerPropertyId": "1289472",4 "name": "Peach Inn",5 "provider": "mycompany",6 "latitude": "23.3752",7 "longitude": "-81.3261",8 "providerPropertyUrl": "http://example.org",9 "structureType": "Hotel",10 "isVacationRental": false,11 "currencyCode": "USD",12 "billingCurrencyCode": "USD",13 "addresses": [14 {15 "line1": "123 Main St.",16 "city": "B. Hills",17 "state": "CA",18 "postalCode": "90210",19 "countryCode": "USA"20 }21 ],22 "hideAddress": true,23 "hideExactLocation": true,24 "ratings": [25 {26 "score": 4.0,27 "maxScore": 5.0,28 "source": "AAA",29 "description": "STARS"30 }31 ],32 "contacts": {33 "Property": {34 "phoneNumbers": [35 {36 "phoneNumberType": "Phone",37 "countryAccessCode": "1",38 "areaCode": "123",39 "number": "1234567"40 }41 ]42 },43 "ReservationManager": {44 "firstName": "First",45 "lastName": "Last",47 "emails": ["abc@xyz.com"],49 "phoneNumbers": [50 {51 "phoneNumberType": "Phone",53 "countryAccessCode": "1",55 "areaCode": "123",57 "number": "4567890"58 },60 {61 "phoneNumberType": "InternationalReservations",63 "countryAccessCode": "1",65 "areaCode": "123",67 "number": "7890123"68 }69 ]70 },72 "AlternateReservationManager": {73 "phoneNumbers": [74 {75 "phoneNumberType": "Phone",77 "countryAccessCode": "1",79 "areaCode": "123",81 "number": "1234567"82 }83 ]84 },86 "GeneralManager": {87 "firstName": "General",89 "lastName": "Manager",91 "emails": ["abc123@xyz.com"]92 }93 },95 "contents": [96 {97 "locale": "en-US",99 "name": "Localized Property Name",101 "providerPropertyUrl": null,103 "images": [104 {105 "url": "http://images.xyz.com/mainImage.jpg",107 "categoryCode": "FEATURED_IMAGE",109 "caption": "Main Image"110 }111 ],113 "amenities": [114 {115 "code": "WIFI_INTERNET",117 "detailCode": "SURCHARGE_PER_STAY",119 "value": 10.99120 }121 ]122 }123 ],125 "propertyCollectedMandatoryFees": [126 {127 "code": "RESORT_FEE",129 "scope": "AMOUNT_PER_PERSON",131 "duration": "PER_NIGHT",133 "value": 25.99,135 "startDate": null,137 "endDate": null138 },140 {141 "code": "DEPOSIT_OTHER",143 "scope": "BREAKAGE",145 "duration": "PER_DAY",147 "startDate": "2019-09-20",149 "endDate": "2019-09-28",151 "value": "14.77"152 }153 ],155 "taxes": [156 {157 "code": "VAT",159 "detailCode": "PERCENT_PER_STAY",161 "value": 20162 }163 ],165 "policies": [166 {167 "code": "MINIMUM_CHECKIN_AGE",169 "value": "18"170 },172 {173 "code": "FORMS_OF_DEPOSIT_ACCEPTED",175 "detailCode": "CREDIT_CARDS_ONLY",177 "value": null178 },180 {181 "code": "DEPOSIT_OTHER",183 "detailCode": "CASH_ONLY",185 "value": null186 }187 ],189 "inventorySettings": {190 "rateAcquisitionType": "NET_RATE",192 "pricingModel": "PER_DAY",194 "taxInclusive": false195 },197 "attributes": [198 {199 "code": "TOTAL_ROOMS",201 "value": "8"202 },204 {205 "code": "NUMBER_OF_BEDROOMS",207 "value": "4"208 },210 {211 "code": "NUMBER_OF_BATHROOMS",213 "value": "3"214 }215 ]216 }217]
Get property details
Presents your view of the property, which can be used by the Property API client to construct an update overlay message. The response does not necessarily show any fields that have been moderated (modified) by Expedia Group, such as star rating, taxes, latitude/longitude coordinates, or address.
Request syntax
GET /properties/v1/{providerName}/{propertyId}
Response example
1{2 "entity": {3 "providerPropertyId": "1234",5 "provider": "mycompany",7 "expediaId": 11632,9 "name": "The Grand Inn",11 "latitude": "53.3322239619385",13 "longitude": "-3.1883265505371",15 "createdUtc": "2015-11-26T12:29:54.311Z",17 "modifiedUtc": "2015-11-30T22:06:27.865Z",19 "providerPropertyUrl": "www.thegrandinn.com",21 "structureType": "HOTEL",23 "isVacationRental": false,25 "currencyCode": "GBP",27 "billingCurrencyCode": null,29 "addresses": [30 {31 "line1": "12 Ires Road",33 "line2": "",35 "city": "Glasgow",37 "state": "",39 "postalCode": "G12 8NN",41 "countryCode": "GBR"42 }43 ],45 "hideAddress": true,47 "hideExactLocation": true,49 "ratings": [50 {51 "score": 5.0,53 "maxScore": 5.0,55 "source": "Visit Scotland",57 "description": "5 STARS"58 }59 ],61 "contacts": {62 "Property": {63 "phoneNumbers": [64 {65 "phoneNumberType": "Phone",67 "countryAccessCode": "44",69 "areaCode": "",71 "number": "1211234269"72 },74 {75 "phoneNumberType": "InternationalReservations",77 "countryAccessCode": "44",79 "areaCode": "",81 "number": "121336311"82 }83 ]84 },86 "ReservationManager": {87 "firstName": "John",89 "lastName": "Doe",91 "phoneNumbers": [92 {93 "phoneNumberType": "Phone",95 "countryAccessCode": "44",97 "areaCode": "",99 "number": "1212231567"100 },102 {103 "phoneNumberType": "Mobile",105 "countryAccessCode": "44",107 "areaCode": "",109 "number": "1217634321"110 }111 ]112 },114 "AlternateReservationManager": {115 "firstName": "John",117 "lastName": "Doe",119 "phoneNumbers": [120 {121 "phoneNumberType": "Phone",123 "countryAccessCode": "44",125 "areaCode": "",127 "number": "1911934967"128 },130 {131 "phoneNumberType": "Mobile",133 "countryAccessCode": "44",135 "areaCode": "",137 "number": "1996534321"138 }139 ]140 }141 },143 "airports": [144 {145 "code": "GLA",147 "name": "Glasgow"148 }149 ],151 "contents": [152 {153 "locale": "en-US",155 "name": null,157 "providerPropertyUrl": null,159 "images": [160 {161 "url": "https://images.mycompany.com/1234/1234main.jpg",163 "categoryCode": "FEATURED_IMAGE",165 "caption": "Main Image"166 },168 {169 "url": "https://images.mycompany.com/1234/1234double.jpg",171 "categoryCode": "GUESTROOM",173 "caption": "Double Room Image"174 }175 ],177 "amenities": [178 {179 "code": "WIFI",181 "detailCode": "FREE",183 "value": 0184 },186 {187 "code": "BREAKFAST",189 "detailCode": "FREE",191 "value": null192 },194 {195 "code": "SELF_PARKING",197 "detailCode": "FREE",199 "value": 0200 },202 {203 "code": "POOL_INDOOR",205 "detailCode": null,207 "value": null208 },210 {211 "code": "PLAYGROUND",213 "detailCode": null,215 "value": null216 },218 {219 "code": "GARDEN",221 "detailCode": null,223 "value": null224 }225 ]226 }227 ],229 "propertyCollectedMandatoryFees": [230 {231 "code": "RESORT_FEE",233 "scope": "AMOUNT_PER_PERSON",235 "duration": "PER_NIGHT",237 "value": 25.99,239 "startDate": null,241 "endDate": null242 }243 ],245 "taxes": [246 {247 "code": "VAT",249 "detailCode": "PERCENT_PER_STAY",251 "value": 20252 }253 ],255 "policies": [256 {257 "code": "ACCEPTS_VISA",259 "detailCode": null,261 "value": null262 },264 {265 "code": "ACCEPTS_MASTERCARD",267 "detailCode": null,269 "value": null270 },272 {273 "code": "CHECKIN_START_TIME",275 "detailCode": null,277 "value": "11:00 AM"278 },280 {281 "code": "CHECKIN_END_TIME",283 "detailCode": null,285 "value": "11:00 PM"286 },288 {289 "code": "CHECKOUT_TIME",291 "detailCode": null,293 "value": "10:00 AM"294 },296 {297 "code": "BOOKING_CUTOFF_TIME",299 "detailCode": null,301 "value": "1:00 PM"302 },304 {305 "code": "BOOKING_CUTOFF_DAY",307 "detailCode": null,309 "value": "SAME_DAY"310 },312 {313 "code": "CANCELLATION_CUTOFF_TIME",315 "detailCode": null,317 "value": "2:00 PM"318 },320 {321 "code": "MINIMUM_CHECKIN_AGE",323 "detailCode": null,325 "value": "18"326 },328 {329 "code": "SMOKING_POLICY",331 "detailCode": "SMOKE_FREE_PROPERTY",333 "value": null334 },336 {337 "code": "CATERS_TO",339 "detailCode": "NO_BACHELOR_PARTIES",341 "value": null342 },344 {345 "code": "CATERS_TO",347 "detailCode": "NO_BACHELORETTE_PARTIES",349 "value": null350 }351 ],353 "inventorySettings": {354 "rateAcquisitionType": "SELL_LAR",356 "pricingModel": "PER_DAY",358 "onStopSell": true359 },361 "attributes": [362 {363 "code": "TOTAL_ROOMS",365 "value": "8"366 },368 {369 "code": "NUMBER_OF_BEDROOMS",371 "value": "4"372 },374 {375 "code": "NUMBER_OF_BATHROOMS",377 "value": "3"378 }379 ],381 "status": {382 "href": "/properties/v1/mycompany/10/status"383 }384 }385}
Get property status
The onboarding process is an asynchronous workflow, so this endpoint should be polled no more than once per hour to retrieve the most recent status of the property and its assigned Expedia ID.
Note: Product API cannot be called to add new room types/rate plans until after a property has reached the OnboardingSucceeded status. Similarly, property status resources are accessible only after property creation is completed in our systems.
Request syntax
GET /properties/v1/{providerName}/{propertyId}/status
Response example
1{2 "entity": {3 "provider": "mycompany",5 "providerPropertyId": 1234,7 "expediaId": null,9 "code": "OnboardingFailed",11 "reasonCodes": ["InvalidLatLong", "MissingPhoneNumber"],13 "timestampUtc": "2015-08-26T00:01:06.055Z",15 "messages": [16 "Invalid latitude/longitude: 0.0/0.0.",18 "No valid phone numbers found."19 ]20 }21}
A complete list of reason codes can be found on the code list page.
Update a property by Expedia property ID
Updating a property that is already onboarded is a similar operation to the original onboarding - a full overlay of a single property is required. It is recommended that you GET the property details first, modify the fields that you'd like to change (and/or add new), then send the entire JSON document as a PUT request to update the property. The full overlay must include images as well.
Example: If there are 10 images loaded via Property API and then another PUT was sent with 4 Images, then 6 images would be removed. If an overlay is sent with an empty image array in the PUT, then all 10 will be removed. To ensure images are not removed, partners should trigger a GET by Expedia ID prior to the update and ensure the images piece is retained in the update. Partners may find the functionality ofImage API easier for image management if properties often update content or images.
Note: PATCH is not supported at this time. A complete overlay is required for updates. This includes any images submitted with Property API. See Update a property by Expedia Property ID for more details.
Request syntax
PUT /properties/v1/{ExpediaPropertyId}
Response example
1{2 "providerPropertyId": "1289472",4 "name": "Peach Inn",6 "provider": "mycompany",8 "latitude": "23.3752",10 "longitude": "-81.3261",12 "providerPropertyUrl": "http://example.org",14 "structureType": "Hotel",16 "isVacationRental": false,18 "currencyCode": "USD",20 "billingCurrencyCode": "USD",22 "addresses": [23 {24 "line1": "123 Main St.",26 "city": "B. Hills",28 "state": "CA",30 "postalCode": "90210",32 "countryCode": "USA"33 }34 ],36 "hideAddress": true,38 "hideExactLocation": true,40 "ratings": [41 {42 "score": 4.0,44 "maxScore": 5.0,46 "source": "AAA",48 "description": "STARS"49 }50 ],52 "contacts": {53 "Property": {54 "phoneNumbers": [55 {56 "phoneNumberType": "Phone",58 "countryAccessCode": "1",60 "areaCode": "123",62 "number": "1234567"63 }64 ]65 },67 "ReservationManager": {68 "firstName": "First",70 "lastName": "Last",72 "emails": ["abc@xyz.com"],74 "phoneNumbers": [75 {76 "phoneNumberType": "Phone",78 "countryAccessCode": "1",80 "areaCode": "123",82 "number": "4567890"83 },85 {86 "phoneNumberType": "Mobile",88 "countryAccessCode": "1",90 "areaCode": "123",92 "number": "7890123"93 }94 ]95 },97 "AlternateReservationManager": {98 "phoneNumbers": [99 {100 "phoneNumberType": "Phone",102 "countryAccessCode": "1",104 "areaCode": "123",106 "number": "1234567"107 }108 ]109 },111 "GeneralManager": {112 "firstName": "General",114 "lastName": "Manager",116 "emails": ["abc123@xyz.com"]117 }118 },120 "contents": [121 {122 "locale": "en-US",124 "name": "Localized Property Name",126 "providerPropertyUrl": null,128 "images": [129 {130 "url": "http://images.xyz.com/mainImage.jpg",132 "categoryCode": "FEATURED_IMAGE",134 "caption": "Main Image"135 }136 ],138 "amenities": [139 {140 "code": "WIFI_INTERNET",142 "detailCode": "SURCHARGE_PER_STAY",144 "value": 10.99145 }146 ]147 }148 ],150 "propertyCollectedMandatoryFees": [151 {152 "code": "RESORT_FEE",154 "scope": "AMOUNT_PER_PERSON",156 "duration": "PER_NIGHT",158 "value": 25.99,160 "startDate": null,162 "endDate": null163 },165 {166 "code": "DEPOSIT_OTHER",168 "scope": "BREAKAGE",170 "duration": "PER_DAY",172 "startDate": "2019-09-20",174 "endDate": "2019-09-28",176 "value": "14.77"177 }178 ],180 "taxes": [181 {182 "code": "VAT",184 "detailCode": "PERCENT_PER_STAY",186 "value": 20187 }188 ],190 "policies": [191 {192 "code": "MINIMUM_CHECKIN_AGE",194 "value": "18"195 },197 {198 "code": "FORMS_OF_DEPOSIT_ACCEPTED",200 "detailCode": "CREDIT_CARDS_ONLY",202 "value": null203 },205 {206 "code": "DEPOSIT_OTHER",208 "detailCode": "CASH_ONLY",210 "value": null211 }212 ],214 "inventorySettings": {215 "rateAcquisitionType": "NET_RATE",217 "pricingModel": "PER_DAY",219 "taxInclusive": false220 },222 "attributes": [223 {224 "code": "TOTAL_ROOMS",226 "value": "8"227 },229 {230 "code": "NUMBER_OF_BEDROOMS",232 "value": "4"233 },235 {236 "code": "NUMBER_OF_BATHROOMS",238 "value": "3"239 }240 ]241}
Deactivate a property
Sending a DELETE for an onboarded property will deactivate the property in Expedia Group's system. Content will not be deleted and the property's state will be changed to inactive. The property can later be re-enabled using the Set Property Details API call. A success response to the delete request will be a 200/OK and the response will echo back the details of the property which was just deleted.
Request syntax
DELETE /properties/v1/{providerName}/{propertyId}
Response example
1{2 "entity": [3 {4 "providerPropertyId": "1234",6 "provider": "mycompany",8 "expediaId": null,10 "name": "Property Name",12 "latitude": "21.3752",14 "longitude": "-88.3261",16 "createdUtc": "2015-11-20T00:16:16.819Z",18 "modifiedUtc": "2015-11-20T15:42:28.605Z",20 "providerPropertyUrl": "http://example.org",22 "structureType": "Hotel",24 "isVacationRental": false,26 "currencyCode": "GBP",28 "billingCurrencyCode": "GBP",30 "addresses": [31 {32 "line1": "Address Line 1",34 "line2": null,36 "city": "City",38 "state": "State or Province",40 "postalCode": "77780",42 "countryCode": "IRL"43 }44 ],46 "ratings": [47 {48 "score": 4.0,50 "maxScore": 5.0,52 "source": "AAA",54 "description": "4 STARS"55 }56 ],58 "hideAddress": true,60 "hideExactLocation": true,62 "contacts": {63 "Property": {64 "phoneNumbers": [65 {66 "phoneNumberType": "Phone",68 "countryAccessCode": "1",70 "areaCode": "123",72 "number": "1234567"73 }74 ]75 },77 "ReservationManager": {78 "firstName": "First",80 "lastName": "Last",82 "emails": ["abc@xyz.com"],84 "phoneNumbers": [85 {86 "phoneNumberType": "Phone",88 "countryAccessCode": "1",90 "areaCode": "123",92 "number": "4567890"93 },95 {96 "phoneNumberType": "Mobile",98 "countryAccessCode": "1",100 "areaCode": "123",102 "number": "7890123"103 }104 ]105 },107 "AlternateReservationManager": {108 "phoneNumbers": [109 {110 "phoneNumberType": "Phone",112 "countryAccessCode": "1",114 "areaCode": "123",116 "number": "1234567"117 }118 ]119 },121 "GeneralManager": {122 "firstName": "General",124 "lastName": "Manager",126 "emails": ["abc123@xyz.com"]127 }128 },130 "contents": [131 {132 "locale": "en-US",134 "name": "Localized Property Name",136 "providerPropertyUrl": null,138 "images": [139 {140 "url": "images.xyz.com/mainImage.jpg",142 "categoryCode": "FEATURED_IMAGE",144 "caption": "Main Image"145 }146 ],148 "amenities": [149 {150 "code": "BREAKFAST",152 "detailCode": "FREE",154 "value": null155 },157 {158 "code": "WIFI",160 "detailCode": "SURCHARGE_PER_STAY",162 "value": 10.99163 }164 ]165 }166 ],168 "propertyCollectedMandatoryFees": [169 {170 "code": "RESORT_FEE",172 "scope": "AMOUNT_PER_PERSON",174 "duration": "PER_NIGHT",176 "value": 25.99,178 "startDate": null,180 "endDate": null181 }182 ],184 "taxes": [185 {186 "code": "VAT",188 "detailCode": "PERCENT_PER_STAY",190 "value": 20191 }192 ],194 "policies": [195 {196 "code": "MINIMUM_CHECKIN_AGE",198 "detailCode": null,200 "value": "18"201 },203 {204 "code": "CHECKIN_TIME",206 "detailCode": null,208 "value": "2:00 PM"209 },211 {212 "code": "CHECKOUT_TIME",214 "detailCode": null,216 "value": "11:00 AM"217 },219 {220 "code": "CANCELLATION_CUTOFF_TIME",222 "detailCode": null,224 "value": "6:00 PM"225 }226 ],228 "attributes": [229 {230 "code": "TOTAL_ROOMS",232 "value": "8"233 },235 {236 "code": "NUMBER_OF_BEDROOMS",238 "value": "4"239 },241 {242 "code": "NUMBER_OF_BATHROOMS",244 "value": "3"245 }246 ]247 }248 ]249}
Definitions
property
Attribute | Type | Required for Onboarding | Updatable? | Notes |
---|---|---|---|---|
providerPropertyId | String | Yes | No | Unique ID for the property from the Provider's system. Allowable characters include ASCII a-z, A-Z,0-9, underscore, dash. |
name | String | Yes | Yes | Default Property Name. Must be submitted in Western European Character set. |
provider | String | Yes | No | Provider Name; should be same as the one used in the Set Property Details endpoint |
latitude | String | Yes | No | Property Latitude, use ISO-6709. May be modified by Expedia Group and updates submitted after initial onboarding will not be processed. |
longitude | String | Yes | No | Property Longitude, use ISO-6709. May be modified by Expedia Group and updates submitted after onboarding will not be processed. |
providerPropertyUrl | String | No | Yes | URL for property's website, must be submitted in Western European Character set. |
structureType | String | Yes | Yes | Must use predefined structureType code. See code list |
isVacationRental | Boolean | No | Yes | Used to specify if the property onboarded is categorized Vacation Rental or not |
currencyCode | String | Yes | No | Expedia Group uses the currencyCode for pricing purposes, please submit an ISO-4217 code for both currencyCode. Note that if the property is on Expedia Collect or Expedia Traveler Preference business model, currencyCode and billingCurrencyCode must match or onboarding will fail. |
billingCurrencyCode | String | Yes | No | Use ISO-4217. billingCurrencyCode is used for invoicing and has to be one of the currencies set up by your Expedia Group Technical Relationship Manager for billing. Cannot be updated after initial onboarding. Note that if the property is on Expedia Collect or ExpediaTraveler Preference business model, currencyCode and billingCurrencyCode must match or onboarding will fail. |
addresses | Array of Address objects | Yes | No | See Address below. |
hideAddress | Boolean | No | Yes | Determines whether or not the property should have the address shown pre-booking on the live site |
hideExactLocation | Boolean | No | Yes | Determines whether or not the property should be using an obfuscated lat/long pre-booking |
ratings | Array of Rating objects | No | No | See Rating below. |
contacts | Dictionary of Contact objects | Yes | Yes | See Contact below. |
contents | Array of Content | Yes | Yes | See Content below. |
propertyCollectedMandatoryFees | Array of PropertyCollectedMandatoryFee | No | Yes | See PropertyCollectedMandatoryFee below. |
policies | Array of Policy | No | Yes | See Policy below. |
inventorySettings | Array of InventorySettings | No | Yes | See InventorySettings below. |
taxes | Array of Tax | No | Yes | See Tax below. Though not required for the property data to successfully pass to Expedia Group, properties cannot go live without this information. |
attributes | Array of Attribute | No | Yes | See Attributes - property specifics below. Note that for vacation rental properties, the NUMBER_OF_BEDROOMS and NUMBER_OF_BATHROOMS are required as part of the minimum content requirements. See Set property details codes for information about whether Expedia Group considers a property type to be conventional lodging or a vacation rental structure type. |
address
Attribute | Type | Required | Notes |
---|---|---|---|
line1 | String | Yes |
|
line2 | String | No | |
city | String | Yes | Town/City |
state | String | No | State/Province |
postalCode | String | No | ZIP/Postal Code |
countryCode | String | Yes | Use ISO 3166-1 alpha-2 or alpha-3. Stored in Expedia Group's system as alpha-3. |
Rating
Only star rating is displayed for a property. Rating data submitted will be reviewed and subject to revision by Expedia Group.
Attribute | Type | Required | Notes |
---|---|---|---|
score | Decimal | Yes | Normalized Score, e.g. 4.0 |
maxScore | Decimal | Yes | The maximum score possible for the rating scale, e.g. 5.0 if the highest rating is 5 stars. |
description | String | Yes | Only supported value is "Stars" |
source | String | No | More descriptive information about the star rating. Indicate here if national or non-national rating and affiliation. |
contact
Contact set data are represented as a dictionary, with the following dictionary keys (strict checking against the key name).
Dictionary Key | Required | Notes |
---|---|---|
Property | Yes | Contact Info for the physical property |
ReservationManager | Yes | firstName, lastName, and an email address is required. Property will fail onboarding if this information is not submitted. The firstName, lastName must be between 2 and 25 characters, inclusive, without whitespace-padding. Cannot contain Unicode. |
AlternateReservationManager | Yes | Phone number required - used as emergency (24hour) contact for customer booking issues. Property will fail onboarding if this information is not submitted. FirstName and LastName values are obtained from ReservationManager, if not provided. Prefix of "24hr- " is added to FirstName if the field is not provided. The firstName, lastName must be between 2 and 25 characters, inclusive, without whitespace-padding. Cannot contain Unicode. |
GeneralManager | No | If a phone number is provided, telesales inquiries about property amenities will be directed to this number instead of contacting the property directly. |
PropertyExtranetUser | No | First Name, Last Name, email address required. An account for Partner Central will be created during the onboarding process and credentials will be sent to the email address submitted. This Partner Central account can be used by the property to read and respond to user reviews and reports for the property. Any content updates submitted with Partner Central can be overwritten by an update submitted with the Property API. |
Description of contact info accepted
Attribute | Type | Required | Notes |
---|---|---|---|
firstName | String | Yes | Required for ReservationManager and PropertyExtranetUser, optional for others. Data type: string, 2-25 characters, inclusive, without whitespace-padding. Cannot contain Unicode. |
lastName | String | Yes | Required for ReservationManager and PropertyExtranetUser, optional for others. Data type: string, 2-25 characters, inclusive, without whitespace-padding. Cannot contain Unicode. |
phoneNumbers | Array of PhoneNumbers | See Notes | Phone required for Property, ReservationManager, AlternateReservationManager |
emails | Array of Strings | See Notes | Email required for ReservationManager. Must be well-formed Internet format and cannot contain Unicode. For all contact types other than Property, only one email address is permitted. |
phoneNumber
Attribute | Type | Required | Notes |
---|---|---|---|
phoneNumberType | String | No | Strict checking against this list of phone number types. If no type is submitted, then the default of 'Undefined' will be used. |
countryAccessCode | String | No | |
areaCode | String | No | Use Telephone numbering plan standards. |
number | String | Yes | Include the country and area code within the submitted number. |
content
Attribute | Type | Required | Notes |
---|---|---|---|
locale | String | Yes | en-US must be used, no other language tag is supported |
name | String | No | Property name for specified locale, e.g. en-US. If none is provided, then the default property name will be used. |
images | Array of Image | Yes | See Image below. |
amenities | Array of Amenity | Yes | See Amenity below. |
Image
We recommend all partners to abide to the Expedia Group standards for images to ensure good content:
- Photo Quantity: A minimum of 3 images per property. For better conversion to bookable units, Expedia Group suggests sending at least 20 property photos.
- GuestRoom Coverage: 4 or more photos for each room type and 1 photo of the bathroom
- Photo Quality: Photos should be high resolution, or 2,880 pixels or higher on the longest edge, with a maximum file size of 15 MB. Images below 650x650 pixels will be rejected. Photos must be in one of the following file formats:
- JPG
- PNG
- BMP
When updating images, note that updates are full overlay.
Example: If there are 10 images loaded via Property API and then another PUT was sent with 4 Images, then 6 images would be removed. If an overlay is sent within an empty photo in the PUT, then all 10 will be removed.
Note: Property API does not send error messages when an image is rejected. To find out what images are currently associated with a property, use Image API or the GET by Expedia ID functionality.
Attribute | Type | Required | Notes |
---|---|---|---|
url | String | Yes | The image URL. Please note, Expedia Group first has to whitelist your image host domains. Contact us to have this completed. |
categoryCode | String | No | See Image category code list. Expedia Group strongly recommends sending the image code categories. If not provided, Expedia Group will provide categorization, but images may not display optimally until this is completed. |
name | String | No | Image Caption |
amenity
Attribute | Type | Required | Notes |
---|---|---|---|
code | String | Yes | See the code list. Expedia requires at least 10 amenities to be sent per property |
detailCode | String | See code list | See code list |
value | Numeric | See code list | See code list |
PropertyCollectedMandatoryFee
Attribute | Type | Required | Notes |
---|---|---|---|
code | String | Yes | See code list.Used to define Fees collected at the time of guest check-in. Please refrain from using this Property level fee attribute for fees that are to be collected at the time of booking. If there are fees collected at the time of booking, please utilize the Rate plan level Service Fees (Refer to Product API documentation for further details). |
scope | String | Yes | See code list |
duration | String | Yes | See code list |
value | Decimal | Yes | Fee amount in the property's currency. Example: 24.99 |
startDate | String | No | If fee is only offered on specific days during the year, provide a recurring start and end date. If no dates are provided, it would be considered for Year round. The date range (yyyy-mm-dd format) can only be for 365 days and startDate year should be current year |
endDate | String | No |
policy
Attribute | Type | Required | Notes |
---|---|---|---|
code | String | Yes | See code list |
value | String | Yes |
inventorySettings
Attribute | Type | Required | Notes |
---|---|---|---|
rateAcquisitionType | String | No | See code list |
pricingModel | String | No | See code list |
distributionModels | Array | No | See code list |
taxInclusive | Boolean | No | Please note, you would have to specify this at Rate plan level as well when you create them using Product API. |