The EAN Deals API allows you to access all current and future rate discounts provided by hotels within a specific date range. Deals can be searched for by destination or by a list of hotel IDs.

Request Formats
REST URL: GET http://api.ean.com/ean-services/rs/hotel/v3/deals?

Note: As this service is JSON-only, include Accept: application/json in your request headers to avoid HTTP 406 errors.

Common Elements

Name Value Required Description
cid long yes Your EAN-issued account ID. This number is used for tracking sales for statistics and commissions purposes on live sites.

Paired with apiKey as part of authentication.

Format: (as provided by EAN)
Example: 12345

apiKey string yes Your EAN-issued access key to the API. Determines your access to live bookings, your authentication method (IP or signature-based) and request quotas.

Paired with a cid as part of overall authentication.

Format: (as provided by EAN)
Example: cbrzfta369qwyrm9t5b8y8kf

locale string yes

Sets the language for localization of deal descriptions.
See our supported locales.

Does not restrict eligible marketing channels. Use the response element pointsOfSale to identify deals available only in certain countries.

Default: en_US

Format: xx_XX
Examples: en_US, pt_BR, ja_JP

sig string yes The sig value used with signature authentication.

All sig values are required to be at least 32 lower-case characters in length.

If you receive errors when generating your own digital signature, send a ping request to verify your Unix time against EAN's or check your value against EAN's sig generator.

Format: MD5 hash
Example: 069848d7e7f23f5cdc04eed91fe23d98

Mandatory Request Parameters

The Deals API will return any deals that have at least one matching bookable night that falls within the date & time range you define.
Use one of the below two methods (either destinationString or hotelIdList) to limit the selection of deals returned in the request, and one of the three specified combinations of the date & time range elements as detailed in the subsection below.

Name Value Required Description
destinationString string no*

Location to search for hotels with deals. Must contain at least a city name; city and state, city and country, city/state/country, etc. are also permitted.

*If omitted, must send hotelIdList instead.

Format: string
Example: Paris, France

hotelIdList string no*

Comma-delimited list of specific EAN hotel IDs to search for deals.

There is no limit to the number of hotel IDs that can be added under this

parameter.

*If omitted, must send destinationString instead.

Format: string
Example: 282336,115100,385870,118100

Date & Time Range Options

Specify your desired date & time range for eligible deals using the elements below in any one of these combinations:

  • effectiveStartDate and effectiveEndDate
  • travelStartDate and travelEndDate
  • effectiveStartDate, effectiveEndDate, travelStartDate and travelEndDate

Any other combination is invalid and will return an error response.

Name Value Description
effectiveStartDate string Defines the start of the booking window for the deals search. You may optionally include a specific start time.

Time value defaults to 00:00:00 if omitted.

Format: YYYY-MM-DD or YYYY-MM-DD hh:mm:ss
Examples: 2017-11-22 or 2017-11-22+09:00:00

effectiveEndDate string Defines the end of the booking window for the deals search. You may optionally include a specific end time.

Time value defaults to 23:59:59 if omitted.

Format: YYYY-MM-DD or YYYY-MM-DD hh:mm:ss
Examples: 2017-11-25 or 2017-11-25+12:00:00

travelStartDate string Defines the start of the travel window for the deal. You may optionally include a specific start time.

Format: YYYY-MM-DD or YYYY-MM-DD hh:mm:ss
Examples: 2017-11-23 or 2017-11-23+09:00:00
travelEndDate string Indicates the end of the travel window for the deal. You may optionally include a specific end time.

Format: YYYY-MM-DD or YYYY-MM-DD hh:mm:ss
Examples: 2017-11-24 or 2017-11-24+09:00:00

Additional Optional Request Parameters

Value Range Options

Specify your desired minimum and/or maximum promoValue values for deals using the elements below. Send these elements together or independently. Remember that promo values are always a decimal percent value – free nights are indicated by -1.

