ReferencePromotions

createMultiNightDiscountPromotion mutation

Creates a multi-night promotion for extended lengths of stay, where the Nth night can be discounted. Its response, if successful, includes the promotion ID that can be used to update the promotion, if necessary.

Syntax

1createMultiNightDiscountPromotion(
2 propertyId: String!,
3 propertyIdSource: IdSource!,

Examples

This request creates a multi-night promotion for mobile users that offers a discount off every third night of the stay 10% for all travelers, 15% for members). The promotion is available to travelers who book between 26 Oct 2021 and 9 Jun 2022 and stay 3-28 days between 27 Oct 2021 to 25 Dec 2022. (Dates are inclusive.) The promotion is not valid for the blackout dates of 29 Oct - 2 Nov 2021.

1mutation {
2 createMultiNightDiscountPromotion(
3 propertyId: "1559",
4 propertyIdSource: EXPEDIA,
5 promotion: {
6 name: MULTI_NIGHT_PROMOTION,
7 status: ACTIVE,
8 category: DISCOUNT_PROMOTION,
9 code: "MultiNight BASIC",
10 restrictions: {
11 isMemberOnly: false,
12 isMobileUserOnly: true,
13 minLengthOfStay: 3,
14 maxLengthOfStay: 28,
15 minAdvanceBookingDays: 1,
16 maxAdvanceBookingDays: 500,
17 bookingLocalDateTimeFrom: "2021-10-26T00:00:00",
18 bookingLocalDateTimeTo: "2022-06-09T23:59:00",
19 travelDateFrom: "2021-10-27",
20 travelDateTo: "2022-12-25"
21 },
22 eligibleRatePlans: [
23 {
24 id: "19965"
25 }
26 ],
27 blackoutDates: [
28 {
29 travelDateFrom: "2021-10-29",
30 travelDateTo: "2021-11-02"
31 }
32 ],
33 discount: {
34 unit: PERCENT,
35 value: 10,
36 applicableNight: 3
37 isRecurring: true
38 memberOnlyAdditionalValue: 5
39 }
40 }
41 ) {
42 __typename
43 id
44 name
45 status
46 category
47 ... on DiscountPromotion {
48 code
49 restrictions {
50 isMemberOnly
51 isMobileUserOnly
52 minLengthOfStay
53 maxLengthOfStay
54 minAdvanceBookingDays
55 maxAdvanceBookingDays
56 bookingLocalDateTimeFrom
57 bookingLocalDateTimeTo
58 travelDateFrom
59 travelDateTo
60 sameDayBookingStartTime
61 }
62 eligibleRatePlans {
63 id
64 }
65 blackoutDates {
66 travelDateFrom
67 travelDateTo
68 }
69 discount {
70 __typename
71 type
72 unit
73 ... on MultiNightDiscount {
74 value
75 applicableNight
76 isRecurring
77 memberOnlyAdditionalValue
78 }
79 }
80 }
81 }
82}

Arguments

NameDescription

promotion

Required.

Additional arguments to specify details for creating the promotion.

Type: MultiNightDiscountPromotionCreateInput

propertyId

Required.

Property ID. If using an external ID (from your system, source is SUPPLIER), specify the ID in this format: system_ID/advertiser_ID/property_ID. If the source is EXPEDIA, this is the Expedia ID (EID).

Type: String

propertyIdSource

Required.

Source of the ID.

Type: IdSource

Types


Name
Type
BlackoutDateRange
Object
FieldDescription
travelDateFromNot nullable.

Travel start date for the exception (blackout) window in the YYYY-MM-DD format.

Type: LocalDate
travelDateToNot nullable.

Travel end date for the exception (blackout) window in the YYYY-MM-DD format.

Type: LocalDate
BlackoutDateRangeInput
InputObject

Information about the blackout date range.

FieldDescription
travelDateFromNot nullable.

Travel start date for the exception (blackout) window in the YYYY-MM-DD format.

Type: LocalDate
travelDateToNot nullable.

Travel end date for the exception (blackout) window in the YYYY-MM-DD format.

Type: LocalDate
Boolean
Boolean

The Boolean scalar type represents true or false.

