openapi: 3.0.0
info:
  version: 1.0.0-beta
  title: Holidu Channel API
servers:
  - url: https://chapi.holidu.com/v1
    description: Production URL
  - url: https://chapi.holidu.io/v1
    description: Staging URL
  - url: http://localhost:8080/v1
    description: Local URL
paths:
  /updates/listings:
    get:
      summary: Return a collection of Listing Updates
      tags:
        - Updates Controller
      operationId: getListingUpdates
      parameters:
        - name: cursor
          in: query
          required: false
          description: Cursor to retrieve subsequent pages of results.
          schema:
            type: string
        - name: limit
          in: query
          required: false
          description: The maximum number of listing updates returned by API.
          schema:
            type: integer
            format: int32
            minimum: 1
            default: 25
            maximum: 50
      responses:
        200:
          description: A JSON array of Listing updates
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListingUpdates'
        401:
          description: Lacks valid authentication credentials for the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        422:
          description: Incoming Request cannot be processed due to malformed input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        429:
          description: Request Limit Exceeded (Too many requests in a given amount of time)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Internal Server Error occurred while processing the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /updates/pricing:
    get:
      summary: Return a collection of Pricing Updates
      tags:
        - Updates Controller
      operationId: getPricingUpdates
      parameters:
        - name: cursor
          in: query
          required: false
          description: Cursor to retrieve subsequent pages of results.
          schema:
            type: string
        - name: limit
          in: query
          required: false
          description: The maximum number of pricing updates returned by API.
          schema:
            type: integer
            format: int32
            minimum: 1
            default: 25
            maximum: 50
      responses:
        200:
          description: A JSON array of Pricing updates
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PricingUpdates'
        401:
          description: Lacks valid authentication credentials for the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        422:
          description: Incoming Request cannot be processed due to malformed input.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        429:
          description: Request Limit Exceeded (Too many requests in a given amount of time)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Internal Server Error occurred while processing the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /listings/{listingId}:
    get:
      summary: Returns Listing Content.
      tags:
        - Content Controller
      operationId: getListingById
      parameters:
        - name: listingId
          in: path
          required: true
          description: Listing Identifier
          schema:
            type: string
      responses:
        200:
          description: Return the Listing object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListingDto'
        401:
          description: Lacks valid authentication credentials for the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        404:
          description: Requested Listing Content Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        429:
          description: Request Limit Exceeded (Too many requests in a given amount of time)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Internal Server Error occurred while processing the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /listings/{listingId}/unit-types/{unitTypeId}/pricing:
    get:
      summary: Returns Pricing Content.
      tags:
        - Content Controller
      operationId: getPricingByListingIdAndUnitTypeId
      parameters:
        - name: listingId
          in: path
          required: true
          description: Listing Identifier
          schema:
            type: string
        - name: unitTypeId
          in: path
          required: true
          description: Unit Type Identifier
          schema:
            type: string
      responses:
        200:
          description: Return the Pricing object
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PricingDto'
        401:
          description: Lacks valid authentication credentials for the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        404:
          description: Requested Pricing Content Not Found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        429:
          description: Request Limit Exceeded (Too many requests in a given amount of time)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Internal Server Error occurred while processing the request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /bookings/{bookingId}:
    get:
      summary: Returns Booking Content.
      tags:
        - Booking Controller
      operationId: getBookingById
      parameters:
        - name: bookingId
          in: path
          required: true
          description: Booking Identifier.
          schema:
            type: string
      responses:
        200:
          description: Return the Booking object.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookingDto'
        401:
          description: Lacks valid authentication credentials for the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        404:
          description: Requested Booking Content Not Found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        429:
          description: Request Limit Exceeded (Too many requests in a given amount of time).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Internal Server Error occurred while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /bookings:
    post:
      summary: Post new traveller booking request.
               If your booking creation call contains payment data, you are not allowed to call our API directly, as we are not PCI Compliant. You should do a call through PCI Proxy, via the link that we will provide to you separately. The request object, response object & authentication of the PCI Proxy endpoint are identical to this endpoint, as shown here.
      tags:
        - New Booking
      operationId: createBooking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BookingRequest'
      responses:
        201:
          description: Successfully created a booking.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookingResponse'
        400:
          description: Booking Request is Malformed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookingErrorResponse'
        401:
          description: Lacks valid authentication credentials for the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        429:
          description: Request Limit Exceeded (Too many requests in a given amount of time).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Internal Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /bookings/{bookingId}/cancel:
    put:
      summary: Cancellation Request for existing traveller booking.
      tags:
        - Cancel Booking
      operationId: cancelBooking
      parameters:
        - name: bookingId
          in: path
          required: true
          description: Booking Identifier.
          schema:
            type: string
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BookingCancellationRequest'
      responses:
        200:
          description: Successfully cancelled the Booking.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookingResponse'
        400:
          description: Booking Cancellation Request is Malformed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookingErrorResponse'
        401:
          description: Lacks valid authentication credentials for the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        429:
          description: Request Limit Exceeded (Too many requests in a given amount of time).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Internal Server Error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
  /bookings/price-check:
    post:
      summary: Returns the price information for the potential Booking.
      tags:
        - Live Price Check Controller
      operationId: postPriceQuery
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PriceQuery'
      responses:
        200:
          description: Response containing all the price information related to Price Query.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PriceQueryResponse'
        400:
          description: Price Query Request is Malformed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PriceQueryErrorResponse'
        401:
          description: Lacks valid authentication credentials for the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        429:
          description: Request Limit Exceeded (Too many requests in a given amount of time).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Internal Server Error occurred while processing the request.
          content:
            application/json:
              schema:
                $ref:
                  '#/components/schemas/ErrorResponse'
  /updates/bookings:
    get:
      summary: Return a collection of Booking Updates.
      tags:
        - Updates Controller
      operationId: getBookingUpdates
      parameters:
        - name: cursor
          in: query
          required: false
          description: Cursor to retrieve subsequent pages of results.
          schema:
            type: string
        - name: limit
          in: query
          required: false
          description: The maximum number of booking updates returned by API.
          schema:
            type: integer
            format: int32
            minimum: 1
            default: 25
            maximum: 50
      responses:
        200:
          description: A JSON array of Booking updates.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BookingUpdates'
        401:
          description: Lacks valid authentication credentials for the requested resource.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        429:
          description: Request Limit Exceeded (Too many requests in a given amount of time).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Internal Server Error occurred while processing the request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'