Name Value Required Description
promoValueMin string no Defines the minimum accepted value for returned deals' promoValue. Value must be greater than or equal to -0.01
promoValueMax string no Defines the maximum accepted value for returned deals' promoValue. Value must be less than or equal to -1

Mobile and Rate Type Filters
Name Value Required Description
siteType string no Defines and filters mobile-only deals. Send siteType=Mobile to activate this filter.
rateType string no Defines the rate type eligible for the deal and filters deals accordingly.
Common values are:
• MerchantStandard
• MerchantPackage
• MerchantStandard|MerchantPackage
Rate Plan Filter

Name

Value

Required

Description

excludeFields

string

no

Determines fields to be excluded in the response.

Values:
ratePlans

When excludeFields=ratePlans, the ratePlans array containing roomTypeCode and rateCode objects is not returned in the response.

Creation Date

Use this dimension to get incremental updates and keep up to date on new deals added daily.

createStartDate and createEndDate can be used independently or together to define a deal creation date range.

When createStartDate and/or createEndDate are used in the request, only promoIds with a creation date within the specified deal creation date range are returned in the response (and date ranges defined by the effective and travel start/end date parameters).

Name Value Required Description
createStartDate string no

Defines the start date of the deal creation date in a search. You may optionally include a specific start time.

Time value defaults to 00:00:00 if omitted.

Format: YYYY-MM-DD or YYYY-MM-DD hh:mm:ss
Examples: 2017-11-25 or 2017-11-25+12:00:00

createEndDate string no

Defines the end date of the deal creation date in a search. You may optionally include a specific start time.

Time value defaults to 23:59:59 if omitted.

Format: YYYY-MM-DD or YYYY-MM-DD hh:mm:ss
Examples: 2017-12-25 or 2017-12-25+12:00:00

Fenced Deal Filter

Name

Value

Required

Description

isFenced

boolean

no

Defines and filters fenced and non-fenced deals. Send as true to return only fenced deals. Send as false to exclude all fenced deals from your results.

By default, both deal types are returned if this parameter is omitted.

 

Response Content

Available deals are returned as individual objects within an array. Properties offering multiple deals will return multiple objects for the same hotel ID.

Each object contains the specific rate and room codes applicable to the deal, effective dates, any restrictions on dates or length of stay, and the hotel ID offering the deal.

Responses are provided in JSON only.

Name Value Description
promoId int Identifier for the deal. This value is the same promoId value returned by any other EAN API responses.
effectiveStartDate string The earliest day and time the deal may be booked. Returns in YYYY-MM-DD hh:mm:ss format. May be significantly backdated.
effectiveEndDate string The latest day and time the deal may be booked. Returns in YYYY-MM-DD hh:mm:ss format.
travelStartDate string Indicates the start of the travel window for the deal. Strictly limits eligiblity for the deal if partialApply returns false. Returns in YYYY-MM-DD hh:mm:ss format.
travelEndDate string Indicates the end of the travel window for the deal. Strictly limits eligiblity for the deal if partialApply returns false. Returns in YYYY-MM-DD hh:mm:ss format.
createDate string Indicates the deals creation date. Returns in YYYY-MM-DD hh:mm:ss format.
promoDescription string Text description of the deal. Localized according to the locale provided in the request.
promoType string

Confirms the type of discount as PERCENTAGE.

Free night(s) are indicated using a PERCENTAGE discount of 100%. The occurrence of the free night is typically defined by nightOfStayApply.

Example:
The values below define a free 3rd night with a minimum 3-night stay.
Since nightOfStayApplyRecurring returned true, every 3rd night of the stay will be free (3rd, 6th, 9th, etc).
        "promoDescription": "Book now and save",
"promoType": "PERCENTAGE",
"promoValue": "-1.0000",
"advancePurchaseMaximumDays": 500,
"advancePurchaseMinimumDays": 0,
"numberNightsLastApply": 0,
"numberNightsFirstApply": 0,
"nightOfStayApply": 3,
"nightOfStayApplyRecurring": true,
"partialApply": true,
"stayMaximumDurationDays": 28,
"stayMinimumDurationDays": 3,
promoValue string The rate-modifying value of the deal. This element provides the discount in decimal format.

