openapi: 3.0.2
info:
  title: Shopping APIs
  description: API supported for Property Search
  version: 1.0.0
  contact:
    name: API Support
    url: 'https://www.lastminute.com'
    email: info@lastminute.com
  termsOfService: 'https://www.lastminute.com/terms/terms-and-conditions.html'
servers:
  - url: 'https://qa-partner.momorooms.com'
    description: qa server
  - url: 'https://partner.momorooms.com'
    description: production server
paths:
  /v1/property/multi:
    post:
      description: API which will return the cheapest rate available for the combinations of available Board Basis & Cancellation policies for the requested PropertyId(s) and stay criteria.
      operationId: Search
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MultiPropertySearchRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            'application/json':
              schema:
                oneOf:
                  - $ref: '#/components/schemas/MultiPropertySearchResponse'
                  - $ref: '#/components/schemas/NoAvailabilityErrorResponse'
        '400':
          description: Client Side Error
          content:
            'application/json':
              schema:
                $ref: '#/components/schemas/MultiPropertySearchClientErrorResponse'
        '500':
          description: Server Side Error
          content:
            'application/json':
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
      summary: Multi-Property Search
  /v1/property/single:
    post:
      description: API which will return all the available Product(s) with calculated prices for requested property and stay criteria.
      operationId: Detail
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SinglePropertySearchRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            'application/json':
              schema:
                oneOf:
                  - $ref: '#/components/schemas/SinglePropertySearchResponse'
                  - $ref: '#/components/schemas/NoAvailabilityErrorResponse'
        '400':
          description: Client Side Error
          content:
            'application/json':
              schema:
                $ref: '#/components/schemas/SingleSearchClientErrorResponse'
        '500':
          description: Server Side Error
          content:
            'application/json':
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
      summary: Single Property Search
  /v1/property/quote:
    post:
      description: API which will return available Product with calculated prices for requested Product and stay criteria.
      operationId: Quote
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QuoteRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            'application/json':
              schema:
                oneOf:
                  - $ref: '#/components/schemas/QuoteResponse'
                  - $ref: '#/components/schemas/NoAvailabilityErrorResponse'
        '400':
          description: Client Side Error
          content:
            'application/json':
              schema:
                $ref: '#/components/schemas/QuoteClientErrorResponse'
        '500':
          description: Server Side Error
          content:
            'application/json':
              schema:
                $ref: '#/components/schemas/ServerErrorResponse'
      summary: Property Quote