DayOfWeekDiscount
Object

Day-of-week discounts enable partners to set discount percentages for specific days of the week. The day fields specify the discount for that day of the week for the travel dates (such as Mondays at 15%, Tuesdays at 10% discount).

FieldDescription
fridayNot nullable.
Type: Float
mondayNot nullable.
Type: Float
saturdayNot nullable.
Type: Float
sundayNot nullable.
Type: Float
thursdayNot nullable.
Type: Float
tuesdayNot nullable.
Type: Float
typeNot nullable.

Type of discount.

Type: DiscountType
unitNot nullable.

Unit of the discount. Currently, PERCENT is supported when creating or updating a discount. AMOUNT is supported for queries only.

Type: DiscountUnit
wednesdayNot nullable.
Type: Float
Discount
Interface

Implemented by

FieldDescription
typeNot nullable.

Type of the discount.

Type: DiscountType
unitNot nullable.

Unit of the discount.

Type: DiscountUnit
DiscountPromotion
Object
FieldDescription
blackoutDates

Exception (blackout) dates for which the promotion should NOT apply. This field is only returned when querying for a single promotion (by specifying the promotion ID).

Type: Array of non nullable BlackoutDateRange
categoryNot nullable.

Category of the promotion. Currently, only DISCOUNT_PROMOTION is supported (such as Priced Promotions).

Type: PromotionCategory
codeNot nullable.

Promotion code that travelers will use to apply the promotion. This field is returned in our booking APIs if a reservation is created for a product that has an active promotion. It is returned in PromotionCode for the Booking Notification API and in promoName for Booking Retrieval API. Note that only these characters are supported: ​​a-z, A-Z, 0-9, ., ,, ', :, !, ?, $, %, (, ), /, -, and space.

Type: String
discount

Detail of the discount being applied on the promotion.

Type: Discount
eligibleRatePlansNot nullable.

Rate plans for which this promotion is applicable.

Type: Array of non nullable EligibleRatePlan
idNot nullable.

ID of the promotion stored in the Expedia platform.

Type: ID
isContractedPromotion

Whether the promotion is negotiated. (Negotiated promotions cannot be updated.)

Type: Boolean
nameNot nullable.

Name of the promotion.

Type: PromotionName
restrictions

List of restrictions that can be applied to these promotions.

Type: Restrictions
sellStatus

Whether the promotion is currently bookable based on the its reservation date/time range. This field is supported in queries only. All dates and times are relative to the property’s time zone. The promotion may still be unavailable due to other restrictions. At the time of querying, if the promotion's bookingLocalDateTimeFrom and bookingLocalDateTimeTo values are in the past but the travelDateFrom and travelDateTo values are in the future, the promotion is considered expired because the promotion can no longer be made available.

Type: PromotionSellStatus
statusNot nullable.

Status of the promotion.

Type: PromotionStatus
DiscountType
Enum

Discount type values.

NameDescription
DAY_OF_WEEK_DISCOUNT

Discount that is applicable for specific days of the week within the travel window.

MULTI_NIGHT_DISCOUNT

Discount that is applied to multi-night stays.

SINGLE_DISCOUNT

A single discount.

DiscountUnit
Enum
NameDescription
PERCENT

Percentage discount for the promotion.

AMOUNT

Amount-based discount for the promotion.

EligibleRatePlan
Object
FieldDescription
idNot nullable.

ID of the rate plan stored in the Expedia platform.

Type: ID
EligibleRatePlanInput
InputObject
FieldDescription
idNot nullable.

ID of the rate plan stored in the Expedia platform. Specify the ID as an integer-only value (irrespective of the rate plan’s business model). We will map the ID to all business models that are applicable to the rate plan.

Type: ID
Float
Float

The Float scalar type represents signed double-precision fractional values as specified by IEEE 754.

ID
ID

The ID scalar type represents a unique identifier, often used to refetch an object or as key for a cache. The ID type appears in a JSON response as a String; however, it is not intended to be human-readable. When expected as an input type, any string (such as "4") or integer (such as 4) input value will be accepted as an ID.

IdSource
Enum

Source of a given ID.

