Engine Lodging Shopping Service API

The LodgingShoppingService API from Engine — 2 operation(s) for lodgingshoppingservice.

OpenAPI Specification

hotel-engine-lodgingshoppingservice-api-openapi.yml Raw ↑
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