components:
  schemas:
    GuestCount:
      type: object
      required:
        - adultCount
      properties:
        adultCount:
          type: integer
          format: int32
          minimum: 1
          maximum: 9
          description: Number of Adults in the party mix.
        childAges:
          type: array
          maxItems: 8
          description: 'List of ages of the children in the party mix.Comma separated values. Example - [2,5] denotes 2 children in the party mix of ages 2 & 5.'
          items:
            type: integer
            format: int32
    RoomStayRQQuote:
      type: object
      required:
        - id
        - productId
        - guestCount
      properties:
        id:
          type: integer
          format: int32
          description: Unique identifier for each room stay in the reservation. Room ids must start at 0 and increment by 1 for each additional room (0,1,2,...).

        productId:
          type: integer
          description: ID of the product against which the priceCheck is triggered. Product ID should be one from the propertyId.
          format: int64
        guestCount:
          $ref: '#/components/schemas/GuestCount'
    RoomStay:
      type: object
      required:
        - id
        - guestCount
      properties:
        id:
          type: integer
          format: int32
          description: Unique identifier for each room stay in the reservation. Room ids must start at 0 and increment by 1 for each additional room (0,1,2,...).
        guestCount:
          $ref: '#/components/schemas/GuestCount'
    RoomStayList:
      type: object
      properties:
        id:
          description: Unique id for each room stay
          type: integer
          format: int32
        roomId:
          type: integer
          format: int64
          description: Available room under this property
        roomName:
          type: string
          description: Room Name
        rateType:
          type: string
          description: Requested Rate Type
        products:
          type: array
          items:
            $ref: '#/components/schemas/ListProduct'
        availableRooms:
          type: integer
          format: int32
          description: Represents the number of rooms available for booking for a specific room type.
    ListProduct:
      type: object
      properties:
        productId:
          type: number
          format: int64
          description: Available cheapest product under this room, cancelpolicy
        boardBasis:
          $ref: '#/components/schemas/BoardBasis'
        charges:
          $ref: '#/components/schemas/ChargeTotal'
        promotions:
          type: array
          items:
            $ref: '#/components/schemas/Promotion'
        cancelPenalties:
          type: array
          items:
            $ref: '#/components/schemas/CancelPenalty'
    RoomStayQuote:
      type: object
      properties:
        id:
          description: Unique id for each room stay
          type: integer
          format: int32
        roomId:
          type: integer
          format: int64
          description: Available room under this property
        rateType:
          type: string
          description: Requested Rate Type
        product:
          $ref: '#/components/schemas/DetailProduct'
    RoomStayDetail:
      type: object
      properties:
        id:
          description: Unique id for each room stay
          type: integer
          format: int32
        roomId:
          type: integer
          format: int64
          description: Available room under this property
        roomName:
          type: string
          description: Room Name
        roomDescription:
          type: string
          description: Room Description
        bedTypeInfo:
          type: string
          description: Room Bed Type
        rateType:
          type: string
          description: Requested Rate Type
        products:
          type: array
          items:
            $ref: '#/components/schemas/DetailProduct'
        availableRooms:
          type: integer
          format: int32
          description: Represents the number of rooms available for booking for a specific room type.
        images:
          description: List of images url for this room.
          type: array
          items:
            type: string
        roomAmenities:
          type: array
          description: Represents the facilities and features included in the room, such as Wi-Fi, air conditioning, minibar, or a balcony.
          items:
            $ref: '#/components/schemas/RoomAmenityDetails'
    DetailProduct:
      type: object
      properties:
        productId:
          type: number
          format: int64
          description: Available cheapest product under this room, cancelpolicy
        boardBasis:
          $ref: '#/components/schemas/BoardBasis'
        charges:
          $ref: '#/components/schemas/Charge'
        promotions:
          type: array
          items:
            $ref: '#/components/schemas/Promotion'
        cancelPenalties:
          type: array
          items:
            $ref: '#/components/schemas/DetailCancelPenalty'
    BoardBasis:
      type: object
      properties:
        id:
          type: integer
          format: int32
          description: Unique identifier for the board basis.
        name:
          type: string
          description: Meal Plan or Board Basis name.
        detail:
          type: string
          description: 'Supported BoardBasis <table> <thead> <tr><th>Name</th><th>Details</th><th>Ids</th></tr></thead> <tbody> <tr><td>Breakfast</td><td></td><td>19</td></tr> <tr><td>All Inclusive</td><td></td><td>1</td></tr> <tr><td>Full Board</td><td></td><td>10</td></tr> <tr><td>Half Board</td><td></td><td>12</td></tr> <tr><td>Dinner</td><td></td><td>22</td></tr> <tr><td>Lunch</td><td></td><td>21</td></tr> <tr><td>Bed and Breakfast</td><td></td><td>3</td></tr> <tr><td>Room Only</td><td></td><td>14</td></tr> <tr><td>Self Catering</td><td></td><td>15</td></tr> <tr><td>Breakfast</td><td>Continental</td><td>6</td></tr> <tr><td>Breakfast</td><td>English</td><td>7</td></tr> <tr><td>Breakfast</td><td>Scottish</td><td>100</td></tr> <tr><td>Breakfast</td><td>American</td><td>101</td></tr><tr><td>Breakfast</td><td>Buffet</td><td>4</td></tr> <tr><td>Breakfast</td><td>For 2 person</td><td>102</td></tr> <tr><td>Breakfast</td><td>For 1 Person</td><td>103</td></tr> <tr><td>Breakfast</td><td>For 3 person</td><td>104</td></tr> <tr><td>All Inclusive</td><td>Single Adult</td><td>105</td></tr> <tr><td>All Inclusive</td><td>Adults Only</td><td>106</td></tr> <tr><td>All Inclusive</td><td>Elite</td><td>107</td></tr> <tr><td>All Inclusive</td><td>For 2 person</td><td>108</td></tr> <tr><td>All Inclusive</td><td>Soft</td><td>109</td></tr> <tr><td>All Inclusive</td><td>Premium</td><td>110</td></tr> <tr><td>Full Board</td><td>With Drinks</td><td>111</td></tr> <tr><td>Half Board</td><td>American Breakfast & Dinner</td><td>112</td></tr> <tr><td>Half Board</td><td>Breakfast & Dinner</td><td>113</td></tr> <tr><td>Half Board</td><td>Buffet Breakfast and Dinner for 2 person</td><td>114</td></tr> <tr><td>Half Board</td><td>With Drinks</td><td>115</td></tr></tbody></table>'
    CancelPenalty:
      type: object
      properties:
        penaltyWindow:
          type: integer
          format: int32
          description: Defines the time window in hours during which a penalty applies for cancellations. The penalty is typically enforced if the cancellation happens within this window from the scheduled check-in time.
        penaltyPercentage:
          type: number
          format: int32
          description: Represents the percentage of the total cost (or nightly rate) charged as a cancellation fee if canceled within the penalty window.
        penaltyNights:
          type: number
          format: int32
          description: Represents the Number of nights charged (in combination with penaltyPercentage) as a penalty if canceled within the penalty window. Example - if penaltyPercentage=50 and penaltyNights=2, the cancel policy should be read as 50% of 2 Nights.
        refundable:
          type: boolean
          description: Indicates whether the room booking is refundable or not. If true, it means that the booking can be refunded according to the cancellation policy. If false, the booking is non-refundable.
    DetailCancelPenalty:
      type: object
      properties:
        penaltyWindow:
          type: integer
          format: int32
          description: Defines the time window in hours during which a penalty applies for cancellations. The penalty is typically enforced if the cancellation happens within this window from the scheduled check-in time. See penaltyStartDate and penaltyEndDate for the exact date range of this window.
        penaltyStartDate:
          type: string
          description: The exact start date from which the cancellation penalty applies. Represents the beginning of the penalty window as a specific date rather than a relative time offset.
          format: yyyy-MM-dd'T'HH:mm:ssXXX
        penaltyEndDate:
          type: string
          description: The exact end date until which the cancellation penalty applies. Represents the end of the penalty window as a specific date rather than a relative time offset.
          format: yyyy-MM-dd'T'HH:mm:ssXXX
        penaltyPercentage:
          type: number
          format: int32
          description: Represents the exact monetary amount charged as a penalty if the reservation is canceled within the penalty window.
        penaltyNights:
          type: number
          format: int32
          description: Represents the how much night amount charged as a penalty if the reservation is canceled within the penalty window.
        penaltyInAmount:
          type: number
          format: double
          description: Represents the exact monetary amount charged as a penalty if the reservation is canceled within the penalty window. This is a fixed amount, calculated based on penalty rules such as penaltyPercentage or penaltyNights.
        refundable:
          type: boolean
          description: Indicates whether the room booking is refundable or not. If true, it means that the booking can be refunded according to the cancellation policy. If false, the booking is non-refundable.
    ChargeTotal:
      type: object
      properties:
        total:
          type: number
          format: double
          description: Represents the final total cost of the room after applying promotions.
        minSellablePrice:
          type: number
          format: double
          description: Represents the min rate at which the hotelOnly product can be sold at the partner website, to be aligned with rate parity rules. (Applicable for HotelOnly products;)
        prePromoTotal:
          type: number
          format: double
          description: Represents the total cost of the room before applying any promotions or discounts.
        discountPercentage:
          type: number
          format: double
          description: Represents the percentage of discount applied to the prePromoTotal. This value helps in calculating the actual discount amount deducted from the original price before finalizing the roomTotal.
    Charge:
      type: object
      properties:
        includedCharges:
          type: number
          format: double
          description: Represents the price other than base rate like taxes, or additional fees.
        excludedCharges:
          type: number
          format: double
          description: Represents the price not included in the final total cost like additional paid services.
        excludedChargeDetails:
          type: object
          description: Detailed breakdown of excluded charges
          properties:
            resortFee:
              type: number
              format: double
              description: Resort fee charged by the property, payable at the hotel
            childResortFee:
              type: number
              format: double
              description: Child Resort Fee charged by the property, payable at the hotel
            cityTaxes:
              type: number
              format: double
              description: City Taxes charged by the property, payable at the hotel
            hotelServiceFee:
              type: number
              format: double
              description: Hotel ServiceFee  charged by the property, payable at the hotel
        total:
          type: number
          format: double
          description: Represents the final total cost of the room after applying promotions.
        minSellablePrice:
          type: number
          format: double
          description: Represents the min rate at which the hotelOnly product can be sold at the partner website, to be aligned with rate parity rules. (Applicable for HotelOnly products;)
        prePromoTotal:
          type: number
          format: double
          description: Represents the total cost of the room before applying any promotions or discounts.
        discountPercentage:
          type: number
          format: double
          description: Represents the percentage of discount applied to the prePromoTotal. This value helps in calculating the actual discount amount deducted from the original price before finalizing the roomTotal.
    Promotion:
      type: object
      properties:
        promoType:
          type: string
          description: Specifies the type of promotion applied to the room rate.
          example: Value Add, Discount Off, Free Night
        description:
          type: string
          description: Provides a description of the promotion applied to the room. This helps in displaying promotional details to customers, explaining the discount reason, and enhancing the booking experience.
    QuoteRequest:
      type: object
      required:
        - propertyId
        - market
        - rateType
        - productType
        - roomStays
        - checkIn
        - checkOut
      properties:
        propertyId:
          description: 'momorooms ID of the property against which priceCheck is triggered. If the priceCheck is to be done on a Top Secret offer, the corresponding unbranded property id should be sent in the priceCheck request.'
          type: integer
          format: int64
        checkIn:
          type: string
          description: Date of check-in in the format (yyyy-mm-dd)
          format: date
        checkOut:
          type: string
          description: Date of checkout (not included in stay) in the format (yyyy-mm-dd)
          format: date
        market:
          type: string
          description: ISO country codes for the market <table> <thead> <tr> <th>Country Name</th> <th>Country code</th> </tr></thead><tbody> <tr> <td>Austria</td> <td>AT</td> </tr> <tr> <td>Belgium</td> <td>BE</td> </tr> <tr> <td>Bulgaria</td> <td>BG</td> </tr> <tr> <td>Chile</td> <td>CL</td> </tr> <tr> <td>Croatia</td> <td>HR</td> </tr> <tr> <td>Cyprus</td> <td>CY</td> </tr> <tr> <td>Czechia</td> <td>CZ</td> </tr> <tr> <td>Denmark</td> <td>DK</td> </tr> <tr> <td>Estonia</td> <td>EE</td> </tr> <tr> <td>Finland</td> <td>FI</td> </tr> <tr> <td>France</td> <td>FR</td> </tr> <tr> <td>Germany</td> <td>DE</td> </tr> <tr> <td>Hungary</td> <td>HU</td> </tr> <tr> <td>Iceland</td> <td>IS</td> </tr> <tr> <td>India</td> <td>IN</td> </tr> <tr> <td>Ireland</td> <td>IE</td> </tr> <tr> <td>Italy</td> <td>IT</td> </tr> <tr> <td>Latvia</td> <td>LV</td> </tr> <tr> <td>Lithuania</td> <td>LT</td> </tr> <tr> <td>Luxembourg</td> <td>LU</td> </tr> <tr> <td>Malta</td> <td>MT</td> </tr> <tr> <td>Mexico</td> <td>MX</td> </tr> <tr> <td>Netherlands</td> <td>NL</td> </tr> <tr> <td>Norway</td> <td>NO</td> </tr> <tr> <td>Poland</td> <td>PL</td> </tr> <tr> <td>Portugal</td> <td>PT</td> </tr> <tr> <td>Romania</td> <td>RO</td> </tr> <tr> <td>Slovakia</td> <td>SK</td> </tr> <tr> <td>Slovenia</td> <td>SI</td> </tr> <tr> <td>Spain</td> <td>ES</td> </tr> <tr> <td>Sweden</td> <td>SE</td> </tr> <tr> <td>Switzerland</td> <td>CH</td> </tr> <tr> <td>United Kingdom</td> <td>GB</td> </tr> <tr> <td>United States of America</td> <td>US</td> </tr> <tr> <td>Argentina</td> <td>AR</td> </tr> <tr> <td>Greece</td> <td>GR</td> </tr></tbody></table>
        currencyCode:
          type: string
          description: Represents the three-letter currency code as per the ISO 4217 standard.
        rateType:
          type: string
          description: 'Parameter denoting for which kind of rate is the request triggered as in below table <table> <thead> <tr> <th>Scenario</th> <th>Rate Type</th> </tr> </thead> <tbody> <tr><td>Regular Rate</td><td>BAR</td></tr> </tbody></table>'
        productType:
          type: string
          description: 'Parameter denoting for which kind of product is the request triggered as in below table <table> <thead> <tr> <th>Scenario</th> <th>Search Path</th> </tr> </thead> <tbody> <tr><td>Request includes only hotel accommodations</td><td>Hotel</td></tr> <tr><td>Request includes only packages bundled with hotel stays</td><td>Package</td></tr></tbody></table>'
        roomStays:
          type: array
          maxItems: 9
          minItems: 1
          description: Collection for holding the guest details for each room requested. Collection to be repeated for each room.
          items:
            $ref: '#/components/schemas/RoomStayRQQuote'
    MultiSearchClientError:
      type: object
      properties:
        errorCode:
          type: integer
          format: int32
        errorDescription:
          type: string
          description: 'Possible error responses:  <table> <thead> <tr> <th>ErrorCode</th> <th>ErrorDesc</th> </tr> </thead> <tbody> <tr><td>1001</td><td>PropertyIds is required, Please provide a valid value</td></tr> <tr><td>1002</td><td>CheckIn is required, Please provide a valid value</td></tr> <tr><td>1003</td><td>CheckOut is required, Please provide a valid value</td></tr> <tr><td>1004</td><td>Market is required, Please provide a valid value</td></tr> <tr><td>1005</td><td>ProductType is required, Please provide a valid value</td></tr> <tr><td>1006</td><td>RoomStay is required, Please provide a valid value</td></tr> <tr><td>1007</td><td>RoomStay Id is required, Please provide a valid value</td></tr> <tr><td>1008</td><td>Adult Count is required, Please provide a valid value</td></tr> <tr><td>1009</td><td>Guest is required, Please provide a valid value</td></tr> <tr><td>1010</td><td>Number of Child per room must be within 8</td></tr> <tr><td>1011</td><td>Number of Adult per room must be within 9</td></tr> <tr><td>1012</td><td>Number of room requested must be within 9</td></tr> <tr><td>1013</td><td>Number of propertyId requested must be within 100</td></tr> <tr><td>1014</td><td>CheckIn must be in the future</td></tr> <tr><td>1015</td><td>CheckOut must be in the future</td></tr> <tr><td>1016</td><td>CheckIn/CheckOut must be in the format: yyyy-MM-dd</td></tr> <tr><td>1017</td><td>CheckOut must be after checkIn</td></tr> <tr><td>1018</td><td>Invalid Value for Market, Please provide a valid value [AT, BE, BG, CL, HR, CY, CZ, DK, EE, FI, FR, DE, HU, IS, IN, IE, IT, LV, LT, LU, MT, MX, NL, NO, PL, PT, RO, SK, SI, ES, SE, CH, GB, US, AR, GR] </td></tr> <tr><td>1019</td><td>Invalid Value for ProductType, Please provide a valid value Hotel, Package </td></tr> <tr><td>1022</td><td>RateType is required, Please provide a valid value</td></tr> <tr><td>1027</td><td>Currency not supported</td></tr> </tbody> </table>'
    ServerError:
      type: object
      properties:
        errorCode:
          type: integer
          format: int32
        errorDescription:
          type: string
          description: 'Possible error responses:  <table> <thead> <tr> <th>ErrorCode</th> <th>ErrorDesc</th> </tr> </thead> <tbody>  <tr><td>500</td><td>An unexpected error occurred. Please try again later.</td></tr>  </tbody> </table>'
    SingleSearchClientError:
      type: object
      properties:
        errorCode:
          type: integer
          format: int32
        errorDescription:
          type: string
          description: 'Possible error responses:  <table> <thead> <tr> <th>ErrorCode</th> <th>ErrorDesc</th> </tr> </thead> <tbody> <tr><td>1002</td><td>CheckIn is required, Please provide a valid value</td></tr> <tr><td>1003</td><td>CheckOut is required, Please provide a valid value</td></tr> <tr><td>1004</td><td>Market is required, Please provide a valid value</td></tr> <tr><td>1005</td><td>ProductType is required, Please provide a valid value</td></tr> <tr><td>1006</td><td>RoomStay is required, Please provide a valid value</td></tr> <tr><td>1007</td><td>RoomStay Id is required, Please provide a valid value</td></tr> <tr><td>1008</td><td>Adult Count is required, Please provide a valid value</td></tr> <tr><td>1009</td><td>Guest is required, Please provide a valid value</td></tr> <tr><td>1010</td><td>Number of Child per room must be within 8</td></tr> <tr><td>1011</td><td>Number of Adult per room must be within 9</td></tr> <tr><td>1012</td><td>Number of room requested must be within 9</td></tr> <tr><td>1014</td><td>CheckIn must be in the future</td></tr> <tr><td>1015</td><td>CheckOut must be in the future</td></tr> <tr><td>1016</td><td>CheckIn/CheckOut must be in the format: yyyy-MM-dd</td></tr> <tr><td>1017</td><td>CheckOut must be after checkIn</td></tr> <tr><td>1018</td><td>Invalid Value for Market, Please provide a valid value [AT, BE, BG, CL, HR, CY, CZ, DK, EE, FI, FR, DE, HU, IS, IN, IE, IT, LV, LT, LU, MT, MX, NL, NO, PL, PT, RO, SK, SI, ES, SE, CH, GB, US, AR, GR] </td></tr> <tr><td>1019</td><td>Invalid Value for ProductType, Please provide a valid value Hotel, Package </td></tr>  <tr><td>1020</td><td>PropertyId is required, Please provide a valid value</td></tr> <tr><td>1022</td><td>RateType is required, Please provide a valid value</td></tr> <tr><td>1027</td><td>Currency not supported</td></tr> </tbody> </table>'
    QuoteClientError:
      type: object
      properties:
        errorCode:
          type: integer
          format: int32
        errorDescription:
          type: string
          description: 'Possible error responses: <table> <thead> <tr> <th>ErrorCode</th> <th>ErrorDesc</th> </tr> </thead> <tbody>  <tr><td>1002</td><td>CheckIn is required, Please provide a valid value</td></tr> <tr><td>1003</td><td>CheckOut is required, Please provide a valid value</td></tr> <tr><td>1004</td><td>Market is required, Please provide a valid value</td></tr> <tr><td>1005</td><td>ProductType is required, Please provide a valid value</td></tr> <tr><td>1006</td><td>RoomStay is required, Please provide a valid value</td></tr> <tr><td>1007</td><td>RoomStay Id is required, Please provide a valid value</td></tr> <tr><td>1008</td><td>Adult Count is required, Please provide a valid value</td></tr> <tr><td>1009</td><td>Guest is required, Please provide a valid value</td></tr> <tr><td>1010</td><td>Number of Child per room must be within 8</td></tr> <tr><td>1011</td><td>Number of Adult per room must be within 9</td></tr> <tr><td>1012</td><td>Number of room requested must be within 9</td></tr> <tr><td>1014</td><td>CheckIn must be in the future</td></tr> <tr><td>1015</td><td>CheckOut must be in the future</td></tr> <tr><td>1016</td><td>CheckIn/CheckOut must be in the format: yyyy-MM-dd</td></tr> <tr><td>1017</td><td>CheckOut must be after checkIn</td></tr> <tr><td>1018</td><td>Invalid Value for Market, Please provide a valid value [AT, BE, BG, CL, HR, CY, CZ, DK, EE, FI, FR, DE, HU, IS, IN, IE, IT, LV, LT, LU, MT, MX, NL, NO, PL, PT, RO, SK, SI, ES, SE, CH, GB, US, AR, GR] </td></tr> <tr><td>1019</td><td>Invalid Value for ProductType, Please provide a valid value Hotel, Package </td></tr>  <tr><td>1020</td><td>PropertyId is required, Please provide a valid value</td></tr> <tr><td>1021</td><td>ProductId is required, Please provide a valid value</td></tr> <tr><td>1022</td><td>RateType is required, Please provide a valid value</td></tr> <tr><td>1027</td><td>Currency not supported</td></tr> </tbody> </table>'
    Property:
      type: object
      properties:
        propertyId:
          type: integer
          format: int64
          description: momorooms ID of the available property based on the search criteria.
        currencyCode:
          type: string
          description: Represents the three-letter currency code as per the ISO 4217 standard
        roomStays:
          type: array
          description: Collection for holding the guest details for each room requested. Collection to be repeated for each room.
          items:
            $ref: '#/components/schemas/RoomStayList'
    PropertyDetail:
      type: object
      properties:
        propertyId:
          type: integer
          format: int64
          description: momorooms ID of the available property based on the search criteria.
        propertyName:
          type: string
          description: Represents the name of the Property
        currencyCode:
          type: string
          description: Represents the three-letter currency code as per the ISO 4217 standard
        roomStays:
          type: array
          description: Collection for holding the guest details for each room requested. Collection to be repeated for each room.
          items:
            $ref: '#/components/schemas/RoomStayDetail'
    PropertyQuote:
      type: object
      properties:
        propertyId:
          type: integer
          format: int64
          description: momorooms ID of the available property based on the search criteria.
        currencyCode:
          type: string
          description: Represents the three-letter currency code as per the ISO 4217 standard
        roomStays:
          type: array
          description: Collection for holding the guest details for each room requested. Collection to be repeated for each room.
          items:
            $ref: '#/components/schemas/RoomStayQuote'
        propertyRemarks:
          type: string
          description: Customer restrictions or special terms applicable to the property
    QuoteResponse:
      type: object
      properties:
        reservationId:
          type: integer
          format: int64
          description: Reservation ID for guarantee the price for the customer.
        property:
          $ref: '#/components/schemas/PropertyQuote'
    QuoteClientErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/QuoteClientError'
    MultiPropertySearchRequest:
      type: object
      required:
        - propertyIds
        - checkIn
        - checkOut
        - market
        - rateType
        - productType
        - roomStays
      properties:
        propertyIds:
          description: List of momorooms ID(s) of the properties against which list is triggered. It will be combination of branded and unbranded property id.
          type: array
          minItems: 1
          maxItems: 100
          items:
            type: integer
            format: int64
        checkIn:
          type: string
          description: Date of check-in in the format (yyyy-mm-dd)
          format: date
        checkOut:
          type: string
          description: Date of checkout (not included in stay) in the format (yyyy-mm-dd)
          format: date
        market:
          type: string
          description: ISO country codes for the market <table> <thead> <tr> <th>Country Name </th> <th>Country code</th> </tr></thead><tbody> <tr> <td>Austria</td> <td>AT</td> </tr> <tr> <td>Belgium</td> <td>BE</td> </tr> <tr> <td>Bulgaria</td> <td>BG</td> </tr> <tr> <td>Chile</td> <td>CL</td> </tr> <tr> <td>Croatia</td> <td>HR</td> </tr> <tr> <td>Cyprus</td> <td>CY</td> </tr> <tr> <td>Czechia</td> <td>CZ</td> </tr> <tr> <td>Denmark</td> <td>DK</td> </tr> <tr> <td>Estonia</td> <td>EE</td> </tr> <tr> <td>Finland</td> <td>FI</td> </tr> <tr> <td>France</td> <td>FR</td> </tr> <tr> <td>Germany</td> <td>DE</td> </tr> <tr> <td>Hungary</td> <td>HU</td> </tr> <tr> <td>Iceland</td> <td>IS</td> </tr> <tr> <td>India</td> <td>IN</td> </tr> <tr> <td>Ireland</td> <td>IE</td> </tr> <tr> <td>Italy</td> <td>IT</td> </tr> <tr> <td>Latvia</td> <td>LV</td> </tr> <tr> <td>Lithuania</td> <td>LT</td> </tr> <tr> <td>Luxembourg</td> <td>LU</td> </tr> <tr> <td>Malta</td> <td>MT</td> </tr> <tr> <td>Mexico</td> <td>MX</td> </tr> <tr> <td>Netherlands</td> <td>NL</td> </tr> <tr> <td>Norway</td> <td>NO</td> </tr> <tr> <td>Poland</td> <td>PL</td> </tr> <tr> <td>Portugal</td> <td>PT</td> </tr> <tr> <td>Romania</td> <td>RO</td> </tr> <tr> <td>Slovakia</td> <td>SK</td> </tr> <tr> <td>Slovenia</td> <td>SI</td> </tr> <tr> <td>Spain</td> <td>ES</td> </tr> <tr> <td>Sweden</td> <td>SE</td> </tr> <tr> <td>Switzerland</td> <td>CH</td> </tr> <tr> <td>United Kingdom</td> <td>GB</td> </tr> <tr> <td>United States of America</td> <td>US</td> </tr> <tr> <td>Argentina</td> <td>AR</td> </tr> <tr> <td>Greece</td> <td>GR</td> </tr></tbody></table>
        currencyCode:
          type: string
          description: Represents the three-letter currency code as per the ISO 4217 standard.
        rateType:
          type: string
          description: 'Parameter denoting for which kind of rate is the request triggered as in below table <table> <thead> <tr> <th>Scenario</th> <th>Rate Type</th> </tr> </thead> <tbody> <tr><td>Regular Rate</td><td>BAR</td></tr> </tbody></table>'
        productType:
          type: string
          description: 'Parameter denoting for which kind of product is the request triggered as in below table <table> <thead> <tr> <th>Scenario</th> <th>Search Path</th> </tr> </thead> <tbody> <tr><td>Request includes only hotel accommodations</td><td>Hotel</td></tr> <tr><td>Request includes only packages bundled with hotel stays</td><td>Package</td></tr></tbody></table>'
        roomStays:
          type: array
          maxItems: 9
          minItems: 1
          description: Collection for holding the guest details for each room requested. Collection to be repeated for each room.
          items:
            $ref: '#/components/schemas/RoomStay'
    MultiPropertySearchResponse:
      type: object
      properties:
        properties:
          type: array
          items:
            $ref: '#/components/schemas/Property'
    MultiPropertySearchClientErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/MultiSearchClientError'
    ServerErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/ServerError'
    SinglePropertySearchRequest:
      type: object
      required:
        - propertyId
        - checkOut
        - checkIn
        - market
        - rateType
        - productType
        - roomStays
      properties:
        propertyId:
          description: 'momorooms ID of the property against which detail is triggered. If the detail is to be done on a Top Secret offer, the corresponding unbranded property id should be sent in the detail request.'
          type: integer
          format: int64
        checkIn:
          type: string
          description: Date of check-in in the format (yyyy-mm-dd)
          format: date
        checkOut:
          type: string
          description: Date of checkout (not included in stay) in the format (yyyy-mm-dd)
          format: date
        market:
          type: string
          description: ISO country codes for the market <table> <thead> <tr> <th>Country Name</th> <th>Country code</th> </tr></thead><tbody> <tr> <td>Austria</td> <td>AT</td> </tr> <tr> <td>Belgium</td> <td>BE</td> </tr> <tr> <td>Bulgaria</td> <td>BG</td> </tr> <tr> <td>Chile</td> <td>CL</td> </tr> <tr> <td>Croatia</td> <td>HR</td> </tr> <tr> <td>Cyprus</td> <td>CY</td> </tr> <tr> <td>Czechia</td> <td>CZ</td> </tr> <tr> <td>Denmark</td> <td>DK</td> </tr> <tr> <td>Estonia</td> <td>EE</td> </tr> <tr> <td>Finland</td> <td>FI</td> </tr> <tr> <td>France</td> <td>FR</td> </tr> <tr> <td>Germany</td> <td>DE</td> </tr> <tr> <td>Hungary</td> <td>HU</td> </tr> <tr> <td>Iceland</td> <td>IS</td> </tr> <tr> <td>India</td> <td>IN</td> </tr> <tr> <td>Ireland</td> <td>IE</td> </tr> <tr> <td>Italy</td> <td>IT</td> </tr> <tr> <td>Latvia</td> <td>LV</td> </tr> <tr> <td>Lithuania</td> <td>LT</td> </tr> <tr> <td>Luxembourg</td> <td>LU</td> </tr> <tr> <td>Malta</td> <td>MT</td> </tr> <tr> <td>Mexico</td> <td>MX</td> </tr> <tr> <td>Netherlands</td> <td>NL</td> </tr> <tr> <td>Norway</td> <td>NO</td> </tr> <tr> <td>Poland</td> <td>PL</td> </tr> <tr> <td>Portugal</td> <td>PT</td> </tr> <tr> <td>Romania</td> <td>RO</td> </tr> <tr> <td>Slovakia</td> <td>SK</td> </tr> <tr> <td>Slovenia</td> <td>SI</td> </tr> <tr> <td>Spain</td> <td>ES</td> </tr> <tr> <td>Sweden</td> <td>SE</td> </tr> <tr> <td>Switzerland</td> <td>CH</td> </tr> <tr> <td>United Kingdom</td> <td>GB</td> </tr> <tr> <td>United States of America</td> <td>US</td> </tr> <tr> <td>Argentina</td> <td>AR</td> </tr> <tr> <td>Greece</td> <td>GR</td> </tr></tbody></table>
        currencyCode:
          type: string
          description: Represents the three-letter currency code as per the ISO 4217 standard.
        rateType:
          type: string
          description: 'Parameter denoting for which kind of rate is the request triggered as in below table <table> <thead> <tr> <th>Scenario</th> <th>Rate Type</th> </tr> </thead> <tbody> <tr><td>Regular Rate</td><td>BAR</td></tr> </tbody></table>'
        productType:
          type: string
          description: 'Parameter denoting for which kind of product is the request triggered as in below table <table> <thead> <tr> <th>Scenario</th> <th>Search Path</th> </tr> </thead> <tbody> <tr><td>Request includes only hotel accommodations</td><td>Hotel</td></tr> <tr><td>Request includes only packages bundled with hotel stays</td><td>Package</td></tr></tbody></table>'
        roomStays:
          type: array
          maxItems: 9
          minItems: 1
          description: Collection for holding the guest details for each room requested. Collection to be repeated for each room.
          items:
            $ref: '#/components/schemas/RoomStay'
    RoomAmenityDetails:
      type: object
      properties:
        id:
          type: integer
          format: int64
          description: A unique id representing the specific amenity
        name:
          type: string
          description: A user-friendly name for the amenity that can be displayed to customers in search results or room details
    SinglePropertySearchResponse:
      type: object
      properties:
        property:
          $ref: '#/components/schemas/PropertyDetail'
    SingleSearchClientErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/SingleSearchClientError'
    NoAvailabilityError:
      type: object
      properties:
        code:
          type: integer
          format: int32
        message:
          type: string
          description: 'Possible error responses: <table> <thead> <tr> <th>Code</th> <th>Message</th> </tr> </thead> <tbody> <tr><td>1023</td><td>No Offers Available</td></tr> <tr><td>1024</td><td>Restricted Rates requested</td></tr> <tr><td>1025</td><td>No properties requested are available</td></tr> <tr><td>1026</td><td>Multi-room bookings with different RoomTypes not supported</td></tr> </tbody> </table>'
    NoAvailabilityErrorResponse:
      type: object
      properties:
        errors:
          type: array
          items:
            $ref: '#/components/schemas/NoAvailabilityError'
  securitySchemes:
    oAuthSecurity:
      type: oauth2
      flows:
        clientCredentials:
          tokenUrl: https://qa-partner.momorooms.com/auth/oauth/token
          scopes:
            read_rooms: sample scope to execute read operations
            write_rooms: sample scope to execute write operations

security:
  - oAuthSecurity:
      - read_rooms
      - write_rooms