NameDescription
EXPEDIA

Expedia is the source of the ID.

SUPPLIER

Connectivity provider or lodging partner is the source of the ID. This value is not supported for use in promotions.

VRBO

Vrbo (HomeAway) is the source of the ID. This value cannot be used as an argument value, and it is not supported for use in promotions.

Int
Int

The Int scalar type represents non-fractional signed whole numeric values. Int can represent values between -(2^31) and 2^31 - 1.

LocalDate
LocalDate

A type representing a date in ISO 8601 format: YYYY-MM-DD (such as 2007-12-03).

LocalDateTime
LocalDateTime

A type representing a date and time (such as 2007-12-03T10:15:30).

LocalTime
LocalTime

A type representing a time in this format: HH:mm:ss or HH:mm (such as 10:15:30 or 10:15).

MultiNightDiscount
Object

Multi-night discounts offer percentage-based discounts for applicable nights (such as 15% off a third night).

FieldDescription
applicableNightNot nullable.

Value of the applicable night to which the discount is applied. Permitted values are 2 to 28.

Type: Int
isRecurring

Whether the discount applied on the applicable night is recurring. For example, if applicableNight is set to 3 and isRecurring is set to true, the discount will be applied to the third, sixth, ninth nights (and so on).

Type: Boolean
memberOnlyAdditionalValue

Additional discount that is added to value for members only. For example, if value is 10, unit is PERCENT, and memberOnlyAdditionalValue is 5, members are offered 15 percent off.

Type: Float
typeNot nullable.

Type of discount.

Type: DiscountType
unitNot nullable.

Unit of the discount. Currently, PERCENT is supported when creating or updating a discount. AMOUNT is supported for queries only.

Type: DiscountUnit
valueNot nullable.

Value of the discount applied.

Type: Float
MultiNightDiscountCreateInput
InputObject
FieldDescription
applicableNightNot nullable.

Value of the applicable night to which the discount is applied. Permitted values are 2 to 28.

Type: Int
isRecurring

Whether the discount is applied to consecutive applicable nights. For example, if applicableNight is set to 3 and isRecurring is set to true, the discount will be applied to the third, sixth, ninth nights (and so on).

Type: Boolean
memberOnlyAdditionalValue

Additional discount that is added to value for members only. For example, if value is 10, unit is PERCENT, and memberOnlyAdditionalValue is 5, members are offered 15 percent off.

Type: Float
unitNot nullable.

Unit of the discount. Currently, only PERCENT is supported.

Type: DiscountUnit
valueNot nullable.

Value of the discount applied.

Type: Float
MultiNightDiscountPromotionCreateInput
InputObject
FieldDescription
blackoutDatesNot nullable.

Exception (blackout) dates for which the promotion should NOT apply. If you do not want to specify blackout dates, specify an empty array here.

Type: Array of non nullable BlackoutDateRangeInput
categoryNot nullable.

Category of the promotion.

Type: PromotionCategory
codeNot nullable.

Promotion code that travelers will use to apply the promotion. This field is returned in PromotionCode for the Booking Notification API and in promoName for Booking Retrieval API if a reservation is created for a product that has an active promotion.

Up to 80 characters are supported by the Booking Retrieval API, and up to 32 characters are supported by the Booking Notification API. Only these characters are supported: ​​a-z, A-Z, 0-9, / (forward slash), . (period), , (comma), ' (single quote), : (colon), ! (exclamation point), ? (question mark), $ (dollar sign), % (percent sign), ( (open parenthesis), ) (closed parenthesis), \ (backslash), - (dash), and space.

Type: String
discountNot nullable.

Details of the actual discount being applied on the promotion.

Type: MultiNightDiscountCreateInput
eligibleRatePlansNot nullable.

Rate plans to which this promotion is applicable.

Type: Array of non nullable EligibleRatePlanInput
nameNot nullable.

Name of the promotion. For a multi-night discount, specify MULTI_NIGHT_PROMOTION.

Type: PromotionName
restrictionsNot nullable.

List of restrictions that can be applied to the promotion.

Type: RestrictionsCreateInput
statusNot nullable.

Status of the promotion.