Examples:
"promoDescription": "Sale! Save -10% on this Stay.",
"promoType": "PERCENTAGE",
"promoValue": "-0.1000",
fenced boolean

Returned only when a CID is enabled to receive fenced deals (omitted
from the response if the CID is not enabled).
If returned true, the deal is fenced.

Examples:

{
"promoId": 220797942,
"effectiveStartDate": "2017-08-24 00:00:00",
"effectiveEndDate": "2018-08-14 23:59:00",
"travelStartDate": "2017-08-24 00:00:00",
"travelEndDate": "2018-08-14 00:00:00",
"promoDescription": "Special deal. Save 15%",
"promoType": "PERCENTAGE",
"promoValue": "-0.1500",
"fenced": false,
"advancePurchaseMaximumDays": 14,
"promoApplies": [
"SUNDAY"
],
"nightOfStayApply": 0,
"nightOfStayApplyRecurring": false,
"stayMinimumDurationDays": 1,
"rateType": "MerchantStandard|MerchantPackage",
"hotelId": 604448,
"ratePlans": [
{
"roomTypeCode": 201574922,
"rateCode": 207919625
},
{
"roomTypeCode": 201579853,
"rateCode": 207945473
}
]
},
{
"promoId": 221113333,
"effectiveStartDate": "2017-07-28 11:51:00",
"effectiveEndDate": "2017-11-30 23:59:00",
"travelStartDate": "2017-09-15 00:00:00",
"travelEndDate": "2017-09-30 00:00:00",
"promoDescription": "Member’s exclusive price. Save 20%",
"promoType": "PERCENTAGE",
"promoValue": "-0.2000",
"fenced": true,
"nightOfStayApply": 0,
"nightOfStayApplyRecurring": false,
"stayMinimumDurationDays": 1,
"rateType": "MerchantStandard|MerchantPackage",
"hotelId": 604448,
"ratePlans": [
{
"roomTypeCode": 201574922,
"rateCode": 207919625
},
{
"roomTypeCode": 201579853,
"rateCode": 207945473
}
]
},

excludedDates array

Specifies any date range(s) where the deal will not apply. Contains objects with pairs of startDate and endDate.

Omitted from the response if null.

excludedDates.startDate string Specifies the beginning of the date range excluded from the deal. Returns in YYYY-MM-DD hh:mm:ss format.
excludedDates.endDate string Specifies the end of the date range excluded from the deal. Returns in YYYY-MM-DD hh:mm:ss format.
advancePurchaseMaximumDays int Booking must not be made more than this many days in advance for the deal to apply. Defaults to 500 if not specified by the individual deal.
advancePurchaseMinimumDays int Booking must not be made less than this many days in advance for the deal to apply. Defaults to 0 if not specified by the individual deal.
promoApplies array

Returns if the deal only applies on certain days of the week. The English names of applicable days are returned as an array of strings.

Omitted from the response if null.

Example:

"promoApplies": [
"SATURDAY",
"FRIDAY",
"THURSDAY",
"SUNDAY"
],
stayStartRestriction array

Returns if the deal applies only when the reservation starts on certain days of the week. The English names of applicable days are returned as an array of strings.

Omitted from the response if null.

stayEndRestriction array

Returns if the deal applies only when the reservation ends on certain days of the week. The English names of applicable days are returned as an array of strings.

Omitted from the response if null.

stayIncludeEachOf array

Returns if the deal applies only when the reservation covers all of the specified days of the week any time during the stay. The English names of applicable days are returned as an array of strings.

Omitted from the response if null.

Example:

This deal applies only if the stay includes a Sunday.

