Root query that retrieves information about a single property, including its name, IDs, status, location, unit information, reservations, and promotions. This is the schema's entry point for all property-related queries.
Note: This query provides access to various capabilities, such as promotions and reservations. However, you must be granted access to each capability before you can code to it. Contact your Technical Relationship Manager if you are interested in more than property status.
Use the interactive GraphQL explorer in the following sections to run a sample query. A test property ID is passed into the explorer; its test data is returned. The GraphQL explorer will help you get comfortable with the GraphQL:
For each query, a test property ID is passed into the explorer; its test data is returned.
Click Run Query to execute the query in the explorer on the page. You can modify the query to retrieve the desired fields, and the explorer provides a list of fields when you start typing.
Click API Explorer to launch the full explorer in another tab/window, which provides syntax highlighting, schema introspection, real-time error highlighting, and auto-completion, among other things.
Additional examples are available on the Intro page.
Top-level property status derived from supporting checkpoints. Use this to
determine if the property is inactive for reasons that are not content related.
Compliance status according to the local jurisdiction's regulatory requirements.
This object returns a non-compliant status for mandatory requirements only. If
invalid information is provided for an optional regulatory requirement, or if
regulatory information is set in a jurisdiction that does not require regulatory
information, status: COMPLIANT will be returned. However, for optional
requirements, a warning is returned in the warningStatus field when the data
is set (using the updateUnitRegistration mutation).
Field
Description
reason
Not nullable.
Reason why the unit is in or out of compliance. The label used for the
registration number in this string comes from the numberTypeLabel field on
the RegistrationNumberRequirement type.
A date-time string at UTC, such as 2007-12-03T10:15:30Z, compliant with the
date-time format outlined in section 5.6 of the RFC 3339 profile of the ISO
8601 standard for representation of dates and times using the Gregorian calendar.
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).
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).
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.
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.
Whether registration is required by the jurisdiction. This is based on the geo
code of the property’s address, not the property type (for example,
registration may be required for a hotel but not a vacation rental in a
specific area).
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.
Reason why the reservation cannot be reconciled. Values include the following:
GUEST_REQUESTED_CANCEL - Traveler cancelled the reservation
NO_SHOW - Traveler was a no-show
MODIFY_DATES_AMOUNTS - There was a difference in the booking price when the
lodging partner charged the traveler (for example, because an extra night was
added at the time of stay)
Property type for the district. This type provides what’s possible for the
district. Then, qualifiedPropertyTypes indicates the type and subtype at the
unit level. If subtype is set for the property, you should use both type and subtype.
Field
Description
subtype
Legal property subtype, applicable for residences, such as primary home or
secondary home. (This field provides the value that is specified in the
registration:details:regulatorySubType field of the updateUnitRegistration mutation.)
Legal property type, such as hotel, bed and breakfast, residence, etc. (This
field provides the value that is specified in the
registration:details:regulatoryType field of the updateUnitRegistration mutation.)
List of messages in the message thread. You can specify these arguments:
limit (type: Int), which enables you to limit the number of messages retrieved (up to 50).
cursor (type: String), which is the cursor value for this edge.
orderBy (type: MessageThreadMessagesOrderByInput), which provides the sort
order of results. If not specified, messages are sorted in ascending order
(from oldest to newest) based on the creation date.
For properties onboarded onto Expedia, this is the Expedia reservation ID. For
properties onboarded onto Vrbo, this is the Vrbo internal reservation UUID.
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).
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.
Status of the response. The following values may be returned: APPROVED,
BEFORE_SUBMITTED_FOR_MODERATION, QUEUED_FOR_LANG_DETECT, REJECTED,
BEFORE_SUBMITTED_TO_ES, SUBMITTED, and REMOVEDBYCLIENT.
Be aware that reviews may be pending for up to 14 days depending on lodging partner actions and review content.
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.
Priced (discount) promotion. That is, the traveler benefit here is monetary savings via promotions.
PromotionName
Enum
Name
Description
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.
Values to indicate whether a promotion is currently bookable based on the its reservation date/time range.
Name
Description
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
Name
Description
ACTIVE
INACTIVE
Property
Object
Representation of a physical property, including its units, reservations, and promotions.
Field
Description
activeStatus
Status of the property on all platforms and property content. It indicates whether the property is live or not.
Aggregated (average) ratings for the property. You can filter the results by
brand name (website) using the filters argument
(AggregatedReviewsFiltersInput input type).
Regulatory requirements and parameters that apply to the property. You can
specify the locale argument to retrieve the results in a specific language;
specify the four-letter ISO code for language. Use a four-character code that
indicates language and region, such as fr_FR for French in France.
Traveler-facing listing URLs of the property on the requested domains. Specify
the domains argument (type: String!) and provide one or both of these
values: expedia.com, vrbo.com. If you specify expedia.com, the API returns a
listing URL if the property exists an Expedia site. If you specify vrbo.com,
a listing URL is returned if the property exists on a Vrbo site.
List of message threads for a property. You can specify these arguments:
limit (type: Int), which specifies the number of message threads to retrieve (up to 10).
cursor (type: String), which is the cursor value for the page of results to retrieve.
filters (type: PropertyMessageThreadsFiltersInput!), which specifies the creation date range to use to filter results.
orderBy (type: ReviewsOrderBy), which provides the sort order of results.
If not specified, message threads are sorted in ascending order (from oldest
to newest) based on the creation date.
List of promotions that matches the specified arguments. You can specify these arguments:
filter (type: FiltersInput), which enables you to refine the promotions to
retrieve. Note that if you filter results by promotion ID, you cannot specify
addition filters.
pageSize (type: Int!), which is required and specifies the maximum number
of promotions on each page (up to 25) returned by the response. For example,
if there are 40 promotions on a property, you can retrieve two pages if this
argument is set to 25 (page 1 includes 25 promotions, page 2 includes 15 promotions).
after (type: String), which is the cursor from the previous query response
that marked the end of the previous page of results.
List of the property's reservations that match the specified arguments:
filter (type: ReservationFilterInput), which enables you to refine the
reservations to retrieve. If this argument is not specified, the query returns
all reservations for the property.
pageSize (type: Int!), which is required and specifies the maximum number
of reservations on each page (up to 25) returned by the response. For example,
if there are 40 reservations on a property, you can retrieve two pages if this
argument is set to 25 (page 1 includes 25 reservations, page 2 includes 15 reservations).
after (type: String), which is the cursor from the previous query response
that marked the end of the previous page of results.
Reviews provided by travelers for the property that match the specified arguments. You can specify these arguments:
filter (type: ReviewFilter), which provides additional arguments to filter the reviews that are returned by the query.
pageSize (type: Int!), which is required and specifies the maximum number
of reviews on each page (up to 100) returned by the response. For example, if
there are 15 reviews on a property, you can retrieve two pages if this
argument is set to 10 (page 1 includes 10 reviews, page 2 includes 5 reviews).
after (type: String), which is the cursor from the previous query response
that marked the end of the previous page of results.
orderBy (type: ReviewsOrderBy), which provides the sort order of results;
only one field should be specified. If not specified, reviews are sorted by
review creation dateTime.
Value of the rating. Allow values 1-5 (1 means terrible, 5 means excellent)
for properties on all Expedia sites except Hotels.com; allow values 1-10 for Hotels.com.
Note: Ratings are displayed using a 10-point scale on all Expedia sites; we
convert the 5-point scale to a 10-point scale. For example, a 4 is displayed
if a traveler submitted a 2 through this integration. To display equivalent
ratings on your site, you must perform this same conversion (to a 10-point
scale) after the review is collected.
Reason why the reservation can be reconciled. Values include the following:
GUEST_REQUESTED_CANCEL - Traveler cancelled the reservation
NO_SHOW - Traveler was a no-show
MODIFY_DATES_AMOUNTS - There was a difference in the booking price when the
lodging partner charged the traveler (for example, because an extra night was
added at the time of stay)
Checks the consistency of the information in our systems at the property level
to determine whether the registration information is sufficient to fulfill the
requirements of the property's district. We do not recommend including this
field in the query because it does not provide the true value for some properties.
If false is returned for a unit, you can use the Product API to identify
active units, though false may be returned for inactive units that have
incorrect regulatory information.
Compliance status according to the local jurisdiction's regulatory requirements.
This object returns a non-compliant status for mandatory requirements only. If
invalid information is provided for an optional regulatory requirement, or if
regulatory information is set in a jurisdiction that does not require
regulatory information, status: COMPLIANT will be returned. However, for
optional requirements, a warning is returned in the warningStatus field when
the data is set (using the updateUnitRegistration mutation).
Note: We strongly recommend that you include this field in your
implementation even though it is nullable. This field provides an audit trail
for reporting purposes.
Registration requirement type. (This field provides the value that must be
specified in the
registration:details:registrationRecords:registrationNumberType field of the
updateUnitRegistration mutation.)
Category values for regulatory categories. Most of jurisdiction districts only
allow for two categories, HOTEL and VACATION_RENTAL, though more values
GRAPHQL_VALIDATION_FAILED are provided to satisfy local government requirements.
Name
Description
HOTEL
BED_AND_BREAKFAST
HOTEL_OR_BNB
PRIMARY_HOME
PRIMARY_HOME_WITH_EXCEPTION
SECONDARY_HOME
VACATION_RENTAL
LONG_TERM_ONLY
SHORT_TERM_RENTAL
MINPAKU
SIMPLE_LODGING
EVENT
SPECIAL
NO_LICENSE
HOTEL_RYOKAN
RYOKAN
PRIMARY_OR_SECONDARY
TRANSIENT_OCCUPANCY_RESIDENTIAL_STRUCTURE
MOTEL
HOME_SHARING_NUMBER
VACATION_RENTAL_OTHER
HOSTEL
CAMPING_SITES
RURAL_LODGING
APARTMENT_HOTEL
RegulatoryStatus
Enum
Values for regulatory status.
Name
Description
COMPLIANT
Unit meets all regulatory requirements.
COMPLIANT_ACTION_NEEDED
Unit meets requirements to remain listed but will need to provide
additional information (or other action) in order to not be delisted.
NOT_COMPLIANT
Unit does not meet all regulatory requirements and cannot be shown.
NOT_COMPLIANT_ACTION_NEEDED
Unit is not compliant, but enforcement hasn't started yet. Action should be
taken for the listing to be compliant after enforcement date.
NOT_ALLOWED
Platform does not allow units in this jurisdiction; no actions from partner can affect status.
NONE
Unit's status cannot be determined.
Reservation
Object
Reservation details.
Field
Description
accessibilityText
Accessibility requests made by the guest for the reservation. We strongly
recommend that you include this field in your implementation.
Timestamp of when the reservation was created (format: yyyy-mm-ddThh:mm:ssTZD,
where TZD is a time zone designator in the form +/-hh:mm). Compare this value
to that of lastUpdatedDateTime to determine if a reservation has been modified.
ID of message thread (conversation) associated with the reservation. This
requires implementation and certification of the messaging capability. If no
message threads exist for a reservation, null is returned.
ID of the rate/rate plan and the source of the ID. In the response, when
idSource is set to SUPPLIER, the id field returns the same value as
returned by the existing booking APIs. However, for Hotel Collect properties,
the A- prefix is no longer added to the source value and the A suffix is no
longer appended to the rate ID as was done by the booking APIs.
Source of the reservation. Refer to Booking sources
for the list of possible values (though \"A-\" is not included in Hotel
Collect sources returned by this API).
Value add promotion(s) used to book the reservation. If a value add promotion
(VAP) was not used, an empty array is returned. We strongly recommend that you
include this field in your implementation.
For properties onboarded onto Expedia, this is the partner’s confirmation ID for the booking.
For properties onboarded onto Vrbo, this is the partner’s supplier ID. This ID
may be prefixed with “HA-” to indicate a platform reservation. Two scenarios
account for this:
If the lodging partner was a former platform PM and has upcoming
reservations that were made prior to their conversion to integrated lodging partner.
The lodging partner uses using a third-party calendar sync application, such
as Hospitable, which may create platform bookings. To resolve this, the
partner must disable the third-party application.
Date and time when the reservation was last updated. Compare this value to
that of creationDateTime to determine if a reservation has been
modified.Example:
Resolution status values, which indicate the API's ability to determine if a checkpoint is fulfilled.
Name
Description
RESOLVED
Checkpoint was successfully evaluated.
UNRESOLVED_PROPERTY_NOT_PROVISIONED
API could not determine a fulfilled value because the property is missing from
our internal system. Retry the operation; this is typically caused by a
transient internal error. If the error persists, contact your Technical
Relationship Manager.
UNRESOLVED_CHECKPOINT_SYSTEM_UNAVAILABLE
API could not determine a fulfilled value because of an internal problem.
Retry the operation; this is typically caused by a transient internal error.
If the error persists, contact your Technical Relationship Manager.
Restrictions
Object
Field
Description
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.
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.
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).
Checkpoint is fulfilled (fulfilled equal to true).
FAILED
Checkpoint is not fulfilled (fulfilled equal to false). This means the
content requirement has not been met. Verify that content is included in the
Listings integration file for processing.
UNRESOLVED
API could not determine the checkpoint's fulfilled value (resolutionStatus
equal to UNRESOLVED_*). Retry the operation; this is typically caused by a
transient internal error. If the error persists, contact your Technical
Relationship Manager.
Review
Object
Review content, including its source, localized text, and reservation information to which it pertains.
Discount that offers a percentage off a rate (such as 15% off).
Field
Description
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.
Sort results in ascending order (oldest to newest).
DESC
Sort results in descending order (newest to oldest).
StatusCheckpoint
Object
Information about a property's or unit's content requirements (checkpoints).
Field
Description
checkpointByName
Checkpoint specified by name. This field requires an argument:
checkpointByName(name: String!). Refer to the name field below for the
list of values that can be used.
Content requirement (checkpoint) that determines overall status. This field
provides an optional argument, checkpoints(filter: CheckpointFilterInput),
which enables you to filter the returned checkpoints by result. Refer to the
CheckpointFilterInput type for details.
Whether the checkpoint conditions were satisfied. If false, the content
requirement has not been met; verify that content is included in the Listings
integration file for processing.
Ordered list of parent checkpoint nodes in the status calculation tree. If you
need to reconstruct the tree, discover added context about a checkpoint, or
make use of the checkpointByName field, then this information may be useful.
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.
Nightly rate with no additional taxes, fees, or surcharges.
EXTRA_GUEST_FEES
Fees that are included in the price that guests see when booking. They are
paid in advance for Expedia Collect reservations or upon arrival for Hotel
Collect reservations.
SERVICE_FEES
Fees that only apply to guests who make use of specific facilities or
services, such as resort fees, parking fees, or fees for rollaway beds.
RECONCILED_AMOUNT
Updated rate, which must be the commissionable value for the stay date.
Amounts for dates included in the original reservation cannot be modified to a
value of three times more than the commissionable rate applicable to that date.
SupplierLoyaltyPlanInfo
Object
Details about the frequent traveler reward program.
Values for a guest's travel purpose, to identify business bookings.
Name
Description
NONE
KNOWN_BUSINESS_VISIT
SUSPECTED_BUSINESS_VISIT
KNOWN_PERSONAL_VISIT
SUSPECTED_PERSONAL_VISIT
Unit
Object
Unit configuration.
Field
Description
activeStatus
Status of the unit for Vrbo properties only (indicates whether the unit is
live or not). To check the status of Expedia properties (rooms), use the
Product API as shown in this example.
Registration information for the unit or room type. You can specify the
locale argument to retrieve the results in a specific language; specify the
four-letter ISO code for language. Use a four-character code that indicates
language and region, such as fr_FR for French in France.