components:
  schemas:
    ListingUpdates:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        updates:
          type: array
          items:
            $ref: '#/components/schemas/ListingUpdate'
        next:
          type: string
          description: This value can be passed in `cursor` field to get next batch of updates.
          example: eJyrViopVrJSMjIwtNQ1sNA1MggxMrIyMrcyMNWzMDCMUtJRykxRsjK0MDGrBQDckAn3
    ListingUpdate:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        listingId:
          type: string
          description: Listing Identifier
          example: 76789
        listingUrl:
          type: string
          description: Location of Listing File
          example: /listings/76789
        active:
          type: boolean
          description: |
            Represents if this Listing should be published/live on channel
            - *true* - The listing needs to be active to accept traveller bookings
            - *false* - The listing needs to be inactive and should not accept any future bookings
          example: true
        version:
          type: string
          description: Version of Listing update.
          example: 124
    PricingUpdate:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        listingId:
          type: string
          description: Listing Identifier
          example: 76789
        unitTypeId:
          type: string
          description: Unit Type Identifier
          example: 76789-1
        pricingUrl:
          type: string
          description: Location of Pricing File
          example: /listings/76789/unit-types/76789-1/pricing
        version:
          type: string
          description: Version of Pricing update.
          example: 124
    PricingUpdates:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        updates:
          type: array
          items:
            $ref: '#/components/schemas/PricingUpdate'
        next:
          type: string
          description: This value can be passed in `cursor` field to get next batch of updates.
          example: eJyrViopVrJSMjIwtNQ1sNA1MggxMrIyMrcyMNWzMDCMUtJRykxRsjK0MDGrBQDckAn3
    AvailabilityDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        date:
          type: string
          description: Available Date
          format: date
          example: 2021-12-09
        unitsAvailable:
          type: integer
          format: int32
          description: Number of Units Available
          example: 2
    LosItemDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        price:
          type: array
          description: Array of prices per length of stay corresponding to a particular check-in date
          items:
            type: number
            example: [100.25,200.49,300.0]
        currency:
          type: string
          example: EUR
          x-extensible-enum:
            - EUR
          description: |
            Currency Value for Prices.
            <br/>
            Currently Supported Values:
            <br/>
            |`Currency`|`Description`|
            |-|-|
            |EUR|Euro(€)|
            <br/>
        maxOccupancy:
          type: integer
          description: Occupancy Count for which prices are defined.
          example: 2
    LosItemsDto:
      type: array
      items:
        $ref: '#/components/schemas/LosItemDto'
    LosRecordsDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        los:
          description: |
            - We support LOS for dates only up to 2 years from today
            - We support a max length of 30 nights stay for each date
          additionalProperties:
            $ref: '#/components/schemas/LosItemsDto'
    PricingDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        listingId:
          type: string
          description: Listing Identifier
          example: 76789
        unitTypeId:
          type: string
          description: Unit Type Identifier
          example: 76789-1
        availabilities:
          type: array
          items:
            $ref: '#/components/schemas/AvailabilityDto'
        losRecords:
          $ref: '#/components/schemas/LosRecordsDto'
    LocationDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: Represent Location information of the listing.
      properties:
        lat:
          type: number
          description: Latitude value
          example: 50.9293009
        lng:
          type: number
          description: Longitude value
          example: 5.9779776
        country:
          type: string
          description: Country Name
          example: Germany
        city:
          type: string
          description: City/Town Name
          example: Munich
        street:
          type: string
          description: Street Information
          example: Karlstrasse 66
        postCode:
          type: string
          description: Postal Code
          example: 76133
    ReviewDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        reviewId:
          type: string
          description: Review Identifier
          example: REVIEW-1
        reviewCreation:
          type: string
          description: Review's Creation Date
          format: date-time
          example: 2021-12-23T15:17:59.136Z
        arrivalDate:
          type: string
          description: Guest's arrival date string for the stay
          format: date
          example:
        headline:
          type: string
          description: Headline of the Review
          example: Best Finca in Germany
        language:
          type: string
          description: Locale of the review content
          example: en
        text:
          type: string
          description: Review Content placeholder for neutral content
          example: Really nice Finca.
        textPositive:
          type: string
          description: Review Content placeholder for positive content
          example: Beautiful Garden. Plenty Sunlight.
        textNegative:
          type: string
          description: Review Content placeholder for negative content
          example: There is no tea kettle.
        score:
          type: number
          description: Score provider by guest for the stay (out of 5)
          example: 4.2
          maximum: 5.0
    ReviewSummaryDto:
      #Added as a separate object to avoid breaking change, should be clubbed with the ReviewsDto when a new version is released.
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        averageScore:
          type: number
          description: Average review score for the listing (out of 5)
          maximum: 5.0
          minimum: 1.0
          example: 4.5
        count:
          type: integer
          description: Number of reviews available for the listing
          minimum: 0
          example: 25
    DateRangeDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        from:
          type: string
          description: Date range start date
          format: date
          example: 2020-08-01
        to:
          type: string
          description: Date range end date
          format: date
          example: 2021-08-01
    ExtraCostDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        typeOfExtraCost:
          type: string
          example: LINEN
          x-extensible-enum:
            - CLEANING
            - SECURITY_DEPOSIT
            - ADDITIONAL_GUEST
            - TAX
            - LINEN
            - TOWELS
            - BEACH_TOWELS
            - ENERGY
            - BREAKFAST
            - HIGHCHAIR
            - PET
            - BABY_BED
            - BIKE
            - EBIKE
            - AIRPORT_SHUTTLE
            - TRAIN_STATION_SHUTTLE
            - LUNCH
            - DINNER
          description: |
            Extra Cost Category
            <br/>
            Currently Supported Values:
            |`Extra Cost Type`|`Description`|
            |-|-|
            |CLEANING|extra charges for cleaning|
            |SECURITY_DEPOSIT|- Deposit amount for security<br/> - To be handed over to the homeowner<br/> - This amount is returned to the guest after stay|
            |ADDITIONAL_GUEST|additional charges for every extra guest|
            |TAX|taxes to be paid|
            |LINEN|additional charges for bed linens|
            |TOWELS|additional charges for towels|
            |BEACH_TOWELS|additional charges for beach/pool towels|
            |ENERGY|additional charges for electricity usage|
            |BREAKFAST|additional charges for breakfast|
            |HIGHCHAIR|additional charges for highchair|
            |PET|additional charges for pets|
            |BABY_BED|additional charges for baby-beds/cribs|
            |BIKE|additional charges for bikes provided|
            |EBIKE|additional charges for mobility ebikes|
            |AIRPORT_SHUTTLE|additional charges for shuttle services from airport|
            |TRAIN_STATION_SHUTTLE|additional charges for shuttle services from train station|
            |LUNCH|Additional charges for Lunch|
            |DINNER|Additional charges for Dinner|
            <br/>
        chargeCycle:
          type: string
          example: PER_PERSON
          x-extensible-enum:
            - PER_NIGHT
            - PER_STAY
            - PER_PERSON
            - PER_PERSON_PER_NIGHT
            - PER_PET
            - PER_PET_PER_NIGHT
            - PER_DAY
            - PER_RIDE
            - PER_RIDE_PER_PERSON
          description: |
            Charge Frequency of the extra cost.
            <br/>
            Currently Supported Values:
            <br/>
            |`Charge Cycle Type`|`Description`|
            |-|-|
            |PER_NIGHT|charges applied per night|
            |PER_STAY|charges applied for the entire duration<br/> of the stay including all the guests|
            |PER_PERSON|charges applied per person for the entire stay|
            |PER_PERSON_PER_NIGHT|charges applied per person per night|
            |PER_PET|charges applied per pet for the entire stay|
            |PER_NIGHT|charges applied per night|
            |PER_DAY|charges applied per day|
            |PER_RIDE|charges applied per ride in case of shuttles|
            |PER_RIDE_PER_PERSON|charges applied per ride per person in case of shuttles|
        price:
          type: number
          description: Unit price of the Extra Cost (upto 2 decimal places)
          example: 10.0
        currency:
          type: string
          example: EUR
          x-extensible-enum:
            - EUR
          description: |
            Currency Value for Prices.
            <br/>
            Currently Supported Values:
            <br/>
            |`Currency`|`Description`|
            |-|-|
            |EUR|Euro(€)|
            <br/>
        type:
          type: string
          x-extensible-enum:
            - MANDATORY
            - SELECTABLE
          description: |
            Field determining if the type of extra cost
            |`Type`|`Description`|
            |-|-|
            |MANDATORY|The extra cost mandatory to pay  |
            |SELECTABLE|The extra cost is applicable to pay if traveller want's to avail the amenity|
            <br/>
          example: MANDATORY
        paymentTime:
          type: string
          description: |
            The field describes when the extra cost amount is to be charged.
            | **Payment Time** | **Description** |
            |---|---|
            |ON_BOOKING| This denotes that amount will charged while traveller's booking on portal.|
            |ON_SITE| This denotes that amount will be charged by Host at the property at time of Traveller Check-In.|
          example: ON_SITE
          x-extensible-enum:
            - ON_BOOKING
            - ON_SITE
    DimensionDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        width:
          type: integer
          description: Width Dimension Value
          example: 1920
          format: int32
        height:
          type: integer
          description: Height Dimension Value
          example: 1080
          format: int32
    PhotoDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        id:
          type: string
          description: Photo's Identifier
          example: PHOTO-1
        url:
          type: string
          description: Photo's Resource URL
          example: https://r-ec.bstatic.com/images/hotel/max500/149/14959242.jpg
        position:
          type: integer
          description: Field representing the sorting order of photos
          example: 1
        type:
          type: string
          example: INTERIOR
          x-extensible-enum:
            - PROPERTY_PLAN
            - INTERIOR
            - EXTERIOR
          description: |
            The field indicates the location of the photo in the listing (inside or outside the unit) or if the photo is just the ground plan.
            <br/>
            Currently Supported Values:
            |`Photo Category`|`Description`|
            |-|-|
            |PROPERTY_PLAN|Photos of the ground plan of the listing, showing the orientation of the rooms|
            |INTERIOR|Photos from the inside of the rental units showing the living room, bedroom, bathroom, etc|
            |EXTERIOR|Photos of the outdoor area of the listing showing garden, pool, terrace, etc|
            <br/>
        size:
          $ref: '#/components/schemas/DimensionDto'
        photoTags:
          type: array
          x-extensible-enum:
            - POOL
            - INSIDE
            - OUTSIDE
            - BATHROOM
            - BEDROOM
            - GARDEN
            - TERRACE
            - KITCHEN
          description: |
            Tags representing the category of photos.
            <br/>
            Currently Supported Values:
            |`Photo Tags`|`Description`|
            |-|-|
            |POOL|Photos of and around the pool area of the rooms|
            |INSIDE|Photos from the inside of the rental units|
            |OUTSIDE|Photos of the outdoor area of the rental unit|
            |BATHROOM|Photos of the bathrooms and toilets|
            |BEDROOM|Photos of the bedrooms|
            |GARDEN|Photos of the garden area|
            |TERRACE|Photos of the terrace|
            |KITCHEN|Photos of the cooking area|
            <br/>
          items:
            type: string
    LocalizationDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: This structure represents the genreal information, arrival details, description about surroundings.
      properties:
        language:
          type: string
          description: Locale of the information.
          example: en
        title:
          type: string
          description: Title of Unit Type
          example: La Grotta
        crucialInformation:
          type: string
          description: Crucial information about the listing.
          example: Pets are not allowed ...
        roomsAndAmenities:
          type: string
          description: Details about the rooms and amenities.
          example: The apartment has two rooms with WIFI ...
        outdoorArea:
          type: string
          description: "Details about garden, pool, balcony etc."
          example: There is a shared pool and a private garden ...
        surroundings:
          type: string
          description: Details about the attractions near by.
          example: A supermarket is near by ...
        additionalInformation:
          type: string
          description: Any other information about the apartment or additional fees.
          example: Cleaning on request for additional fee ...
        arrivalInstructions:
          type: string
          description: Details regarding how to reach to the property for guests.
          example: The Appartament can be reached by train via ...
    ListingDetailsDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        storey:
          type: integer
          format: int32
          example: 1
        sizeOfPlot:
          type: number
          description: Total area of the listing(in sqm).
          example: 140.5
        buildYear:
          type: integer
          description: Listing's Construction Year
          format: int32
          example: 2001
        modernizedYear:
          type: integer
          description: Listing's Last Renovated Year
          format: int32
          example: 2007
        license:
          type: string
          description: Listing's License Information
          example: string
        nationalIdentificationCode:
          type: string
          description: (CIN) National Identification Code for Italian (IT) properties
          example: string
        classification:
          type: string
          example: FOUR_STARS
          x-extensible-enum:
            - ONE_STAR
            - TWO_STARS
            - THREE_STARS
            - FOUR_STARS
            - FIVE_STARS
            - UNCLASSIFIED
          description: |
            Property classification according to French ATOUT star rating. Only applicable to French properties.
            
            Currently supported values:
            <br/>
            |`Classification`|`Description`|
            |-|-|
            |ONE_STAR|1 star hotel as per ATOUT ratings|
            |TWO_STARS|2 star hotel as per ATOUT ratings|
            |THREE_STARS|3 star hotel as per ATOUT ratings|
            |FOUR_STARS|4 star hotel as per ATOUT ratings|
            |FIVE_STARS|5 star hotel as per ATOUT ratings|
            |UNCLASSIFIED|The listing is not classified into any category|
            <br/>
        mainResidence:
          type: string
          example: PRIMARY
          x-extensible-enum:
            - PRIMARY
            - SECONDARY
            - NON_RESIDENTIAL
          description: |
            Field indicates if the listing is the main residence, vacation home or non residential. This is only applicable to French properties.
            
            Currently supported values:
            <br/>
            |`Type of Residence`|`Description`|
            |-|-|
            |`PRIMARY`|Primary residence is a place which home owner calls home for at least 8 months per year|
            |`SECONDARY`|Secondary residence is a vacation home|
            |`NON_RESIDENTIAL`|Non-residential residence is a room in a hotel or B&B|
            <br/>
        category:
          type: string
          example: APARTMENT
          x-extensible-enum:
            - APARTMENT
          description: |
            Category of the Listing type.
            <br/>
            Currently supported values:
            |`Listing Type`| `Description`|
            |-|-|
            |APARTMENT|Apartments are typically located in multi-unit residential buildings or complexes where other people live|
            |APARTMENT_HOTEL|Apartment hotels are hotel-like accommodations with rooms that feel more like apartments. They usually have a front desk, hotel-like amenities, and staff available to assist guests|
            |BED_AND_BREAKFAST|B&Bs are professional hospitality businesses that offer breakfast for guests. A host usually lives on the property|
            |BOAT|Boats and ships range from sailboats to luxury yachts that are moored while guests are visiting|
            |CAMPING|Camping area is an area of land where guests can set up their own tent, yurt, camper/RV, or tiny house|
            |CASTLE|Castles are majestic and often historical buildings with architectural features like towers, spires, and moats|
            |CHALET|Chalets are houses that are usually made of wood and have a sloping roof. Many are holiday homes in locations popular for skiing or summer homes|
            |COTTAGE|Cottages are cozy homes. They’re often located in rural areas or near a lake or beach|
            |FINCA|Finca refers to a piece of rural or agricultural land, typically with a cottage, farmhouse or estate building present, and often adjacent to a woodland or plantation where guests may interact with animals or enjoy recreational activities|
            |GUEST_HOUSE|Guest houses have a private entrance and are inside or attached to a larger structure like a house or garage. These are sometimes called in-laws|
            |HOLIDAY_VILLAGE|A holiday village is a holiday resort where the visitors stay in villas. There is a central area with shops, entertainment, and other amenities.|
            |VACATION_HOME|A holiday cottage, holiday home, or vacation property is accommodation used for holiday vacations, corporate travel, and temporary housing|
            |VILLA|Villas are luxurious homes that tend to have outdoor-indoor spaces and large yards, gardens, or pools|
            |STUDIO|Studio is a small apartment in which the normal functions of a number of rooms – often the living room, bedroom, and kitchen – are combined into a single room|
            |PENSION|Simple, not very luxury, form of a Multi Unit (Rooms/Apartments), with Breakfast Option (most don’t have a restaurant)|
            |RESORT|Commercial establishment or complex designed primarily for recreational purposes and tourism.|
            |BUNGALOW|Style of house or cottage that is typically either a single story or has a second, half, or partial story, that is built into a sloped roof.|
            |TRULLO|A trullo is a round, stone house with a cone-shaped roof that originated in the Apulia region of Italy.|
            |HOUSE_BOAT|Houseboats are boats that are more like homes and are often set up as a primary residence. Choose “houseboat” if you have a floating home.|
            |HOLIDAY_HOME|Residential homes are residential buildings that are often stand-alone structures. Some houses, like duplexes, may share walls or outdoor areas with other houses.|
            |HUT|Huts are made from simple materials like wood or mud and often have thatched roofs made of straw.|
            |TREE_HOUSE|Treehouses are built into the trunks or branches of trees. Nature-loving guests may climb a ladder or stairs to enjoy beautiful views.|
            |RIAD|Riads are traditional Moroccan homes that are built around an open-air courtyard or garden.|
            |CARAVAN|Some campers/RVs may be half-home, half-vehicle while others are camping trailers with compact spaces built for the adventurous at heart.|
            |COUNTRY_HOUSE|A house in the country, especially a large and impressive house on an estate.|
            |GLAMPING|A form of camping involving accommodation and facilities more luxurious than those associated with traditional camping.|
            |RESIDENCE|Residences are typically located in multi-unit residential buildings or complexes where other people live.|
            <br/> 

    AmenityDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: Structure representing Amenity Information.
      properties:
        name:
          type: string
          x-extensible-enum:
            - YOUTH_GROUPS_NOT_ALLOWED
            - CHILDFRIENDLY
            - CHILDREN_ALLOWED
            - CHILDREN_NOT_ALLOWED
            - LGBTQ_FRIENDLY
            - STEP_FREE_ACCESS
            - STEP_FREE_INTERIOR
            - WIDE_DOORS
            - SHOWER_ROLL_IN
            - SHOWER_GRAB_RAILS
            - SHOWER_CHAIR
            - BATHTUB_CHAIR
            - BATHROOM_SINK_LOWERED
            - BATHROOM_EMERGENCY_CORD
            - BATHROOM_TURNING_CYCLE_MIN_1_5_M
            - TOILET_GRAB_RAILS
            - TOILET_RAISED
            - PETS_ALLOWED
            - PETS_NOT_ALLOWED
            - ANIMALS
            - BABY_CHANGING_TABLE
            - BABY_SAFETY_OUTLET_COVERS
            - CHILDREN_CUPS_PLATES
            - BABY_SAFETY_GATES
            - HIGHCHAIR
            - TOYS
            - TOYS_BOOKS_FOR_CHILDREN
            - BALCONY
            - TERRACE_COVERED
            - TERRACE_UNCOVERED
            - GARDEN
            - GARDEN_FURNITURE
            - PLAYGROUND
            - GRILL
            - SHOWER
            - SHOWER_OUTSIDE
            - BATHTUB
            - SEPARATE_TOILET
            - HAIRDRYER
            - SHAMPOO
            - TOWELS
            - TOWELS_NOT
            - TOILETRIES
            - BED_BABY
            - BEDLINEN
            - BEDLINEN_NOT
            - ENERGY
            - ENERGY_SOLAR
            - ENERGY_WIND
            - EV_CHARGER
            - HEATING
            - HEATING_NOT
            - ENERGY_HEAT_PUMPS
            - ENERGY_INFRARED_HEATING_PANELS
            - ENERGY_MASONRY_HEATER
            - ENERGY_SAVING_METHANE_DIGESTER
            - ENERGY_SAVING_SMART_CONTROLS
            - ENERGY_PHOTOVOLTAIC_SOLAR_PANELS
            - ENERGY_SOLAR_THERMAL_PANELS
            - EVENT_STAG_PARTY
            - EVENT_BIRTHDAY_ADULT
            - EVENT_BIRTHDAY_CHILD
            - EVENT_BABY_SHOWER
            - EVENT_WEDDING
            - EVENT_MEAL
            - OWN_PRODUCE_HERBS
            - OWN_PRODUCE_VEGETABLES
            - OWN_PRODUCE_FRUITS
            - OWN_PRODUCE_HONEY
            - OWN_PRODUCE_JAM
            - OWN_PRODUCE_OLIVE_OIL
            - OWN_PRODUCE_EGGS
            - OWN_PRODUCE_CHEESE
            - OWN_PRODUCE_BREAD
            - OWN_PRODUCE_NUTS
            - TV
            - TV_CABLE
            - TV_SATELLITE
            - DVD_PLAYER
            - CD_PLAYER
            - RADIO
            - SPEAKERS
            - TELEPHONE
            - GAME_CONSOLE_OTHER
            - WASHER
            - DRYER
            - FLAT_IRON
            - AIR_CONDITION
            - VENTILATOR
            - ELEVATOR
            - INTERNET_NOT
            - INTERNET_WIFI
            - INTERNET_WIFI_FOR_VIDEO_CALLS
            - KITCHEN
            - KITCHEN_NOT
            - OVEN
            - COOKTOP
            - MICROWAVE
            - FRIDGE
            - FREEZER
            - COFFEE_MACHINE
            - COFFEE
            - MIXER
            - TOASTER
            - KETTLE
            - SPICES
            - DISHES
            - CUTLERY
            - KITCHEN_UTENSILS
            - DRINKING_WATER_BOTTLED
            - DISH_DETERGENT
            - DISHCLOTH
            - SINK
            - LOCATION_REMOTE
            - LOCATION_IN_COUNTRYSIDE
            - LOCATION_IN_FOREST
            - LOCATION_IN_VILLAGE
            - LOCATION_IN_MOUNTAINS
            - LOCATION_ON_BEACHFRONT
            - LOCATION_ON_GOLF_COURSE
            - LOCATION_NEAR_WATER
            - MOBILITY_EBIKES
            - PARKING_AT_OBJECT
            - PARKING_GARAGE
            - PARKING_STREET
            - POOL_CHILDREN
            - POOL_HEATED
            - POOL_HOURS_LIMITED
            - POOL_AVAILABLE_ALL_YEAR
            - POOL_FENCED
            - POOL_INDOOR
            - POOL_OUTDOOR
            - WHIRLPOOL
            - CARBONMONOXIDE_DETECTOR
            - SMOKE_DETECTOR
            - SAFE
            - FENCED_PROPERTY
            - BREAKFAST
            - CHILDCARE
            - SKI_STORAGE
            - BIKE_PROVIDED
            - FIRST_AID_KIT
            - GYM
            - GYM_EQUIPMENT
            - TENNIS_COURT
            - BILLIARD_TABLE
            - TABLE_TENNIS
            - PUBLIC_TRANSPORTATION
            - BIKE_STORAGE
            - SMOKING_ALLOWED
            - SMOKING_NOT_ALLOWED
            - RECYCLING_GLASS
            - RECYCLING_PAPER
            - RECYCLING_ORGANIC
            - RECYCLING_PLASTIC
            - ENERGY_GREEN_ELECTRICITY_PROVIDER
            - ENERGY_GEOTHERMICS
            - ENERGY_SAVING_LIGHTING
            - WATER_SAVING_SHOWER
            - WATER_SAVING_TAPS
            - WATER_SAVING_TOILET
            - RAINWATER_TREATMENT
            - ECO_CLEANING_PRODUCTS
            - GREY_WATER_SYSTEM
            - INSULATION_GLASS
            - INSULATION_ROOF
            - INSULATION_WALL
            - INSULATION_FLOOR
            - INSULATION_NATURAL_MATERIALS
            - INSULATION_GREEN_COOL_ROOF
            - VIEW_LAKE
            - VIEW_CITY
            - VIEW_GARDEN
            - VIEW_LANDMARK
            - VIEW_MOUNTAIN
            - VIEW_RIVER
            - VIEW_SEA
            - WATERFRONT
            - SAUNA
            - CHIMNEY
            - TOYS_BOARD_GAME
            - CHECKIN_SELF
            - DEDICATED_WORKSPACE
            - VIDEO_ON_DEMAND
            - SKI_IN_OUT
          description: |
            Type of Amenity
            Currently Supported Values:
            <br/>
            <h4>Accessibility</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |YOUTH_GROUPS_NOT_ALLOWED | Property manager does not allow youth groups to rent the listing / unit|
            |CHILDFRIENDLY | The listing / unit is appropriate for children, youth, other young people of undefined age, families|
            |CHILDREN_ALLOWED | Property manager allows children in this unit|
            |CHILDREN_NOT_ALLOWED | Property manager does not allow children at this listing / unit|
            |LGBTQ_FRIENDLY | Property manager welcomes members of the LGBTQ community|
            |STEP_FREE_ACCESS | There are no steps to access the listing / unit.|
            |STEP_FREE_INTERIOR | There are no steps inside the listing / unit.|
            |WIDE_DOORS | All doors in the listing / unit are minimum 80cm wide|
            |SHOWER_ROLL_IN | The listing / unit has at least one roll in shower that is accessible by wheelchair and has no barriers|
            |SHOWER_GRAB_RAILS | At least one shower has grab rails for support |
            |SHOWER_CHAIR | The listing / unit has at least one shower chair|
            |BATHTUB_CHAIR | The listing / unit has at least one bathtub chair|
            |BATHROOM_SINK_LOWERED | The listing / unit has at least one low bathroom sink|
            |BATHROOM_EMERGENCY_CORD | The listing / unit has at least one emergency pull cord in the bathroom|
            |BATHROOM_TURNING_CYCLE_MIN_1_5_M | The bathroom has a minimum turning circle of 1.5 meters|
            |TOILET_GRAB_RAILS | At least one toilet has grab rails for support |
            |TOILET_RAISED | The listing / unit has at least one higher level toilet or a raised seat|
            <h4>Animals</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |PETS_ALLOWED | One or more pets are allowed|
            |PETS_NOT_ALLOWED | No pets are allowed|
            |ANIMALS | There are animals on site; not related to bringing pets|
            <h4>Babies / Children</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |BABY_CHANGING_TABLE | Diaper changing table is available|
            |BABY_SAFETY_OUTLET_COVERS | Electric sockets have safety covers to avoid child contact|
            |CHILDREN_CUPS_PLATES | Cups and plates are available for children|
            |BABY_SAFETY_GATES | Safety gates are available for stairs|
            |HIGHCHAIR | High chair for babies / small children is available for use|
            |TOYS | Toys are available for use|
            |TOYS_BOOKS_FOR_CHILDREN | There are books available for children|
            <h4>Balcony and Outside</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |BALCONY|The listing / unit has at least one balcony |
            |TERRACE_COVERED|The listing / unit has at least one terrace with some kind of cover over at least some part of it|
            |TERRACE_UNCOVERED|The listing / unit has at least one terrace which is completely uncovered|
            |GARDEN|The listing / unit has a garden / yard accessible by the guest|
            |GARDEN_FURNITURE|There is at least some minimal furniture in the garden|
            |PLAYGROUND|A children’s playground is available at the listing or nearby|
            |GRILL|The listing has at least one grill, or there is one nearby (fuel unspecified)|
            <h4>Bathroom</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |SHOWER|The listing / unit has at least one shower |
            |SHOWER_OUTSIDE|The listing / unit has at least one outdoor shower|
            |BATHTUB|The listing / unit has at least one bathtub|
            |SEPARATE_TOILET|The listing / unit has a separate toilet / additional toilet / half-bathroom|
            |HAIRDRYER|Hair-dryer is available for use|
            |SHAMPOO|Shampoo is available for use|
            |TOWELS|Towels are available for use|
            |TOWELS_NOT|No towels available|
            |TOILETRIES|Toiletries are available for use|
            <h4>Beds</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |BED_BABY|The listing / unit has at least one crib / baby bed, or one is available upon request|
            |BEDLINEN|Bedlinen is provided in the listing / unit|
            |BEDLINEN_NOT|Bedlinen is not provided in the listing / unit|
            <h4>Energy</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |ENERGY|The listing has electricity / energy, which may or may not be included|
            |ENERGY_SOLAR|Accommodation is powered at least in part by solar energy|
            |ENERGY_WIND|Accommodation is powered at least in part by wind energy|
            |EV_CHARGER|The listing has an electric vehicle charging station, a device that supplies electrical power for charging plug-in electric vehicles.|
            |HEATING|Heating is available to turn on in the listing / unit (type of heating unspecified)|
            |HEATING_NOT|No heating available in the listing / unit|
            |ENERGY_HEAT_PUMPS|The listing has a device used to optimize building heating by moving heat from one space to another.|
            |ENERGY_INFRARED_HEATING_PANELS|The listing has a system that heats a space's surface area but not volume, providing a similar amount of heat with less energy compared to convection, heaters.|
            |ENERGY_MASONRY_HEATER|The listing has a device where the periodic burning of fuel enables heat to be stored and slowly released over a long period of time.|
            |ENERGY_SAVING_METHANE_DIGESTER|The listing has a system that uses organic waste to produce a biogas used as energy.|
            |ENERGY_SAVING_SMART_CONTROLS|The listing has a system to remotely control home appliances and activity to enable a reduction in energy consumption.|
            |ENERGY_PHOTOVOLTAIC_SOLAR_PANELS|The listing has a system that converts sunlight into electricity.|
            |ENERGY_SOLAR_THERMAL_PANELS|The listing has a system that converts sunlight into electrical energy, primarily to heat water.|
            <h4>Events</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |EVENT_STAG_PARTY|Property manager allows stag parties at the listing|
            |EVENT_BIRTHDAY_ADULT|Property manager allows adult’s birthday celebrations at the listing|
            |EVENT_BIRTHDAY_CHILD|Property manager allows children’s birthday celebrations at the listing|
            |EVENT_BABY_SHOWER|Property manager allows baby shower at the listing|
            |EVENT_WEDDING|Property manager allows wedding party at the listing|
            |EVENT_MEAL|Property manager allows lunch / dinner / BBQ events at the listing|
            <h4>Farming</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |OWN_PRODUCE_HERBS|Homegrown herbs are offered at the listing|
            |OWN_PRODUCE_VEGETABLES|Homegrown vegetables are offered at the listing|
            |OWN_PRODUCE_FRUITS|Homegrown fruits are offered at the listing|
            |OWN_PRODUCE_HONEY|Homegrown and / or homemade honey is offered at the listing|
            |OWN_PRODUCE_JAM|Homegrown and / or homemade jam is offered at the listing|
            |OWN_PRODUCE_OLIVE_OIL|Homegrown and / or homemade oil is offered at the listing|
            |OWN_PRODUCE_EGGS|Homegrown eggs are offered at the listing|
            |OWN_PRODUCE_CHEESE|Homemade cheese is offered at the listing.|
            |OWN_PRODUCE_BREAD|Homemade bread is offered at the listing.|
            |OWN_PRODUCE_NUTS|Homegrown nuts are offered at the listing|
            <h4>Home Electronics</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |TV|The listing / unit has at least one TV|
            |TV_CABLE|TV has access to cable channels|
            |TV_SATELLITE|TV has access to satellite channels|
            |DVD_PLAYER|The listing / unit has at least one DVD player|
            |CD_PLAYER|The listing / unit has at least one CD player|
            |RADIO|Radio is available for use|
            |SPEAKERS|Speakers are available for playing music|
            |TELEPHONE|There is a telephone available to use|
            |GAME_CONSOLE_OTHER|The listing / unit has at least one gaming console (unspecified type)|
            |WASHER|The listing has at least one washing machine / washer, or there is access to one nearby|
            |DRYER|The listing has a dryer, or there is one nearby|
            |FLAT_IRON|Clothing iron is available in the listing, or upon request|
            |AIR_CONDITION|The listing has at least one air conditioner accessible to the guest|
            |VENTILATOR|The listing / unit has at least one fan, including ceiling fans|
            |ELEVATOR|There is an elevator in the building where the unit is located|
            <h4>Internet</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |INTERNET_NOT|No internet is available in the listing / unit|
            |INTERNET_WIFI|Wifi is available in the listing / unit|
            |INTERNET_WIFI_FOR_VIDEO_CALLS|Wifi suitable for video calls is available in the listing / unit|
            <h4>Kitchen</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |KITCHEN|The listing / unit has a kitchen, or there is one accessible on site, including at least Cooktop, Fridge, Sink|
            |KITCHEN_NOT|The listing / unit has no access to a kitchen|
            |OVEN|The listing / unit has at least one oven, or there is access to one nearby|
            |COOKTOP|The listing / unit has at least one cooktop / stove, or there is access to one nearby|
            |MICROWAVE|The listing / unit has at least one microwave, or there is access to one nearby|
            |FRIDGE|The listing / unit has at least one refrigerator|
            |FREEZER|The listing / unit has at least one freezer|
            |COFFEE_MACHINE|The listing / unit has at least one coffee machine, or there is access to one nearby|
            |COFFEE|Complimentary coffee or coffee supplies / capsules are available on site|
            |MIXER|There is at least one mixer / blender for making smoothies, soups, etc.; includes mixing / blending wands|
            |TOASTER|Toaster is available for use|
            |KETTLE|Kettle (type unspecified) is  available for use|
            |SPICES|Spices are available for use with cooking|
            |DISHES|Dishes are available for use|
            |CUTLERY|Cutlery is available for use|
            |KITCHEN_UTENSILS|Kitchen utensils are available for use|
            |DRINKING_WATER_BOTTLED|Drinking water bottles available on site|
            |DISH_DETERGENT|Dish washing detergent is available for use|
            |DISHCLOTH|A dishcloth / dishtowel is available for use|
            |SINK|The listing / unit has at least one sink for use|
            <h4>Location</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |LOCATION_REMOTE|The listing is located in a secluded / remote place|
            |LOCATION_IN_COUNTRYSIDE|The listing is located in the countryside|
            |LOCATION_IN_FOREST|The listing is located in the forest|
            |LOCATION_IN_VILLAGE|The listing is located in a village|
            |LOCATION_IN_MOUNTAINS|The listing is located in the mountains|
            |LOCATION_ON_BEACHFRONT|The listing is located in front of the beach|
            |LOCATION_ON_GOLF_COURSE|The listing is located on a golf course|
            |LOCATION_NEAR_WATER|The listing is located near a water body|
            <h4>Mobility</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |MOBILITY_EBIKES|E-bikes are offered to travellers for their usage|
            <h4>Parking</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |PARKING_AT_OBJECT|Parking is available directly on the property|
            |PARKING_GARAGE|Parking in a garage is available|
            |PARKING_STREET|Street parking is available on site, or nearby|
            <h4>Pool</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |POOL_CHILDREN|The listing has at least one children’s pool, or there is one nearby|
            |POOL_HEATED|The listing has at least one heated pool, or there is one nearby|
            |POOL_HOURS_LIMITED|The pool is available only for limited time|
            |POOL_AVAILABLE_ALL_YEAR|The pool is available throughout the year|
            |POOL_FENCED|The pool is fenced|
            |POOL_INDOOR|The listing has at least one indoor pool, or there is one nearby|
            |POOL_OUTDOOR|The listing has at least one outdoor pool, or there is one nearby|
            |WHIRLPOOL|The listing has at least one Whirlpool / hot tub, or there is access to one nearby|
            <h4>Security</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |CARBONMONOXIDE_DETECTOR|The listing has a device that detects the presence of the carbon monoxide (CO) gas to prevent carbon monoxide poisoning|
            |SMOKE_DETECTOR|The listing / unit has at least one smoke detector|
            |SAFE|The listing / unit has a safe / lockbox / strongbox|
            |FENCED_PROPERTY|There is at least partial fencing at the listing|
            <h4>Services</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |BREAKFAST|Breakfast is available; could be a breakfast bar, bed and breakfast, etc., included in the price|
            |CHILDCARE|Childcare / babysitting services are available|
            |SKI_STORAGE|There is storage for ski equipment in the accommodation|
            |BIKE_PROVIDED|Bike provided for use by the property manager|
            |FIRST_AID_KIT|The listing has at least one first aid kit|
            |GYM|The listing has a private gym, or there is one nearby|
            |GYM_EQUIPMENT|Equipments for exercise are available at the listing|
            |TENNIS_COURT|There is a tennis court available to use nearby|
            |BILLIARD_TABLE|There is a billiard table at or near the listing|
            |TABLE_TENNIS|There is table tennis / ping pong table available nearby or at the listing|
            |PUBLIC_TRANSPORTATION|The listing is near public transportation connections|
            |BIKE_STORAGE|Shelter for bike parking is available|
            |LUNCH|Lunch is available|
            |DINNER|Dinner is available|
            <h4>Smoking</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |SMOKING_ALLOWED|Smoking is allowed at the listing|
            |SMOKING_NOT_ALLOWED|Smoking is not allowed at the listing|
            <h4>Sustainability</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |RECYCLING_GLASS|Separate garbage is provided for glass waste|
            |RECYCLING_PAPER|Paper waste is collected to be converted into reusable material|
            |RECYCLING_ORGANIC|Organic waste is collected to be converted into organic fertiliser|
            |RECYCLING_PLASTIC|Plastic waste is collected to be converted into reusable material|
            |ENERGY_GREEN_ELECTRICITY_PROVIDER|Energy is obtained from renewable sources like solar and wind|
            |ENERGY_GEOTHERMICS|Heat is obtained from natural heat generated within the earth, often in the form of hot water and steam|
            |ENERGY_SAVING_LIGHTING|LED light bulbs are significantly more energy-efficient and have longer lifespans compared to incandescent and fluorescent light bulbs|
            |WATER_SAVING_SHOWER|Showers equipped with shower heads designed to reduce water waste and consequently also energy usage for heating water|
            |WATER_SAVING_TAPS|Taps equipped with low-flow heads that mix air into the water flow to reduce water waste and consequently also energy usage for heating water|
            |WATER_SAVING_TOILET|Low-flow toilets that use significantly less water than traditional high-flow toilets to to be more water-efficient|
            |RAINWATER_TREATMENT|A system to collect and store rain from rooftops rather than allowing it to run off to be more water-efficient|
            |ECO_CLEANING_PRODUCTS|Cleaning products free of toxic chemicals and composed of environmentally friendly ingredients|
            |GREY_WATER_SYSTEM|A system that repurposes household wastewater for gardening or landscaping to be more water-efficient|
            |INSULATION_GLASS|Glass that improves window insulation and increases heating and cooling efficiency to reduce energy consumption|
            |INSULATION_ROOF|Thermal roof insulation reduces energy consumption for heating and cooling by impeding unwanted airflow|
            |INSULATION_WALL|Thermal wall insulation reduces energy consumption for heating and cooling by impeding unwanted airflow|
            |INSULATION_FLOOR|Thermal floor insulation reduces energy consumption for heating and cooling by impeding unwanted airflow|
            |INSULATION_NATURAL_MATERIALS|Thermal insulation is composed of natural fibres with limited environmental impact|
            |INSULATION_GREEN_COOL_ROOF|A rooftop enabling a reduction in energy consumption for heating or / or cooling by using vegetation to increase insulation or reflecting solar energy , more efficiently|
            <h4>Views</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |VIEW_LAKE|The listing / unit has a good view of the lake|
            |VIEW_CITY|The listing / unit has a good view of the city|
            |VIEW_GARDEN|The listing / unit has a good view of the garden / yard|
            |VIEW_LANDMARK|The listing / unit has a good view of a landmark(s)|
            |VIEW_MOUNTAIN|The listing / unit has a good view of the mountains|
            |VIEW_RIVER|The listing / unit has a good view of the river|
            |VIEW_SEA|The listing / unit has a good view of the sea|
            |WATERFRONT|The listing is positioned at the waterfront; the listing is first-tier to the water|
            <h4>Others</h4>
            |`Amenity Name`|`Description`|
            |-|-|
            |SAUNA|The listing has at least one sauna, or there is one nearby|
            |CHIMNEY|The listing has at least one chimney / fireplace|
            |TOYS_BOARD_GAME|There are board games available for use|
            |CHECKIN_SELF|Contactless self checkin is possible at arrival|
            |DEDICATED_WORKSPACE|Work desk is available for using laptop, computer etc|
            |VIDEO_ON_DEMAND|VOD, a media distribution system that allows users to stream and access videos (E.g. Netlix, Amazon Prime) is available at the listing|
            |SKI_IN_OUT|This is a ski-in / ski-out property|
          example: SAUNA
        maxCount:
          type: integer
          description: Represent the quantity of particular amenity type available
          format: int32
          example: 1
        privateUsage:
          type: boolean
          description: |
            Boolean flag representing the amenity have a private access.
            - *true* means the amenity is available for private use.
            - *false* means the amenity is shared
        onDemand:
          type: boolean
          description: |
            - *true* means amenity is on demand
            - *false* means it is available by default
        extraCostsApply:
          type: boolean
          description: |
            - *true* means amenity has extra cost
            - *false* means amenity does not have an extra cost
    MinLeadTimeDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: Minimum time between booking and guest check-in per property relative to check-in day 23:59 (local time). The property will not be available for booking if the time between booking time and check-in date (23:59 local time) is less than this minimum lead time duration. The property can be booked for the same day until 16:59 in the example below (7 hrs before 23:59 on check-in day).
      properties:
        duration:
          type: integer
          format: int32
          example: 7
        unit:
          type: string
          example: HOURS
    UnitTypeRulesDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: Structure representing the rules of stay in a Unit.
      properties:
        checkInFrom:
          type: string
          description: Check In Start Time
          example: 11:00
        checkInTo:
          type: string
          description: Check In End Time
          example: 11:00
        checkOutUntil:
          type: string
          description: Check Out End Time
          example: 11:00
        minLeadTime:
          $ref: '#/components/schemas/MinLeadTimeDto'
        freeStayCutoffAge:
          type: integer
          format: int32
          description: Represnting maximum age of guest for which guest is not charged.
          example: 2
        petsAllowed:
          type: boolean
          description: |
            Boolean flag for representing if Pets are allowed/ or not
            - *true* means Pets are allowed
            - *false* means Pets are not allowed
        childrenAllowed:
          type: boolean
          description: |
            Boolean flag for representing if Children(Age above 2 years and below 18 years) are allowed/ or not
            - *true* means Children are allowed
            - *false* means Children are not allowed
        babiesAllowed:
          type: boolean
          description: |
            Boolean flag for representing if Babies(Age above 0 years and below 2 years) are allowed/ or not
            - *true* means Babies are allowed
            - *false* means Babies are not allowed
        partiesAllowed:
          type: boolean
          description: |
            Boolean flag for representing if parties/events are allowed/ or not
            - *true* means parties/events are allowed
            - *false* means parties/events are not allowed
    BedDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        type:
          type: string
          description: |
            Type of Bed.
            <br/>
            Currently supported values:
            |`Bed Type`| `Description`|
            |-|-|
            |BED_KING|King size bed with dimensions around 76″ x 80″|
            |BED_BABY|Bed suitable for babies / infants|
            |BED_CHILDREN|Bed suitable for children|
            |BED_QUEEN|Queen size bed with dimensions around 60″ x 80″|
            |BED_DOUBLE|Bed for 2 persons size around 54″ x 75″|
            |BED_SINGLE|Bed for 1 person|
            |BED_BUNK|Bunk bed for 1 person|
            |BED_BUNK_2|Bunk bed for 2 persons|
            |BED_SLEEPING_COUCH|Sleeping couch for 1 person|
            |BED_SLEEPING_COUCH_2|Sleeping couch for 2 persons|
            <br/>
          example: BED_SINGLE
          x-extesnible-enum:
            - BED_KING
            - BED_BABY
            - BED_CHILDREN
            - BED_QUEEN
            - BED_DOUBLE
            - BED_SINGLE
            - BED_BUNK
            - BED_BUNK_2
            - BED_SLEEPING_COUCH
            - BED_SLEEPING_COUCH_2
        quantity:
          type: integer
          description: Quantity of Bed Type.
          format: int32
          example: 1
    RoomDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        roomId:
          type: string
          description: Room Identifier.
          example: string
        roomType:
          type: string
          example: BED_ROOM
          x-extensible-enum:
            - BED_ROOM
            - LIVING_ROOM
          description: |
            Type of Room.
            
            Currently supported values:
            <br/>
            |`Room Type`|`Description`|
            |-|-|
            |BED_ROOM|Room Type Bed room|
            |LIVING_ROOM|Room Type Living room|
            <br/>
        beds:
          type: array
          description: List of Beds available in Room.
          items:
            $ref: '#/components/schemas/BedDto'
    RoomsDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        numberOfBedrooms:
          type: integer
          format: int32
          example: 2
        numberOfLivingrooms:
          type: integer
          format: int32
          example: 1
        numberOfBathrooms:
          type: integer
          format: int32
          example: 2
        sleepingConfiguration:
          type: array
          description: List of rooms, each containing room information, bed configurations.
          items:
            $ref: '#/components/schemas/RoomDto'
    PeriodDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        cutoffTime:
          type: string
          description: |
            The end time reference of the period.
            <br/>
            |`Cut Off Time`|
            |-|
            |EARLIEST_CHECKIN|
            |NOON_ON_CHECKIN|
            |MIDNIGHT_BEFORE_CHECKIN|
            <br/>
          example: MIDNIGHT_BEFORE_CHECKIN
          x-extensible-enum:
            - EARLIEST_CHECKIN
            - NOON_ON_CHECKIN
            - MIDNIGHT_BEFORE_CHECKIN
        fullyRefundableExtraCosts:
          type: array
          description: |
            Fully refundable extra costs
            
            Currently supported values:
            <br/>
            |`Type of extra cost`|`Description`|
            |-|-|
            |CLEANING|Extra cost for cleaning|
          x-extensible-enum:
            - CLEANING
          items:
            type: string
        offset:
          type: integer
          format: int32
          example: 0
        refundPercent:
          type: integer
          description: Refund Percentage for this cancellation period.
          format: int32
          example: 0
        type:
          type: string
          description: |
            The date reference from which offset date is calculated.
            Currently supported values:
            <br/>
            |`Period Type`|
            |-|
            |CHECKIN|
            |CHECKOUT|
            |BOOKING|
            <br/>
          example: CHECKIN
          x-extensible-enum:
            - CHECKIN
            - CHECKOUT
            - BOOKING
        unit:
          type: string
          description: Unit for offset field
          example: DAYS
    PaymentPolicyDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: |
        Details indicating how the customer is charged for booking payment. In the below example, 100% of the booking amount will be charged 35 days before check-in.

        If the check-in is on 5 April 2023 at 12:00 PM, then the full amount will be charged before 12:00 PM on 1 March 2023.
        You can find our supported payment policies [here](https://holidu.atlassian.net/wiki/spaces/B2/pages/3653894702/Cancellation+Policies#Payment-Policies).
      properties:
        offset:
          type: integer
          format: int32
          example: 35
        percentage:
          type: integer
          description: Represent what percentage of Booking amount needs to be collected
          format: int32
          example: 100
        referenceDateType:
          type: string
          example: CHECKIN
          x-extensible-enum:
            - BOOKING_DATE
            - CHECKIN
            - CHECKOUT
          description: |
            This field represents the reference date from which the offset for payment policy is calculated.
            Currently supported values:
            <br/>
            |`Referance Date`|`Description`|
            |-|-|
            |BOOKING_DATE|Booking Creation Date|
            |CHECKIN|Check-In Date|
            |CHECKOUT|Check-Out Date|
            <br/>
        unit:
          type: string
          description: Unit for offset field
          example: DAYS
    CancellationPolicyDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        policyId:
          type: string
          description: Cancellation Policy Identifier
          example: STRICT
        paymentPolicies:
          type: array
          description: Representing how the guest will be charged for a booking.
          items:
            $ref: '#/components/schemas/PaymentPolicyDto'
        periods:
          type: array
          description: Representing rules for cancellation deadlines and refunds
          items:
            $ref: '#/components/schemas/PeriodDto'
    UnitTypeDetailsDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        maxPersons:
          type: integer
          description: Maximum occupancy of the unit type.
          format: int32
          example: 4
        category:
          type: string
          description: |
            Category of the unit type.
            <br/>
            Currently supported values:
            |`Unit Type`| `Description`|
            |-|-|
            |APARTMENT|Apartments are typically located in multi-unit residential buildings or complexes where other people live|
            |APARTMENT_HOTEL|Apartment hotels are hotel-like accommodations with rooms that feel more like apartments. They usually have a front desk, hotel-like amenities, and staff available to assist guests|
            |BED_AND_BREAKFAST|B&Bs are professional hospitality businesses that offer breakfast for guests. A host usually lives on the property|
            |BOAT|Boats and ships range from sailboats to luxury yachts that are moored while guests are visiting|
            |CAMPING|Camping area is an area of land where guests can set up their own tent, yurt, camper/RV, or tiny house|
            |CASTLE|Castles are majestic and often historical buildings with architectural features like towers, spires, and moats|
            |CHALET|Chalets are houses that are usually made of wood and have a sloping roof. Many are holiday homes in locations popular for skiing or summer homes|
            |COTTAGE|Cottages are cozy homes. They’re often located in rural areas or near a lake or beach|
            |FINCA|Finca refers to a piece of rural or agricultural land, typically with a cottage, farmhouse or estate building present, and often adjacent to a woodland or plantation where guests may interact with animals or enjoy recreational activities|
            |GUEST_HOUSE|Guest houses have a private entrance and are inside or attached to a larger structure like a house or garage. These are sometimes called in-laws|
            |HOLIDAY_VILLAGE|A holiday village is a holiday resort where the visitors stay in villas. There is a central area with shops, entertainment, and other amenities.|
            |VACATION_HOME|A holiday cottage, holiday home, or vacation property is accommodation used for holiday vacations, corporate travel, and temporary housing|
            |VILLA|Villas are luxurious homes that tend to have outdoor-indoor spaces and large yards, gardens, or pools|
            |STUDIO|Studio is a small apartment in which the normal functions of a number of rooms – often the living room, bedroom, and kitchen – are combined into a single room|
            |ROOM|Room contains private room sleeping arrangements and can have private and shared amenities.|
            |PENSION|Simple, not very luxury, form of a Multi Unit (Rooms/Apartments), with Breakfast Option (most don’t have a restaurant)|
            |RESORT|Commercial establishment or complex designed primarily for recreational purposes and tourism.|
            |BUNGALOW|Style of house or cottage that is typically either a single story or has a second, half, or partial story, that is built into a sloped roof.|
            |TRULLO|A trullo is a round, stone house with a cone-shaped roof that originated in the Apulia region of Italy.|
            |HOUSE_BOAT|Houseboats are boats that are more like homes and are often set up as a primary residence. Choose “houseboat” if you have a floating home.|
            |HOLIDAY_HOME|Residential homes are residential buildings that are often stand-alone structures. Some houses, like duplexes, may share walls or outdoor areas with other houses.|
            |HUT|Huts are made from simple materials like wood or mud and often have thatched roofs made of straw.|
            |TREE_HOUSE|Treehouses are built into the trunks or branches of trees. Nature-loving guests may climb a ladder or stairs to enjoy beautiful views.|
            |RIAD|Riads are traditional Moroccan homes that are built around an open-air courtyard or garden.|
            |CARAVAN|Some campers/RVs may be half-home, half-vehicle while others are camping trailers with compact spaces built for the adventurous at heart.|
            |COUNTRY_HOUSE|A house in the country, especially a large and impressive house on an estate.|
            |GLAMPING|A form of camping involving accommodation and facilities more luxurious than those associated with traditional camping.|
            |RESIDENCE|Residences are typically located in multi-unit residential buildings or complexes where other people live|.
            <br/>
          example: STUDIO
          x-extensible-enum:
            - APARTMENT
            - APARTMENT_HOTEL
            - BED_AND_BREAKFAST
            - BOAT
            - CAMPING
            - CASTLE
            - CHALET
            - COTTAGE
            - FINCA
            - GUEST_HOUSE
            - HOLIDAY_VILLAGE
            - VACATION_HOME
            - VILLA
            - STUDIO
            - ROOM
            - PENSION
            - RESORT
            - BUNGALOW
            - HOUSE_BOAT
            - HOLIDAY_HOME
            - HUT
            - COUNTRY_HOUSE
            - GLAMPING
            - TREE_HOUSE
            - RIAD
            - TRULLO
            - CARAVAN
            - RESIDENCE
        sizeInSqm:
          type: number
          description: Total area of unit type
          example: 100
        rooms:
          $ref: '#/components/schemas/RoomsDto'
        rules:
          $ref: '#/components/schemas/UnitTypeRulesDto'
        cancellationPolicy:
          $ref: '#/components/schemas/CancellationPolicyDto'
    UnitTypeDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        unitTypeId:
          type: string
          description: Unit Type Identifier
          example: 45607-1
        localizations:
          type: array
          items:
            $ref: '#/components/schemas/LocalizationDto'
        details:
          $ref: '#/components/schemas/UnitTypeDetailsDto'
        amenities:
          type: array
          items:
            $ref: '#/components/schemas/AmenityDto'
        photos:
          type: array
          items:
            $ref: '#/components/schemas/PhotoDto'
        extraCosts:
          type: array
          items:
            $ref: '#/components/schemas/ExtraCostDto'
        reviews:
          type: array
          items:
            $ref: '#/components/schemas/ReviewDto'
        reviewSummary:
          $ref: '#/components/schemas/ReviewSummaryDto'
    ChannelIdentifiersDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        channelName:
          type: string
          description: |
            Channel name.
            
            Currently supported values:
            <br/>
            |`Channel`|
            |-|
            |BOOKINGCOM|
            <br/>
          x-extensible-enum:
            - BOOKINGCOM
          example: BOOKINGCOM
        channelListingIdentifier:
          type: string
          description: identifier on the channel side
          example: 8090391
    ListingDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        listingId:
          type: string
          description: Listing Identifier
          example: 78909
        location:
          $ref: '#/components/schemas/LocationDto'
        photos:
          type: array
          items:
            $ref: '#/components/schemas/PhotoDto'
        amenities:
          type: array
          items:
            $ref: '#/components/schemas/AmenityDto'
        unitTypes:
          type: array
          items:
            $ref: '#/components/schemas/UnitTypeDto'
        details:
          $ref: '#/components/schemas/ListingDetailsDto'
        channelIdentifiers:
          type: array
          description: Listing Identifiers on channel side.
          items:
            $ref: '#/components/schemas/ChannelIdentifiersDto'
        cancellationPolicyId:
          type: string
          description: Cancellation Policy Id
        isDMOAffiliated:
          type: boolean
          description: |
            The flag indicates if the listing is affiliated with DMO
            - *true* - The listing is affiliated with DMO
            - *false* - The listing is not affiliated with DMO
            - *null* - The DMO affiliation doesn't apply for this listing. 

    BookingRequest:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        bookingId:
          type: string
          description: Booking Identifier.
          example: HA234CCD
        listingId:
          type: string
          description: Listing Identifier.
          example: 0a06a7b4-ad8f-4454-ba6f-c05c998504a2
        unitTypeId:
          type: string
          description: Unit Type Identifier.
          example: be49ebc5-37d1-49f8-bb6e-d5fe26c5b7bc
        cancellationPolicyId:
          type: string
          description: Cancellation Policy Identifier.
          example: STRICT
        guestDetails:
          $ref: '#/components/schemas/GuestDetailsDto'
        customer:
          $ref: '#/components/schemas/CustomerDto'
        price:
          $ref: '#/components/schemas/PriceDto'
        paymentMethod:
          oneOf:
            - $ref: '#/components/schemas/CreditCardPaymentMeanDto'
            - $ref: '#/components/schemas/VirtualCreditCardPaymentMeanDto'
        bookingCreationDate:
          type: string
          format: date-time
          description: Creation date on the booking platform.
          example: 2022-06-01T13:30:24.342Z
        arrivalDate:
          type: string
          format: date
          description: Arrival Date (YYYY-MM-DD format).
          example: 2022-10-20
        departureDate:
          type: string
          format: date
          description: Departure Date(YYYY-MM-DD format).
          example: 2022-10-29
        currency:
          type: string
          example: EUR
          x-extensible-enum:
            - EUR
          description: |
            Currency Value for Prices.
            <br/>
            Currently Supported Values:
            <br/>
            |`Currency`|`Description`|
            |-|-|
            |EUR|Euro(€)|
            <br/>
        paymentSchedules:
          type: array
          description: Payment schedules containing the payment amount and due date.
          items:
            $ref: '#/components/schemas/PaymentScheduleDto'
        brand:
          type: string
          description: Parameter to identify different booking sources within 1 channel
          example: Casamundo
      required:
        - arrivalDate
        - bookingCreationDate
        - bookingId
        - cancellationPolicyId
        - currency
        - customer
        - departureDate
        - guestDetails
        - listingId
        - paymentMethod
        - price
        - unitTypeId
        - paymentSchedules
    BookingCancellationRequest:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        listingId:
          type: string
          description: Listing Identifier.
          example: 0a06a7b4-ad8f-4454-ba6f-c05c998504a2
        unitTypeId:
          type: string
          description: Unit Type Identifier.
          example: be49ebc5-37d1-49f8-bb6e-d5fe26c5b7bc
        message:
          type: string
          description: Cancellation Message from the Customer.
          example: Cancallation Remarks from Customer Side
        reason:
          type: string
          description: |
            Currency Value for Prices.
            <br/>
            Currently Supported Values:
            <br/>
            |`Reason`|`Description`|
            |-|-|
            |CANCELLED_BY_CHANNEL|Channel has cancelled the booking|
            |CANCELLED_BY_GUEST|Guest has cancelled the booking|
            |CANCELLED_DUE_TO_REBOOKING|Cancellation due to rebook with different dates|
            |CANCELLED_DUE_TO_CHANGE_OF_PLANS|Cancellation due to change of plans|
            |CANCELLED_DUE_TO_MISTAKE_BOOKING|Cancellation due to booking mistake|
            |CANCELLED_OTHER|Other cancellation reason|
            <br/>
          x-extensible-enum:
            - CANCELLED_BY_CHANNEL
            - CANCELLED_BY_GUEST
            - CANCELLED_DUE_TO_REBOOKING
            - CANCELLED_DUE_TO_CHANGE_OF_PLANS
            - CANCELLED_DUE_TO_MISTAKE_BOOKING
            - CANCELLED_OTHER
          example: CANCELLED_BY_CHANNEL
      required:
        - listingId
        - cancellationReason
        - message
        - unitTypeId
        - reason
    PriceQuery:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        listingId:
          type: string
          description: Listing Identifier.
          example: 0a06a7b4-ad8f-4454-ba6f-c05c998504a2
        unitTypeId:
          type: string
          description: Unit Type Identifier.
          example: be49ebc5-37d1-49f8-bb6e-d5fe26c5b7bc
        arrivalDate:
          type: string
          format: date
          description: Arrival Date (YYYY-MM-DD format).
          example: 2022-10-20
        departureDate:
          type: string
          format: date
          description: Departure Date(YYYY-MM-DD format).
          example: 2022-10-29
        guestDetails:
          $ref: '#/components/schemas/GuestDetailsDto'
      required:
        - listingId
        - unitTypeId
        - arrivalDate
        - departureDate
        - guestDetails
    PriceQueryResponse:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        currency:
          type: string
          example: EUR
          x-extensible-enum:
            - EUR
          description: |
            Currency Value for Prices.
            <br/>
            Currently Supported Values:
            <br/>
            |`Currency`|`Description`|
            |-|-|
            |EUR|Euro(€)|
            <br/>
        price:
          $ref: '#/components/schemas/PriceDto'
        paymentSchedules:
          type: array
          description: Payment schedules containing the payment amount and due date.
          items:
            $ref: '#/components/schemas/PaymentScheduleDto'
    PriceQueryErrorResponse:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        errorCode:
          type: string
          description: |
            Field describing the category of error.

            Currently supported values:
            <br/>
            |`Error Code`|`Description`|
            |-|-|
            |REQUIRED_DATA_MISSING| Missing Required fields in Price query|
            |DATES_NOT_AVAILABLE|Requested Arrival and Departure Date not available|
            |NOT_FOUND|Unit Type associated with Price Query not found|
            <br/>
          x-extensible-enum:
            - REQUIRED_DATA_MISSING
            - DATES_NOT_AVAILABLE
            - NOT_FOUND
          example: REQUIRED_DATA_MISSING
        errorMsg:
          type: string
          description: Verbose Error Message.
          example: Missing required fields
    BookingResponse:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        bookingId:
          type: string
          description: Booking Identifier generated by Channel API during creation.
          example: 1AD6P7
        bookingStatus:
          type: string
          description: |
            Status of the booking.

            Currently supported values:
            <br/>
            |`Status`|`Description`|
            |-|-|
            |CONFIRMED|Booking created successfully|
            |CANCELLED|Booking cancelled successfully|
            <br/>
          x-extensible-enum:
            - CONFIRMED
            - CANCELLED
          example: CONFIRMED
      required:
        - bookingId
        - bookingStatus
    BookingDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        id:
          type: string
          description: Booking Identifier.
          example: 1AD6P7
        listingId:
          type: string
          description: Listing Identifier.
          example: 0a06a7b4-ad8f-4454-ba6f-c05c998504a2
        unitTypeId:
          type: string
          description: Unit Type Identifier.
          example: be49ebc5-37d1-49f8-bb6e-d5fe26c5b7bc
        cancellationPolicyId:
          type: string
          description: Cancellation Policy Identifier.
          example: STRICT
        status:
          type: string
          description: |
            Field describing status of the booking.

            Currently supported values:
            <br/>
            |`Status Type`| `Description`|
            |-|-|
            |CONFIRMED| Confirmed Boooking |
            |CANCELLED| Cancelled Booking |
            <br/>
          x-extensible-enum:
            - CONFIRMED
            - CANCELLED
          example: CONFIRMED
        guestDetails:
          $ref: '#/components/schemas/GuestDetailsDto'
        customer:
          $ref: '#/components/schemas/CustomerDto'
        price:
          $ref: '#/components/schemas/PriceDto'
        bookingCreationDate:
          type: string
          format: date-time
          description: Creation date on the booking platform.
          example: 2022-06-01T13:30:24.342Z
        arrivalDate:
          type: string
          format: date
          description: Arrival Date (YYYY-MM-DD format).
          example: 2022-10-20
        departureDate:
          type: string
          format: date
          description: Departure Date(YYYY-MM-DD format).
          example: 2022-10-29
        currency:
          type: string
          example: EUR
          x-extensible-enum:
            - EUR
          description: |
            Currency Value for Prices.
            <br/>
            Currently Supported Values:
            <br/>
            |`Currency`|`Description`|
            |-|-|
            |EUR|Euro(€)|
            <br/>
        paymentSchedules:
          type: array
          description: Payment schedules containing the payment amount and due date.
          items:
            $ref: '#/components/schemas/PaymentScheduleDto'
        commission:
          type: number
          description: The total commission that Holidu has to pay to partner for the booking.
          example: 268.90
        cancellationDetails:
          $ref: '#/components/schemas/CancellationDetailsDto'
        brand:
          type: string
          description: Parameter to identify different booking sources within 1 channel
          example: Casamundo
      required:
        - id
        - arrivalDate
        - bookingCreationDate
        - cancellationPolicyId
        - currency
        - customer
        - departureDate
        - guestDetails
        - listingId
        - price
        - unitTypeId
        - paymentSchedules
    BookingErrorResponse:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        operation:
          type: string
          description: |
            Field describing type of booking operation performed.

            Currently supported values:
            <br/>
            |`Operation Type`| `Description`|
            |-|-|
            |CREATION| New Booking Creation opeation. |
            |CANCELLATION| Existing Booking Cancellation operation.|
            <br/>
          x-extensible-enum:
            - CREATION
            - CANCELLATION
          example: CREATION
        bookingId:
          type: string
          description: Booking Identifier.
          example: 7890
        errorCode:
          type: string
          description: |
            Field describing the category of error.

            Currently supported values:
            <br/>
            |`Error Code`|`Description`|
            |-|-|
            |REQUIRED_DATA_MISSING| Missing Required fields in creation/modification/cancallation request|
            |PRE_CONDITION_FAILED| Modification / Cancellation request can only be performed for CONFIRMED bookings with arrival date in future|
            |DATES_NOT_AVAILABLE|Requested Arrival and Departure Date not available|
            |NOT_FOUND|Requested modification/cancellation for unknown booking|
            <br/>
          x-extensible-enum:
            - REQUIRED_DATA_MISSING
            - PRE_CONDITION_FAILED
            - DATES_NOT_AVAILABLE
            - NOT_FOUND
          example: NOT_FOUND
        errorMsg:
          type: string
          description: Verbose Error Message.
          example: Requested Booking Id not Found
    BookingUpdates:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        updates:
          type: array
          items:
            $ref: '#/components/schemas/BookingUpdate'
        next:
          type: string
          description: This value can be passed in `cursor` field to get next batch of updates.
          example: eJyrViopVrJSMjIwtNQ1sNA1MggxMrIyMrcyMNWzMDCMUtJRykxRsjK0MDGrBQDckAn3
    BookingUpdate:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        bookingId:
          type: string
          description: Booking Identifier.
          example: 76789
        bookingUrl:
          type: string
          description: Location of Booking File.
          example: /bookings/76789
        version:
          type: string
          description: Version of Booking update.
          example: 124
    CancellationDetailsDto:
      required:
        - agent
        - cancelledAt
        - reason
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        cancelledAt:
          type: string
          description: Cancellation dateTime.
          format: date-time
          example: 2021-12-23T15:17:59.136Z
        refundAmount:
          type: number
          description: Cancellation amount that traveller will recieve back as refund.
          example: 202.90
        penalty:
          type: number
          description: Amount that traveller will be charged as penalty according to the cancellation policies.
          example: 202.90
        agent:
          type: string
          description: |
            Initiator of cancellation.
            | **Values** |
            |---|
            |GUEST|
            |HOME_OWNER|
            |CHANNEL|
            |PROVIDER|
          example: GUEST
          x-extensible-enum:
            - GUEST
            - HOME_OWNER
            - CHANNEL
            - PROVIDER
        reason:
          type: string
          description: |
            Cancellation reason.

            Currently supported values:
            <br/>
            |`Cancellation Reason`|`Description`|
            |-|-|
            |CANCELLED_DUE_TO_FORCE_MAJEURE|due to any natural calmity not under our control|
            |CANCELLED_DUE_TO_MISTAKE_BOOKING|due to booking made by mistake|
            |CANCELLED_DUE_TO_WRONG_CONFIGURATION|due to wrong configuration of the property|
            |CANCELLED_DUE_TO_CHANGE_OF_PLANS|due to changes in decision|
            |CANCELLED_DUE_TO_SUSPICIOUS_ACTIVITY|due to suspicion about the property|
            |CANCELLED_DUE_TO_PAYMENT|due to problems in payment|
            |CANCELLED_DUE_TO_OVERBOOKING|due to overbooking|
            |CANCELLED_DUE_TO_REBOOKING|due to another same booking created|
            |CANCELLED_OTHER|due to any other reasons not mentioned above|
            <br/>
          example: CANCELLED_DUE_TO_CHANGE_OF_PLANS
          x-extensible-enum:
            - CANCELLED_DUE_TO_FORCE_MAJEURE
            - CANCELLED_DUE_TO_MISTAKE_BOOKING
            - CANCELLED_DUE_TO_WRONG_CONFIGURATION
            - CANCELLED_DUE_TO_CHANGE_OF_PLANS
            - CANCELLED_DUE_TO_SUSPICIOUS_ACTIVITY
            - CANCELLED_DUE_TO_PAYMENT
            - CANCELLED_DUE_TO_OVERBOOKING
            - CANCELLED_DUE_TO_REBOOKING
            - CANCELLED_OTHER
        message:
          type: string
          description: Cancellation message.
          example: There was change of plans, had to cancel the bookings. Hope you understand
      description: Contains cancellation information when status of a booking is CANCELLED
    CustomerDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: Traveller contact details.
      properties:
        salutation:
          type: string
          description: Salutation.
          example: Mr.
        firstName:
          type: string
          description: First name.
        lastName:
          type: string
          description: Last name.
        gender:
          type: string
          example: MALE
          x-extensible-enum:
            - MALE
            - FEMALE
          description: |
            The field indicates the gender of the customer.
            <br/>
            Currently Supported Values:
            |`Gender`|
            |-|
            |MALE|
            |FEMALE|
            null
            <br/>
        email:
          type: string
          description: Email.
        address:
          $ref: '#/components/schemas/AddressDto'
        phoneNumber:
          type: string
          description: Phone number.
        locale:
          type: string
          description: Locale
          example: de_DE
      required:
        - firstName
        - lastName
        - email
        - phoneNumber
    AddressDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: Traveller Address Details.
      properties:
        street:
          type: string
          description: Street line with house number.
          example: BlumenStrasse 15A
        country:
          type: string
          description: Country.
          example: Germany
        city:
          type: string
          description: City.
          example: Munich
        state:
          type: string
          description: State.
          example: Bavaria
        zip:
          type: string
          description: Postal ZIP code.
          example: "81370"
      required:
        - city
        - country
        - state
        - street
        - zip
    PriceDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: Price Information containing the breakdown of booking costs.
      properties:
        basePrice:
          type: number
          description: Part of total price representing the nightly prices and additional guest fees.
          example: 300
        totalPrice:
          type: number
          description: Total Price charged for the traveller's booking.
          example: 500
        priceQueryId:
          type: string
          description: Trace id sent by channel api during the corresponding price query request should be sent here for every booking.
          example: 0a06a7b4-ad8f-4454-ba6f-c05c998504a2
        costs:
          type: array
          description: Costs breakdown of all the extra costs other than base price.
          items:
            $ref: '#/components/schemas/CostDto'
      required:
        - basePrice
        - totalPrice
        - priceQueryId
        - costs
    CostDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        name:
          type: string
          description: |
            The field describes type of extra cost.
            | **Type** |
            |---|
            |CLEANING|extra charges for cleaning|
            |SECURITY_DEPOSIT|- Deposit amount for security<br/> - To be handed over to the homeowner<br/> - This amount is returned to the guest after stay|
            |ADDITIONAL_GUEST|additional charges for every extra guest|
            |TAX|taxes to be paid|
            |LINEN|additional charges for bed linens|
            |TOWELS|additional charges for towels|
            |BEACH_TOWELS|additional charges for beach/pool towels|
            |ENERGY|additional charges for electricity usage|
            |BREAKFAST|additional charges for breakfast|
            |HIGHCHAIR|additional charges for highchair|
            |PET|additional charges for pets|
            |BABY_BED|additional charges for baby-beds/cribs|
            |BIKE|additional charges for bikes provided|
            |EBIKE|additional charges for mobility ebikes|
            |AIRPORT_SHUTTLE|additional charges for shuttle services from airport|
            |TRAIN_STATION_SHUTTLE|additional charges for shuttle services from train station|
            |LUNCH|Additional charges for Lunch|
            |DINNER|Additional charges for Dinner|
          example: CLEANING
          x-extensible-enum:
            - CLEANING
            - SECURITY_DEPOSIT
            - ADDITIONAL_GUEST
            - TAX
            - LINEN
            - TOWELS
            - BEACH_TOWELS
            - ENERGY
            - BREAKFAST
            - HIGHCHAIR
            - PET
            - BABY_BED
            - BIKE
            - EBIKE
            - AIRPORT_SHUTTLE
            - TRAIN_STATION_SHUTTLE
        chargeCycle:
          type: string
          x-extensible-enum:
            - PER_NIGHT
            - PER_STAY
            - PER_PERSON
            - PER_PERSON_PER_NIGHT
            - PER_PET
            - PER_PET_PER_NIGHT
            - PER_DAY
            - PER_RIDE
            - PER_RIDE_PER_PERSON
          description: |
            Charge Frequency of the Amenity cost.
            <br/>
            Currently Supported Values:
            <br/>
            |`Cost Applicable Type`|`Description`|
            |-|-|
            |PER_NIGHT|charges applied per night|
            |PER_STAY|charges applied for the entire duration<br/> of the stay including all the guests|
            |PER_PERSON|charges applied per person for the entire stay|
            |PER_PERSON_PER_NIGHT|charges applied per person per night|
            |PER_PET|charges applied per pet for the entire stay|
            |PER_NIGHT|charges applied per night|
            |PER_DAY|charges applied per day|
            |PER_RIDE|charges applied per ride in case of shuttles|
            |PER_RIDE_PER_PERSON|charges applied per ride per person in case of shuttles|
        totalPrice:
          type: number
          description: The field describes the total price amount of extra cost for the stay.
          example: 20.20
        paymentTime:
          type: string
          description: |
            The field describes when the extra cost amount is to be charged.
            | **Payment Time** | **Description** |
            |---|---|
            |ON_BOOKING| This denotes that amount will be charged while traveller's booking on portal.|
            |ON_SITE| This denotes that amount will be charged by Host at the property at time of Traveller Check-In.|
          example: ON_SITE
          x-extensible-enum:
            - ON_BOOKING
            - ON_SITE
        type:
          type: string
          x-extensible-enum:
            - MANDATORY
            - SELECTABLE
          description: |
            Field determining if the type of extra cost
            |`Type`|`Description`|
            |-|-|
            |MANDATORY|The extra cost mandatory to pay  |
            |SELECTABLE|The extra cost is applicable to pay if traveller want's to avail the amenity|
            <br/>
          example: MANDATORY
      required:
        - totalPrice
        - type
        - chargeCycle
        - name
        - paymentTime
    GuestDetailsDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        adultsCount:
          type: integer
          description: Adults Count.
          format: int32
          minimum: 1
        childrenCount:
          type: integer
          description: Children Count.
          format: int32
          minimum: 0
        babiesCount:
          type: integer
          description: Babies Count.
          format: int32
          minimum: 0
        petsCount:
          type: integer
          description: Pets Count.
          format: int32
          minimum: 0
        childrenAges:
          type: array
          items:
            type: integer
            description: Ages of the children.
            minimum: 0
      required:
        - adultsCount
        - babiesCount
        - childrenCount
        - petsCount
        - childrenAges
    CreditCardPaymentMeanDto:
      allOf:
        - $ref: '#/components/schemas/DefaultCreditCardPaymentMeanDto'
      type: object
      x-class-extra-annotation: "@lombok.experimental.SuperBuilder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: Structure of Credit Card Payment Means.
      properties:
        threeDSAuth:
          $ref: '#/components/schemas/ThreeDSAuthDto'
    VirtualCreditCardPaymentMeanDto:
      allOf:
        - $ref: '#/components/schemas/DefaultCreditCardPaymentMeanDto'
      type: object
      x-class-extra-annotation: "@lombok.experimental.SuperBuilder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: Structure of Virtual Credit Card Payment Means.
      properties:
        vccDetails:
          $ref: '#/components/schemas/VccDetailsDto'
      required:
        - vccDetails
    DefaultCreditCardPaymentMeanDto:
      allOf:
        - $ref: '#/components/schemas/PaymentMeanDto'
      type: object
      x-class-extra-annotation: "@lombok.experimental.SuperBuilder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: Structure of Default Credit Card Payment Means.
      properties:
        numberToken:
          type: string
          description: PCI Proxy encrypted credit card number.
        cvvToken:
          type: string
          description: PCI Proxy encrypted credit card cvc/cvv number.
        holderName:
          type: string
          description: Card Holder Name.
        expiration:
          type: string
          description: Credit card expiration.
          example: 02/2023
          format: MM/YYYY
      required:
        - numberToken
        - holderName
        - expiration
    ThreeDSAuthDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: 3DS Details.
      properties:
        cavv:
          type: string
          description: CAVV Code.
          example: AAACBiIygAICEUQBKTKAEbbbbb
        dsTransId:
          type: string
          description: Transaction Identifier.
          example: 17fd5cb3-15e3-4ea5-a6f4-bdf87ac6ed90
        eci:
          type: string
          description: ECI code.
          example: 05
        threeDSVersion:
          type: string
          description: 3DS Protocol Version.
          example: 2.1.0
        xid:
          type: string
          description: XID code.
          example: AgEAABf9XLMV406lpvS9+UgG7ZA=
      required:
        - cavv
        - eci
        - threeDSVersion
    VccDetailsDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: Details of virtual credit card.
      properties:
        activationDate:
          type: string
          description: Virtual credit card activation date. Specifies the date when the card can be charged.
          example: 2022-10-22
        currentBalance:
          type: number
          description: The actual balance.
          example: 100.0
        chargeUntil:
          type: string
          description: The last date when a virtual credit card can be charged.
          example: 2022-11-22
      required:
        - activationDate
        - currentBalance
        - chargeUntil
    PaymentScheduleDto:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        dueDate:
          type: string
          description: Due Date of Payment Amount (YYYY-MM-DD).
          format: date
          example: 2022-10-22
        amount:
          type: number
          description: Amount Due (Specified upto 2 decimal places).
          example: 700.0
      required:
        - dueDate
        - amount
    PaymentMeanDto:
      type: object
      x-class-extra-annotation: "@lombok.experimental.SuperBuilder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      description: Structure of Payment Means.
      properties:
        paymentMode:
          type: string
          description: |
            This field describes the payment mode used for booking request.
            
            Currently supported values:
            <br/>
            |`Payment Mode`|`Description`|
            |-|-|
            |CREDIT_CARD|Using a valid credit card for payment|
            |VIRTUAL_CREDIT_CARD|Any other means of payment|
            <br/>
          example: CREDIT_CARD
          x-extensible-enum:
            - CREDIT_CARD
            - VIRTUAL_CREDIT_CARD
      required:
        - paymentMode
      discriminator:
        propertyName: paymentMode
        mapping:
          CREDIT_CARD: CreditCardPaymentMeanDto
          VIRTUAL_CREDIT_CARD: VirtualCreditCardPaymentMeanDto
    ErrorResponse:
      type: object
      x-class-extra-annotation: "@lombok.Builder(toBuilder=true) @lombok.NoArgsConstructor @lombok.AllArgsConstructor"
      properties:
        errorCode:
          type: string
          description: |
            Field describing the category of error.

            Currently supported values:
            <br/>
            |`Error Code`|`Description`|
            |-|-|
            |UNAUTHORIZED|Unauthorized API call with invalid auth credentials|
            |NOT_FOUND|Requested resource not found|
            |UNPROCESSABLE_ENTITY|Input not processable|
            |TOO_MANY_REQUESTS|Request Limit Exceeded (Too many requests in a given amount of time)|
            |INTERNAL_SERVER_ERROR| Internal Server Error happend while processing the request|
            <br/>
          x-extensible-enum:
            - UNAUTHORIZED
            - NOT_FOUND
            - UNPROCESSABLE_ENTITY
            - TOO_MANY_REQUESTS
            - INTERNAL_SERVER_ERROR
          example: INTERNAL_SERVER_ERROR
        errorMsg:
          type: string
          description: Human Readable Error Message.
          example: Unexpected Error Happened on Server side.
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

security:
  - bearerAuth: []