"promoDescription": "Stay 3 nights and save",
"promoType": "PERCENTAGE",
"promoValue": "-0.1500",
"advancePurchaseMaximumDays": 500,
"advancePurchaseMinimumDays": 0,
"stayIncludeEachOf": [
"SUNDAY"
],
stayIncludeOneOf array

Returns if the deal applies only when the reservation covers at least one of the specified days of the week any time during the stay. The English names of applicable days are returned as an array of strings.

Omitted from the response if null.

Example:

This deal applies to a stay including any day of the week except Saturday.

        "promoDescription": "Sale!",
"promoType": "PERCENTAGE",
"promoValue": "-0.1000",
"advancePurchaseMaximumDays": 0,
"advancePurchaseMinimumDays": 0,
"stayIncludeOneOf": [
"FRIDAY",
"TUESDAY",
"WEDNESDAY",
"THURSDAY",
"MONDAY",
"SUNDAY"
],
numberNightsLastApply int Deal applies only to the final n nights of the stay. E.g. a value of 2 means the deal only applies to the last two nights of the stay.
numberNightsFirstApply int Deal applies only to the first n nights of the stay. E.g. a value of 3 means the deal only applies to the first three nights of the stay.
nightOfStayApply int Deal applies only to a specific night number in the stay. E.g. a value of 4 means the deal only applies to the fourth night of the stay.
nightOfStayApplyRecurring boolean If returned true, indicates nightOfStayApply's specified night number repeats. E.g. if nightOfStayApply returns 3 and this element returns true, the deal applies every third night of the stay.
stayMaximumDurationDays int Deal applies only if the length of stay is this number of days or fewer.
stayMinimumDurationDays int Deal applies only if the length of stay is this number of days or greater.
partialApply boolean

If returned true, any nights which fall within the date range defined by travelStartDate and travelEndDate will be eligible for the deal rate..

If returned false, the stay must fall entirely within the date range defined by travelStartDate and travelEndDate for the deal to apply.

Example:

A deal is returned with travel start and end dates of January 15th-20th:

     "promoType": "PERCENTAGE",
"promoValue": "-0.0500", … … … … … "travelStartDate": "2017-01-15 00:00:00",
"travelEndDate": "2017-01-20 00:00:00",

A customer wants to book a stay between January 10th and the 20th.

If partialApply returned true for this deal, the customer would receive the 5% discount for their nights between the 15th and the 20th.

If partialApply returned false for this deal, the customer would not receive the discount for any nights because their stay begins before the promo's defined travelStartDate of the 15th.

pointsOfSale array

Returns if the deal is restricted to specific points of sale. Provides an array of two-letter country codes eligible for the deal.

If returned, you must market the deal only for points of sale in the country codes listed in the array. Deals that populate this element cannot be applied outside of their designated points of sale.

Omitted from the response if the deal has no point-of-sale restrictions. This element is not affected by the locale request element.

Example:

 "pointsOfSale": [
"TW",
"HK",
"IN",
"JP",
"KR",
"CN",
"MY",
"NZ",
"VD",
"TH",
"AU",
"SG",
"PH",
"ID"
],
siteType string

Returns a value of Mobile if the deal is mobile-only. Market deals with siteType: Mobile only to mobile site or app customers.

Omitted from the response if null.

rateType string

Indicates the rate types eligible for the deal.
Common values are:
• MerchantStandard
• MerchantPackage
• MerchantStandard|MerchantPackage

hotelId string EAN ID of the specific property offering the described deal.
expediaHotelId string

Expedia ID of the specific property offering the described deal.

EAN and Expedia IDs are separate identifiers associated with the same property.
partialExcludedDates boolean

If returned false, the deal will not apply at all if one or more nights in the stay fall within the excluded range.

If returned true, dates outside of any excluded ranges overlapping the stay will still be eligible for the deal rate.

Example:

This deal blacks out any dates of stay between January 1st and February 28th.

        "promoType": "PERCENTAGE",