Type: PromotionStatus
Promotion
Interface

Implemented by

FieldDescription
categoryNot nullable.

Category of the promotion. Currently, only DISCOUNT_PROMOTION is supported (such as Priced Promotions).

Type: PromotionCategory
idNot nullable.

ID of the promotion stored in the Expedia platform.

Type: ID
isContractedPromotion

Whether the promotion is negotiated. (Negotiated promotions cannot be updated.)

Type: Boolean
nameNot nullable.

Name of the promotion.

Type: PromotionName
sellStatus

Whether the promotion is currently bookable based on the its reservation date/time range. This field is supported in queries only. All dates and times are relative to the property’s time zone. The promotion may still be unavailable due to other restrictions. At the time of querying, if the promotion's bookingLocalDateTimeFrom and bookingLocalDateTimeTo values are in the past but the travelDateFrom and travelDateTo values are in the future, the promotion is considered expired because the promotion can no longer be made available.

Type: PromotionSellStatus
statusNot nullable.

Status of the promotion.

Type: PromotionStatus
PromotionCategory
Enum
NameDescription
DISCOUNT_PROMOTION

Priced (discount) promotion. That is, the traveler benefit here is monetary savings via promotions.

PromotionName
Enum
NameDescription
BASIC_PROMOTION

Flexible offer with restrictions defined by the connectivity or lodging partner. You can specify this value when creating or updating single and day-of-week discounts.

EARLY_BOOKING_PROMOTION

Discount offered to travelers who want to book early. You can specify this value when creating or updating single and day-of-week discounts only.

MULTI_NIGHT_PROMOTION

Multi-night discount that offers a percentage-based discount for applicable nights. You can specify this value when creating or updating multi-night discounts only.

SAME_DAY_PROMOTION

Discount offered to attract last-minute travelers by setting up a recurring deal when the travel date is the same as the booking date. You can specify this value when creating or updating single discounts only.

PromotionSellStatus
Enum

Values to indicate whether a promotion is currently bookable based on the its reservation date/time range.

NameDescription
EXPIRED

Promotion cannot be booked because today’s date is after the promotion's bookingLocalDateTimeTo.

CURRENT

Promotion can be booked because today’s date is between the promotion's bookingLocalDateTimeFrom and .bookingLocalDateTimeTo.

FUTURE

Promotion cannot be booked yet because today's date is before the promotion's bookingLocalDateTimeFrom. However, this promotion will become available to book in the future.

PromotionStatus
Enum
NameDescription
ACTIVE
INACTIVE
Restrictions
Object
FieldDescription
bookingLocalDateTimeFrom

Beginning of the date range (inclusive) when the reservation can be made in order for this promotion to be applicable. Format is YYYY-MM-DDThh:mm:ss, in the property’s local time zone.

Type: LocalDateTime
bookingLocalDateTimeTo

End of the date range (inclusive) when the reservation can be made in order for this promotion to be applicable. Format is YYYY-MM-DDThh:mm:ss, in the property’s local time zone.

Type: LocalDateTime
isMemberOnly

Whether a promotion is applicable only to members shopping on Expedia. The default value for this field is false.

Note that member-only badging is not applied to member-only deals that are less than 10%.

Type: Boolean
isMobileUserOnly

Whether this promotion is applicable only to travelers booking on the mobile device. This field is returned when querying for a single promotion only (by specifying the promotion ID).

Type: Boolean
maxAdvanceBookingDays

Maximum number of days in advance of the reservation date for the promotion to be applicable.

Type: Int
maxLengthOfStay

Maximum duration of stay for which the promotion can be applicable. Maximum value is 28.

Type: Int
minAdvanceBookingDays

Minimum number of days in advance of the reservation date for the promotion to be applicable. The default value for this field is 0.

Type: Int
minLengthOfStay

Minimum duration of stay for which the promotion can be applicable.

Type: Int
sameDayBookingStartTime

Start time for the same day for which the promotion is applicable (in the property’s local time zone). Applicable only for SAME_DAY_PROMOTION.

Type: LocalTime
travelDateFrom

Beginning travel date for which this promotion is applicable in YYYY-MM-DD format.

