openapi: 3.2.0
info:
title: Omni, Powered by Engine Lodging Shopping Service API
description: Definitions for the Omni travel API.
version: 2.4.0
contact:
name: Omni API Support
url: https://omni.engine.com/
license:
name: Apache License Version 2.0
url: https://github.com/engine-public/engine-partner-api/blob/main/LICENSE
servers:
- url: https://partner-api.engine.com
tags:
- name: LodgingShoppingService
paths:
/shop/v1/lodging/availability:
post:
summary: Search for Availability at a given Property.
description: Finds availability for a given property, broken down by individual room type. RoomGroups describe the various rooms available to book. Offers describe the cheapest [OfferSummary] along various dimensions like refundability and loyalty eligible within the [RoomGroup].
operationId: LodgingShoppingService_FindAvailability
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1FindAvailabilityResponse'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
tags:
- LodgingShoppingService
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1FindAvailabilityRequest'
required: true
/shop/v1/lodging/best-offers:
post:
summary: Search for the Best Offer available for a set of Properties.
description: Identifies a set of candidate properties that match the provided criteria. Once the appropriate properties have been identified, the Best Offer available for each property is selected and augmented with the details of other available Offers.
operationId: LodgingShoppingService_FindBestOffers
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1FindBestOffersResponse'
'400':
description: Error details for gRPC Status of INVALID_ARGUMENT(3).
content:
application/json:
schema:
$ref: '#/components/schemas/v1FindBestOffersError'
default:
description: An unexpected error response.
content:
application/json:
schema:
$ref: '#/components/schemas/rpcStatus'
tags:
- LodgingShoppingService
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1FindBestOffersRequest'
required: true
components:
schemas:
v1FixedModel:
type: object
description: 'Details for a fixed pricing model.
Under this model, offers must be sold at the exact price quoted by Engine without markup.
The seller does not receive commission for offers indicated with this pricing model.
Compensation terms are defined exclusively by the seller''s agreement with Engine.
Refer to your agreement or contact your Engine sales support team for questions.'
title: Common_FixedModel_v1
shoplodgingservicev1ResponsiveProperty:
type: object
properties:
property:
$ref: '#/components/schemas/lodgingProperty'
description: The details of the returned property.
distance:
$ref: '#/components/schemas/v1Distance'
description: The distance from the center point of the search area, if appropriate.
description: A Property that is responsive to the current shopping search.
title: Shop_Lodging_Service_ResponsiveProperty_v1
v1AnonymousTraveler:
type: object
properties:
adult:
$ref: '#/components/schemas/v1AnonymousAdult'
child:
$ref: '#/components/schemas/v1AnonymousChild'
description: A traveler whose personal details have not yet been collected.
title: Common_AnonymousTraveler_v1
lodgingExternalCatalogIdentifierList:
type: object
properties:
identifiers:
type: array
items:
type: string
description: 'Supplier property identifiers for the associated catalog key.
May contain multiple identifiers when more than one external record is mapped to the Engine record.'
description: A list of external catalog identifiers for a single catalog key.
title: Content_ExternalCatalogIdentifierList_v1
v1FindBestOffersResponse:
type: object
properties:
offers:
type: array
items:
type: object
$ref: '#/components/schemas/v1PropertyBestOffer'
description: The full list of offers responsive your search.
description: The results of a [LodgingShoppingService.FindBestOffers] search.
title: Shop_Lodging_Service_FindBestOffersResponse_v1
v1RoomGroup:
type: object
properties:
roomDescription:
$ref: '#/components/schemas/v1RoomDescription'
description: 'A description of the rooms for which the Offer applies.
For example, "Standard 1 King Bed", "Standard 2 Queen Beds", or "Suite 1 King Bed".'
offers:
type: array
items:
type: object
$ref: '#/components/schemas/v1Offer'
description: A list of bookable Offers for the room.
description: A grouping of bookable Offers, collected by the [RoomDescription] to which they apply.
title: Shop_Lodging_Service_RoomGroup_v1
lodgingLodgingAmenityCode:
type: string
enum:
- LODGING_AMENITY_CODE_UNKNOWN
- LODGING_AMENITY_CODE_AIR_CONDITIONING
- LODGING_AMENITY_CODE_DINING
- LODGING_AMENITY_CODE_DRY_CLEANING
- LODGING_AMENITY_CODE_ELECTRIC_VEHICLE_CHARGING
- LODGING_AMENITY_CODE_FITNESS_CENTER
- LODGING_AMENITY_CODE_FREE_AIRPORT_SHUTTLE
- LODGING_AMENITY_CODE_FREE_BREAKFAST
- LODGING_AMENITY_CODE_FREE_PARKING
- LODGING_AMENITY_CODE_FULL_KITCHEN
- LODGING_AMENITY_CODE_HIGH_SPEED_INTERNET
- LODGING_AMENITY_CODE_KITCHENETTE
- LODGING_AMENITY_CODE_MEETING_SPACE
- LODGING_AMENITY_CODE_PET_FRIENDLY
- LODGING_AMENITY_CODE_SPA
- LODGING_AMENITY_CODE_SWIMMING_POOL
- LODGING_AMENITY_CODE_TRUCK_PARKING
default: LODGING_AMENITY_CODE_UNKNOWN
title: Content_LodgingAmenityCode_v1
v1Conditions:
type: object
properties:
modifyConditions:
type: array
items:
type: object
$ref: '#/components/schemas/v1Condition'
description: 'Conditions that apply to modification of a [BookingDetails].
If no modify_conditions exist, the [BookingDetails] may not be modified.'
cancelConditions:
type: array
items:
type: object
$ref: '#/components/schemas/v1Condition'
description: 'Conditions that apply to cancellation of a [BookingDetails].
If no cancel_conditions exist, the [BookingDetails] may not be canceled.'
description: Conditions that describe the availability, penalty, and timing constraints on modification to a booked item.
title: Common_Conditions_v1
v1Price:
type: object
properties:
subTotal:
$ref: '#/components/schemas/v1CurrencyValue'
description: 'The sum total for the booking excluding taxes and fees.
The subtotal includes all [Price.line_items].'
total:
$ref: '#/components/schemas/v1CurrencyValue'
description: 'The full liability to purchase the item.
This is not necessarily the amount due at time of booking due to discounts, incentives, or postpaid items.'
taxes:
type: array
items:
type: object
$ref: '#/components/schemas/v1Surcharge'
description: 'Any taxes to be collected at time of payment.
This field is deprecated. Use [Price.taxes_and_fees] instead.'
fees:
type: array
items:
type: object
$ref: '#/components/schemas/v1Surcharge'
description: 'Any fees applied to the item or service.
This field is deprecated. Use [Price.taxes_and_fees] instead.'
base:
$ref: '#/components/schemas/v1CurrencyValue'
title: 'The cost of the main item or service in the booking, less upgrades or additional services, fees, and taxes.
The base is equivalent to: [Price.sub_total] - sum([Price.line_items])'
lineItems:
type: array
items:
type: object
$ref: '#/components/schemas/v1PriceLineItem'
description: 'Additional upgrades to an item or service added during the shopping experience.
Line items are represented in the [Price.sub_total].'
taxesAndFeesTotal:
$ref: '#/components/schemas/v1CurrencyValue'
description: The sum of all individual [Price.taxes] and [Price.fees].
strike:
$ref: '#/components/schemas/v1CurrencyValue'
description: A representative market price for the item or service without any discounts applied.
totalDueNow:
$ref: '#/components/schemas/v1CurrencyValue'
description: The total amount due at time of booking.
totalDueLater:
$ref: '#/components/schemas/v1CurrencyValue'
description: The total amount due at the time of the travel event.
taxesAndFees:
type: array
items:
type: object
$ref: '#/components/schemas/v1Surcharge'
description: Any taxes and fees to be collected at time of payment. This includes all taxes and fees due at time of booking.
description: The details of the cost of an item or service.
title: Common_Price_v1
v1RoomDescription:
type: object
properties:
title:
type: string
description: 'The title of a room.
For example, "Standard 1 King Bed", or "Suite 1 King Bed", "The Canary Suite".'
description:
type: string
title: 'A textual marketing description of the room.
For example, "SKYLINE VIEW KING ROOM -CITY OR RIVER VIEW 1 KING -430 SQF"'
beds:
type: array
items:
type: object
$ref: '#/components/schemas/v1Bedding'
description: The available bedding for the room.
photos:
type: array
items:
type: string
description: URIs to photos of this room.
amenities:
type: array
items:
type: object
$ref: '#/components/schemas/lodgingRoomAmenity'
description: A list of amenities that are available in the room.
description: Generalized details of the room to which an Offer applies.
title: Shop_Lodging_RoomDescription_v1
v1EmailType:
type: string
enum:
- EMAIL_TYPE_UNSPECIFIED
- EMAIL_TYPE_GENERAL
- EMAIL_TYPE_BILLING
- EMAIL_TYPE_RESERVATIONS
- EMAIL_TYPE_SUPPORT
default: EMAIL_TYPE_UNSPECIFIED
description: "Describes the type of an email contact.\n\n - EMAIL_TYPE_UNSPECIFIED: Unspecified email type.\n - EMAIL_TYPE_GENERAL: General contact email.\n - EMAIL_TYPE_BILLING: Billing-related email.\n - EMAIL_TYPE_RESERVATIONS: Reservations and booking email.\n - EMAIL_TYPE_SUPPORT: Customer support email."
title: Common_EmailType_v1
v1PerUnitPrice:
type: object
properties:
key:
type: string
description: 'A key to distinguish which unit is represented by this price.
For example, which date, or which passenger.'
unit:
type: string
description: 'The type of unit.
For example, "night" or "person".'
price:
$ref: '#/components/schemas/v1Price'
description: The cost for this unit.
description: 'A price representing the cost of a single unit in a multi-unit breakdown.
For example, price per night.'
title: Common_PerUnitPrice_v1
v1FindAvailabilityRequest:
type: object
properties:
continuationToken:
type: string
description: 'A [BestOffer.continuation_token].
Passing a continuation_token allows you to continue the shopping flow from a BestOffers search with the necessary search context preserved.'
singleProperty:
$ref: '#/components/schemas/v1FindAvailabilityPropertyRequest'
description: A request to find availability for a [Property] directly, skipping the BestOffers search.
title: Shop_Lodging_Service_FindAvailabilityRequest_v1
v1Image:
type: object
properties:
uri:
type: string
title: 'The URI of the [Image].
For example, "https://example.com/image.jpg"'
description: Represents an [Image] with optional metadata.
title: Common_Image_v1
v1AnonymousAdult:
type: object
description: An adult traveler whose personal details have not yet been collected.
title: Common_AnonymousAdult_v1
v1ConditionEventType:
type: string
enum:
- CONDITION_EVENT_TYPE_UNKNOWN
- CONDITION_EVENT_TYPE_DEPARTURE
- CONDITION_EVENT_TYPE_CHECKIN
default: CONDITION_EVENT_TYPE_UNKNOWN
description: Events that affect the availability of an action when a specific timestamp is not available.
title: Common_ConditionEventType_v1
v1ContactEmail:
type: object
properties:
emailAddress:
type: string
description: The email address.
emailType:
$ref: '#/components/schemas/v1EmailType'
description: Optional type of email contact.
description: Contact email information.
title: Common_ContactEmail_v1
v1PriceLineItem:
type: object
properties:
description:
type: string
description: A textual description of the individual charge.
price:
$ref: '#/components/schemas/v1CurrencyValue'
description: The price of this line item.
group:
type: string
description: 'Optionally, an identifier to group line items for visual display.
For example, "Extras" or "Loyalty Benefits".'
description: A individual service or upgrade added to an item during the shopping experience.
title: Common_PriceLineItem_v1
v1OfferSummary:
type: object
properties:
propertyId:
type: string
description: The Engine identifier for the Property to which this Offer belongs.
description:
type: string
description: A textual description of the Offer.
price:
$ref: '#/components/schemas/v1PriceWithPerUnit'
description: 'The pricing details for the Offer.
This price indicates the amount owed to Engine at the time of booking.
Refer to [OfferSummary.sell_type] for details on how the offer may be priced to the customer.'
offerAmenities:
$ref: '#/components/schemas/v1OfferAmenities'
description: 'Amenities that may only apply to this Offer.
For example, some Offers may include parking.'
conditions:
$ref: '#/components/schemas/v1Conditions'
description: The conditions covering refundability and cancellation.
isLoyaltyEligible:
type: boolean
description: If true, this Offer may earn loyalty points.
isLoyaltyMembershipIdRequired:
type: boolean
description: If true, this offer requires a loyalty membership id to book.
rateData:
$ref: '#/components/schemas/v1RateData'
description: Optionally, if this offer represents a negotiated rate specifically configured for your credential, the details of that rate will be included here.
sellType:
$ref: '#/components/schemas/v1SellType'
description: 'The sell type for this offer.
Defines how the seller is compensated and the pricing guidelines for this offer.
See [SellType] for details on available model types and their pricing rules.'
description: A summary of the attributes available to a specific Offer.
title: Shop_Lodging_OfferSummary_v1
lodgingPropertyAmenity:
type: object
properties:
amenityName:
type: string
title: 'Amenity name describing a [Property] feature or service.
Examples: "Free WiFi", "Free Breakfast"'
amenityCode:
$ref: '#/components/schemas/lodgingLodgingAmenityCode'
description: 'Amenity code, providing an easily machine readable representation of a [Property] feature or
service, if mapped.'
description: '[Property] amenity containing name for property features and services.'
title: Content_PropertyAmenity_v1
shoplodgingservicev1RadiusSearch:
type: object
properties:
coordinates:
$ref: '#/components/schemas/v1GeoPoint'
description: Latitude and Longitude coordinates to use as the center point of the search.
radius:
$ref: '#/components/schemas/v1Distance'
title: 'The size of the search area.
Default: 10 miles
Minimum: 1 mile (~1.6 kilometers)
Maximum: 50 miles (~80 kilometers)'
description: A search area in a perfect circle around a central point.
title: Shop_Lodging_Service_RadiusSearch_v1
v1PriceWithPerUnit:
type: object
properties:
price:
$ref: '#/components/schemas/v1Price'
description: The total price for the item.
perUnitPrice:
type: array
items:
type: object
$ref: '#/components/schemas/v1PerUnitPrice'
title: The total price broken into per-unit costs
description: 'The total price, along with a breakdown by a given unit.
For example, the total stay cost and the per-night cost.'
title: Common_PriceWithPerUnit_v1
v1Condition:
type: object
properties:
beforeTimestamp:
type: string
title: 'If present, this condition applies before and up to this ISO-8601-compliant timestamp.
For example, Changing this flight is free before May 30th.
This field may interact with [Condition.after_timestamp].
See https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations'
afterTimestamp:
type: string
title: 'If present, this condition applies on or after this ISO-8601-compliant timestamp.
For example, Canceling this flight incurs a $75 fee after June 1st.
This field may interact with [Condition.before_timestamp] and [Condition.before_event].
See https://en.wikipedia.org/wiki/ISO_8601#Combined_date_and_time_representations'
beforeEvent:
$ref: '#/components/schemas/v1ConditionEventType'
description: 'If present, this condition applies up until the described event occurs.
For example, Cancelling this flight is free until departure.'
penalty:
$ref: '#/components/schemas/v1CurrencyValue'
description: 'Optionally, any charge incurred as a result of the intended action within the constraints of
[Condition.before_timestamp], [Condition.after_timestamp], and [Condition.before_event].
penalty may be absent if the penalty is unknown. A missing penalty does not imply that there is no penalty.
If the penalty is known to be zero, penalty will be present with a value of 0.'
isAllowed:
type: boolean
description: If false, the intended operation is not allowed.
description: 'An individual condition to be applied to an interaction with a booked item.
For example, to cancel, or extend a Lodging [BookingDetails].'
title: Common_Condition_v1
v1SellType:
type: object
properties:
commissionable:
$ref: '#/components/schemas/v1CommissionableModel'
description: 'Indicates this offer uses a commissionable sell type.
Offers with this type must be sold at the exact price quoted by Engine.
The seller earns a commission specified in [CommissionableModel].
See [CommissionableModel] for details.'
net:
$ref: '#/components/schemas/v1NetModel'
description: 'Indicates this offer uses a net sell type.
Offers with this type are expected to be marked up by the seller.
The seller earns the margin between the net price and the marked-up price.
See [NetModel] for details.'
fixed:
$ref: '#/components/schemas/v1FixedModel'
description: 'Indicates this offer uses a fixed sell type.
Offers with this type must be sold at the exact price quoted by Engine.
Compensation terms are defined exclusively by the seller''s agreement with Engine.
See [FixedModel] for details.'
description: 'The sell type of an offer.
Defines seller compensation and pricing guidelines for this offer.
The type determines whether the seller earns through commission, markup margin, or other contractual arrangements.'
title: Common_SellType_v1
v1MediaItem:
type: object
properties:
image:
$ref: '#/components/schemas/v1Image'
title: An [Image] this media item represents
description:
type: string
title: 'A description of this media item
Example: "A large restaurant"'
tags:
type: array
items:
type: string
title: 'Tags categorizing the content of this media item
Example: ["outdoor", "pool"]'
description: A media item for visual or marketing context.
title: Common_MediaItem_v1
lodgingExternalCatalogIdentifiers:
type: object
properties:
giataIdentifier:
type: string
description: GIATA identifier for this property.
catalogIdentifiers:
type: object
additionalProperties:
$ref: '#/components/schemas/lodgingExternalCatalogIdentifierList'
description: Catalog identifiers keyed by source keys.
description: External catalog identifiers for property mapping.
title: Content_ExternalCatalogIdentifiers_v1
v1FindBestOffersRequest:
type: object
properties:
criteria:
$ref: '#/components/schemas/v1FindBestOffersRequestCriteria'
description: The criteria to be used to identify and filter Properties and Offers.
includePropertiesWithNoAvailability:
type: boolean
default: 'false'
description: 'By default, only Properties that have rooms matching your criteria will be returned.
This differs from [LodgingShoppingService.FindBestOffersStreaming] which returns all considered properties.
You may wish to set this to true if you are building a shopping experience that indicates availability may differ with different criteria, such as dates, but streaming is not viable.'
sortMode:
$ref: '#/components/schemas/v1FindBestOffersSortMode'
description: The order in which the results will be returned.
title: Shop_Lodging_Service_FindBestOffersRequest_v1
v1FindBestOffersRequestCriteria:
type: object
properties:
pointAndRadius:
$ref: '#/components/schemas/shoplodgingservicev1RadiusSearch'
description: Check the availability of up to `max_property_candidates` hotels nearest the center of the provided radius.
propertyId:
$ref: '#/components/schemas/v1PropertyIdSearch'
description: Check the availability of properties as identified by the provided Engine Property IDs.
checkInDate:
type: string
title: 'An ISO-8601-compliant date on which you will check in to the property.
See https://en.wikipedia.org/wiki/ISO_8601#Dates'
pattern: ^(?<year>[0-9]{4})-(?<month>(?:0[1-9])|(?:1[0-2]))-(?<day>(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))$
checkOutDate:
type: string
title: 'An ISO-8601-compliant date on which you will check out of the property.
See https://en.wikipedia.org/wiki/ISO_8601#Dates'
pattern: ^(?<year>[0-9]{4})-(?<month>(?:0[1-9])|(?:1[0-2]))-(?<day>(?:0[1-9])|(?:[1-2][0-9])|(?:3[0-1]))$
numRooms:
type: integer
format: int32
default: '1'
title: 'The number of rooms to book.
May not exceed 8'
maximum: 8.0
minimum: 1.0
currencyCode:
type: string
title: 'The 3-character ISO-4217 alphabetic currency code to be used to convey pricing information.
https://www.iso.org/iso-4217-currency-codes.html'
pattern: ^[A-Z]{3}$
travelers:
type: array
items:
type: object
$ref: '#/components/schemas/v1AnonymousTraveler'
description: 'Describes the travelers for whom you are searching.
Changes to the quantity or age of travelers has an impact on the Offer price.
Failure to properly identify your travelers may incur additional charges at checkin or cancellation of the booking.'
salesChannel:
$ref: '#/components/schemas/v1SalesChannel'
title: If available, the sales channel for the customer
maxPropertyCandidates:
type: integer
format: int32
default: '100'
description: 'The maximum number of properties to be considered for Offers.
Properties with no availability will count against this limit, but may not be returned if there is no availability.
May not exceed 250.
This limit is not honored when Property IDs are provided via [property_ids].'
maximum: 250.0
minimum: 1.0
description: Defines the base criteria used in a "Best Offers" search.
title: Shop_Lodging_Service_FindBestOffersRequestCriteria_v1
v1FindBestOffersSortMode:
type: string
enum:
- FIND_BEST_OFFERS_SORT_MODE_UNSPECIFIED
- FIND_BEST_OFFERS_SORT_MODE_DISTANCE
default: FIND_BEST_OFFERS_SORT_MODE_UNSPECIFIED
description: "Describes the various ways a [LodgingShoppingService.FindBestOffers] search maybe sorted.\n\n - FIND_BEST_OFFERS_SORT_MODE_UNSPECIFIED: No specific sort criteria will be used.\n - FIND_BEST_OFFERS_SORT_MODE_DISTANCE: Properties are returned in order of increasing distance.\nIn case of ties, Property names are sorted lexically.\nOnly valid when candidate properties are identified via [RadiusSearch] (`point_and_radius`)."
title: Shop_Lodging_Service_FindBestOffersSortMode_v1
v1NetModel:
type: object
description: 'Details for a net pricing model.
Under this model, offers are provided at a net price which the seller is expected to mark up.
The seller''s earnings consist of the margin between the net price and the final price charged to the customer.
The markup amount and strategy are determined by the seller within the terms of their agreement.
Net rates can be sold at any price no lower than [OfferSummary.price.price.total] and no higher than [OfferSummary.price.price.strike].
This model does not override your agreement with Engine.
Refer to your agreement or contact your Engine sales support team for questions.'
title: Common_NetModel_v1
v1AnonymousChild:
type: object
properties:
age:
type: integer
format: int32
description: 'The child''s age on the date of travel.
If the child''s birthday is during travel, use the age they will be at the end of travel.'
birthdate:
type: string
title: 'An ISO-8601-compliant date representing the child''s birthdate.
See https://en.wikipedia.org/wiki/ISO_8601#Dates'
description: 'A child traveler whose personal details have not yet been collected.
A child''s age is necessary to retrieve the correct prices.
Failure to provide an accurate age may result in loss of bookings or refusal to provide service to the traveler.'
title: Common_AnonymousChild_v1
v1InvalidSortError:
type: object
description: An error indicating that the requested sorting option provided is not valid for the given search criteria.
title: Service_Common_InvalidSortError_v1
v1CurrencyValue:
type: object
properties:
currencyCode:
type: string
title: 'The 3-character ISO-4217 alphabetic currency code.
For example: USD
See https://www.iso.org/iso-4217-currency-codes.html'
value:
type: string
description: 'The non-localized decimal representation of the amount of currency represented by this object.
For example, "123456.789".'
description: A safe encoding of a monetary value and its paired currency code.
title: Common_CurrencyValue_v1
v1CommissionableModel:
type: object
properties:
commissionValue:
$ref: '#/components/schemas/v1CurrencyValue'
description: The commission amount the seller will receive for selling this offer.
description: 'Details for a commissionable pricing model.
Under this model, offers must be sold at the exact price quoted by Engine without markup.
The seller receives a fixed commission amount for each sale.
This model does not override your agreement with Engine.
Refer to your agreement or contact your Engine sales support team for questions.'
title: Common_CommissionableModel_v1
v1Bedding:
type: object
properties:
count:
type: integer
format: int32
description: The number of this bed type in the room.
description:
type: string
description: 'A textual description of the type of this bed in the room.
For example, "KING", "QUEEN", or "SLEEPER".'
description: A description of the quantity and type of beds in the room.
title: Shop_Lodging_Bedding_v1
lodgingProperty:
type: object
properties:
id:
type: string
description: The [Engine] identifier for this [Property].
name:
type: string
description: The full name of this [Property].
physicalAddress:
$ref: '#/components/schemas/v1PostalAddress'
description: 'The physical address of this [Property].
This may differ from the mailing, billing, or other administrative addresses.'
coordinates:
$ref: '#/components/schemas/v1GeoPoint'
description: The geographic location of this [Property].
heroImageUri:
type: string
description: If available, A URI to the image to use as the primary image to identify this [Property].
description:
type: string
description: If available, a brief textual description of this [Property].
phoneNumber:
type: string
title: 'If available, an E.164-compliant primary phone number for this [Property].
See https://en.wikipedia.org/wiki/E.164'
emails:
type: array
items:
type: object
$ref: '#/components/schemas/v1ContactEmail'
description: 'Contact email addresses for this property.
May include general contact, billing, or reservation emails.'
starRating:
type: string
title: 'Star rating for this property.
Represents the official star rating classification system.
See https://en.wikipedia.org/wiki/Hotel_rating
Examples: "4", "5", "3.5"'
amenities:
type: array
items:
typ
# --- truncated at 32 KB (52 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/hotel-engine/refs/heads/main/openapi/hotel-engine-lodgingshoppingservice-api-openapi.yml