"promoValue": "-0.0500",
"excludedDates": [
{
"startDate": "2017-01-01 00:00:00",
"endDate": "2017-02-28 00:00:00"
}

A customer wants to book a stay between February 26th and March 3rd.

If partialExcludedDates returned true for this deal, they would receive the 5% discount for their nights between February 26th and the 28th.

If partialExcludedDates returned false for this deal, they would not receive the discount for any nights because their stay falls partially within the excluded date range.

ratePlans array

Returns roomTypeCode and rateCode objects defining the specific room type
and rate code eligible for the deal rate.

Example:

"ratePlans": [
      {
        "roomTypeCode": 200866551,
        "rateCode": 204527540
      },
      {
        "roomTypeCode": 200866552,
        "rateCode": 204527542
      },
      {
        "roomTypeCode": 200565198,
        "rateCode": 204527543
      },
      {
        "roomTypeCode": 200866540,
        "rateCode": 204528068
      },
      {
        "roomTypeCode": 200565200,
        "rateCode": 204534569
      }



Error Messages

The Deals API may return the following validation errors. Example invalid values are provided where applicable. All errors are returned in a standard EanWsError object.

You may also encounter errors from other systems within the EAN V3 API - see our error handling documentation for any errors not documented below.

Name Validation Verbose Message
cid missing/invalid This request could not be authenticated: {cid} is required.
apiKey missing/invalid This request could not be authenticated: {apiKey} is required.
locale invalid Invalid locale. Valid locale values are [{list of current supported locales}] (cid=#####; ipAddress=########)
effectiveStartDate invalid Data in this request could not be validated. Invalid format for {effectiveStartDate} (11/24/2017). It must be in format [YYYY-MM-DD] or [YYYY-MM-DD hh:mm:ss].
effectiveStartDate missing Data in this request could not be validated: {effectiveStartDate} is required.
effectiveEndDate invalid Data in this request could not be validated. Invalid format for {effectiveEndDate} (11/24/2017). It must be in format [YYYY-MM-DD] or [YYYY-MM-DD hh:mm:ss].
effectiveEndDate missing Data in this request could not be validated: {effectiveEndDate} is required.
destinationString missing/invalid Data in this request could not be validated: Specified city could not be resolved as valid location.
destinationString multiple results Multiple locations found, please refine your search criteria.
destinationString/hotelIdList invalid combination Please specify either {hotelIdList} or {destinationString} but not both.
hotelIdList invalid Invalid {hotelIdList} specified.
travelStartDate missing Data in this request could not be validated: {travelStartDate} is required.
travelStartDate invalid

Data in this request could not be parsed to a date:
Invalid {travelStartDate}: <invalid parameter>. It must be a valid date String in format YYYY-MM-DD or YYYY-MM-DD hh:mm:ss

travelEndDate

In past (>26 hours ago)

Data in this request could not be validated: {travelEndDate} cannot be in the past: <invalid parameter>.

travelEndDate

missing

Data in this request could not be validated: {travelEndDate} is required.

travelEndDate

invalid

Data in this request could not be parsed to a date: Invalid {travelEndDate}: <invalid parameter>. It must be a valid date String in format YYYY-MM-DD or YYYY-MM-DD hh:mm:ss

travelEndDate

endDate before startDate

Data in this request could not be validated: {travelEndDate} (<invalid parameter>) must be after {travelStartDate} (<invalid parameter>).

travelStartDate & travelEndDate

missing

Data in this request could not be validated: valid dates required. It must be in format YYYY-MM-DD or YYYY-MM-DD hh:mm:ss

Example Request:

http://api.ean.com/ean-services/rs/hotel/v3/deals?
cid=######
&apiKey=#############
&locale=en_US
&destinationString=London, GB
&effectiveStartDate=2017-09-23
&effectiveEndDate=2017-12-10

Example Response:

Responses for most popular locations will be relatively large. A selection of illustrative discounts from a raw response is provided below.

 [
  {
    "promoId": 220533591,
    "effectiveStartDate": "2017-08-12 12:00:00",
    "effectiveEndDate": "2017-10-09 23:59:00",
    "travelStartDate": "2017-08-12 00:00:00",
    "travelEndDate": "2017-10-09 00:00:00",
    "promoDescription": "Book now and save 14%",
    "promoType": "PERCENTAGE",
    "promoValue": "-0.1400",
    "nightOfStayApply": 0,
    "nightOfStayApplyRecurring": false,
    "stayMinimumDurationDays": 7,
    "rateType": "MerchantStandard|MerchantPackage",
    "hotelId": 562445
  },
  {
    "promoId": 220534054,
    "effectiveStartDate": "2017-08-12 12:15:00",
    "effectiveEndDate": "2017-09-30 23:59:00",
    "travelStartDate": "2017-08-21 00:00:00",
    "travelEndDate": "2017-10-09 00:00:00",
    "promoDescription": "Book early and save 10%",
    "promoType": "PERCENTAGE",
    "promoValue": "-0.1000",
    "advancePurchaseMinimumDays": 9,
    "nightOfStayApply": 0,
    "nightOfStayApplyRecurring": false,
    "stayMinimumDurationDays": 3,
    "rateType": "MerchantStandard|MerchantPackage",
    "hotelId": 562445
  },
  {
    "promoId": 220983880,
    "effectiveStartDate": "2017-09-02 10:36:00",
    "effectiveEndDate": "2017-11-12 23:59:00",
    "travelStartDate": "2017-12-01 00:00:00",
    "travelEndDate": "2017-12-12 00:00:00",
    "promoDescription": "Book early and save 50%",
    "promoType": "PERCENTAGE",
    "promoValue": "-0.5000",
    "advancePurchaseMinimumDays": 30,
    "nightOfStayApply": 0,
    "nightOfStayApplyRecurring": false,
    "stayMinimumDurationDays": 4,
    "rateType": "MerchantStandard|MerchantPackage",
    "hotelId": 562445
  },
  {
    "promoId": 214786730,
    "effectiveStartDate": "2015-12-16 15:21:00",
    "effectiveEndDate": "2017-12-17 23:59:00",
    "travelStartDate": "2017-01-15 00:00:00",
    "travelEndDate": "2017-12-29 00:00:00",
    "promoDescription": "Book early and save 12%",
    "promoType": "PERCENTAGE",
    "promoValue": "-0.1200",
    "excludedDates": [
      {
        "startDate": "2017-02-05 00:00:00",
        "endDate": "2017-02-20 00:00:00"
      },
      {
        "startDate": "2017-03-27 00:00:00",
        "endDate": "2017-03-27 00:00:00"
      },
      {
        "startDate": "2017-04-05 00:00:00",
        "endDate": "2017-04-08 00:00:00"
      },
      {
        "startDate": "2017-04-13 00:00:00",
        "endDate": "2017-04-13 00:00:00"
      },
      {
        "startDate": "2017-04-22 00:00:00",
        "endDate": "2017-04-25 00:00:00"
      },
      {
        "startDate": "2017-05-05 00:00:00",
        "endDate": "2017-05-06 00:00:00"
      },
      {
        "startDate": "2017-05-09 00:00:00",
        "endDate": "2017-05-11 00:00:00"
      },
      {
        "startDate": "2017-05-14 00:00:00",
        "endDate": "2017-05-15 00:00:00"
      },
      {
        "startDate": "2017-05-17 00:00:00",
        "endDate": "2017-05-17 00:00:00"
      },
      {
        "startDate": "2017-05-19 00:00:00",
        "endDate": "2017-05-21 00:00:00"
      },
      {
        "startDate": "2017-05-26 00:00:00",
        "endDate": "2017-05-29 00:00:00"
      },
      {
        "startDate": "2017-06-09 00:00:00",
        "endDate": "2017-06-11 00:00:00"
      },
      {
        "startDate": "2017-06-15 00:00:00",
        "endDate": "2017-07-15 00:00:00"
      },
      {
        "startDate": "2017-11-06 00:00:00",
        "endDate": "2017-11-06 00:00:00"
      },
      {
        "startDate": "2017-12-09 00:00:00",
        "endDate": "2017-12-10 00:00:00"
      }
    ],
    "advancePurchaseMinimumDays": 12,
    "nightOfStayApply": 0,
    "nightOfStayApplyRecurring": false,
    "stayMinimumDurationDays": 3,
    "rateType": "MerchantStandard|MerchantPackage",
    "hotelId": 284436,
    "partialExcludedDates": true
  },
  {
    "promoId": 218937620,
    "effectiveStartDate": "2017-06-06 00:00:00",
    "effectiveEndDate": "2017-10-31 23:59:00",
    "travelStartDate": "2017-06-06 00:00:00",
    "travelEndDate": "2017-10-31 00:00:00",
    "promoDescription": "Tonight only. Save 10%",
    "promoType": "PERCENTAGE",
    "promoValue": "-0.1000",
    "advancePurchaseMaximumDays": 0,
    "nightOfStayApply": 0,
    "nightOfStayApplyRecurring": false,
    "stayMinimumDurationDays": 1,
    "rateType": "MerchantStandard|MerchantPackage",
    "hotelId": 570763
  },
  {
    "promoId": 221336299,
    "effectiveStartDate": "2017-09-19 00:00:00",
    "effectiveEndDate": "2018-09-09 23:59:00",
    "travelStartDate": "2017-09-19 00:00:00",
    "travelEndDate": "2018-09-09 00:00:00",
    "promoDescription": "Special deal. Save 10%",
    "promoType": "PERCENTAGE",
    "promoValue": "-0.1000",
    "nightOfStayApply": 1,
    "nightOfStayApplyRecurring": true,
    "stayMinimumDurationDays": 1,
    "rateType": "MerchantPackage",
    "hotelId": 563526
  },
  {
    "promoId": 220219029,
    "effectiveStartDate": "2017-07-29 16:14:00",
    "effectiveEndDate": "2017-04-30 23:59:00",
    "travelStartDate": "2017-07-29 00:00:00",
    "travelEndDate": "2017-04-30 00:00:00",
    "promoDescription": "Book now and save 10%",
    "promoType": "PERCENTAGE",
    "promoValue": "-0.1000",
    "nightOfStayApply": 0,
    "nightOfStayApplyRecurring": false,
    "stayMinimumDurationDays": 2,
    "rateType": "MerchantStandard|MerchantPackage",
    "hotelId": 286214
  },
  {
    "promoId": 220219066,
    "effectiveStartDate": "2017-07-29 16:16:00",
    "effectiveEndDate": "2017-04-30 23:59:00",
    "travelStartDate": "2017-07-29 00:00:00",
    "travelEndDate": "2017-04-30 00:00:00",
    "promoDescription": "Book now and save 15%",
    "promoType": "PERCENTAGE",
    "promoValue": "-0.1500",
    "nightOfStayApply": 0,
    "nightOfStayApplyRecurring": false,
    "stayMinimumDurationDays": 6,
    "rateType": "MerchantStandard|MerchantPackage",
    "hotelId": 286214
  },
  {
    "promoId": 219698171,
    "effectiveStartDate": "2017-07-05 00:00:00",
    "effectiveEndDate": "2018-06-25 23:59:00",
    "travelStartDate": "2017-07-05 00:00:00",
    "travelEndDate": "2018-06-25 00:00:00",
    "promoDescription": "Mobile exclusive. Save 10%",
    "promoType": "PERCENTAGE",
    "promoValue": "-0.1000",
    "nightOfStayApply": 1,
    "nightOfStayApplyRecurring": true,
    "stayMinimumDurationDays": 1,
    "sortOrder": 171842,
    "rateType": "MerchantStandard|MerchantPackage",
    "siteType": "Mobile",
    "hotelId": 475923
  }
]