Type: LocalDate
travelDateTo

End travel date for which this promotion is applicable in YYYY-MM-DD format.

Type: LocalDate
RestrictionsCreateInput
InputObject
FieldDescription
bookingLocalDateTimeFromNot nullable.

Beginning of the date range (inclusive) when the reservation can be made in order for this promotion to be applicable. Format is YYYY-MM-DDThh:mm:ss, in the property’s local time zone.

If you are creating a same-day promotion, the date in this field must be the same as travelDateFrom.

Type: LocalDateTime
bookingLocalDateTimeToNot nullable.

End of the date range (inclusive) when the reservation can be made in order for this promotion to be applicable. Format is YYYY-MM-DDThh:mm:ss, in the property’s local time zone.

If the dates are the same in bookingLocalDateTimeFrom and bookingLocalDateTimeTo, make sure the timestamp in this field is at least one minute later than in bookingLocalDateTimeFrom.

If you are creating a same-day promotion, the date in this field must be the same as travelDateTo.

To create a promotion with no end date ("evergreen"), specify 2079-06-06T23:59:00 for this field's value and specify 2079-06-06 for travelDateTo.

Type: LocalDateTime
isMemberOnly

Whether a promotion is applicable only to members shopping on Expedia. The default value for this field is false.

Note that member-only badging is not applied to member-only deals that are less than 10%.

Type: Boolean
isMobileUserOnly

Whether this promotion is applicable only to travelers booking on the mobile device. The default value for this field is false.

Type: Boolean
maxAdvanceBookingDays

Maximum number of days in advance the reservation date for the promotion to be applicable. The default value for this field is 500. If you are creating a same-day promotion, set it to 0.

Type: Int
maxLengthOfStay

Maximum duration of stay for which the promotion can be applicable. The maximum value is 28. For multi-night discounts, this value cannot be less than applicableNight in MultiNightDiscount. The default value for this field is 28.

Type: Int
minAdvanceBookingDays

Minimum number of days in advance of the reservation date for the promotion to be applicable. The default value for this field is 0. If you are creating a same-day promotion, either omit this field or set it to 0.

Type: Int
minLengthOfStay

Minimum duration of stay (1-28) for which the promotion can be applicable. The default value for this field is 1.

Type: Int
sameDayBookingStartTime

Start time for the same day for which the promotion is applicable (in the property’s local time zone). This field is mandatory for same-day promotions (and only applies to same-day promotions).

Type: LocalTime
travelDateFromNot nullable.

Beginning of the stay dates (inclusive) for which this promotion is applicable, in YYYY-MM-DD format. This date cannot be before bookingLocalDateTimeFrom.

If you are creating a same-day promotion, this date and travelDateTo cannot be more than 364 days apart, and this date must be the same as that of bookingLocalDateTimeFrom.

Type: LocalDate
travelDateToNot nullable.

End of the stay dates (inclusive) for which this promotion is applicable, in YYYY-MM-DD format. This date cannot be before bookingLocalDateTimeTo.

If you are creating a same-day promotion, this date and travelDateFrom cannot be more than 364 days apart, and this date must be the same as that of bookingLocalDateTimeTo.

To create a promotion with no end date ("evergreen"), specify 2079-06-06 for this field's value and specify 2079-06-06T23:59:00 for bookingLocaleDateTimeTo.

Type: LocalDate
SingleDiscount
Object

Discount that offers a percentage off a rate (such as 15% off).

FieldDescription
memberOnlyAdditionalValue

Value of member-only discount applied. For example, if the regular discount is 10% and memberOnlyAdditionalValue is set to 5, a member will receive a 15% discount and a non-member will receive a 10% discount.

Type: Float
typeNot nullable.

Type of discount.

Type: DiscountType
unitNot nullable.

Unit of the discount. Currently, PERCENT is supported when creating or updating a discount. AMOUNT is supported for queries only.

Type: DiscountUnit
valueNot nullable.

Value of the discount applied.

Type: Float
String
String

The String scalar type represents textual data, represented as UTF-8 character sequences. The String type is most often used by GraphQL to represent free-form human-readable text.