Swagger

openapi: 3.0.0
info:
  version: 0.0.1
  title: channels-plus-channel-api

paths:
  /properties:
    get:
      operationId: listProperties
      description: >-
        Find properties that match given search criteria. The response is an array of properties sorted by distance
        (nearest to furthest) unless otherwise specified. Each property includes a recommended package of the best
        available non-deal room rate. If deal codes are included, the best available deal room rate for each supported
        deal code will also be provided.
      parameters:
        - $ref: "#/components/parameters/SmApiId"
        - $ref: "#/components/parameters/SmApiKey"
        - name: page
          description: The page number of the results to fetch
          in: query
          schema:
            type: integer
            minimum: 1
            default: 1
        - name: perPage
          description: The number of results per page
          in: query
          schema:
            type: integer
            minimum: 0
            maximum: 100
            default: 20
            multipleOf: 10
        - name: latitude
          description: Specify a longitude (as well as a latitude and radius) to do searches around a specific location.
          required: true
          in: query
          schema:
            type: number
            minimum: -90
            maximum: 90
        - name: longitude
          description: Specify a longitude (as well as a latitude and radius) to do searches around a specific location.
          required: true
          in: query
          schema:
            type: number
            minimum: -180
            maximum: 180
        - name: radius
          description: The radius in Km to search around the specified latitude and longitude. The minimum value (and the default) is 15 and the maximum is 100.
          in: query
          schema:
            type: number
            default: 15
            minimum: 15
            maximum: 100
        - name: checkin
          description: The arrival date. Must be within 500 days in the future and in the format yyyy-mm-dd.
          required: true
          in: query
          schema:
            type: string
            format: date
        - name: checkout
          description: The departure date. Must be later than checkin. Must be between 1 and 30 days after checkin. Must be within 500 days in the future and in the format yyyy-mm-dd.
          required: true
          in: query
          schema:
            type: string
            format: date
        - name: rooms
          description: Use the rooms list specify exact occupants in each room. Do not use this if searching by totalAdults, totalChildren & totalRooms.
          in: query
          schema:
            type: array
            minItems: 1
            maxItems: 10
            items:
              type: object
              additionalProperties: false
              properties:
                adults:
                  type: integer
                  minimum: 0
                  maximum: 65535
                children:
                  type: integer
                  minimum: 0
                  maximum: 65535
              required:
                - adults
                - children
        - name: totalAdults
          description: Specify the total number of adults, must also specify totalRooms field. Do not use this if searching with occupants rooms list.
          in: query
          schema:
            type: integer
            minimum: 0
        - name: totalChildren
          description: Specify the total number of children, must also specify totalRooms field. Do not use this if searching with occupants rooms list.
          in: query
          schema:
            type: integer
            minimum: 0
        - name: totalRooms
          description: Specify the total number of rooms, must also specify totalAdults and/or totalChildren fields. Do not use this if searching with occupants rooms list.
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 10
        - name: sortBy
          description: Specify the sorting criteria for the results.
          in: query
          schema:
            type: string
            enum:
              - distance
              - name
            default: distance
        - name: sortDirection
          description: Specify the sorting direction for the results.
          in: query
          schema:
            type: string
            enum:
              - asc
              - desc
            default: asc
        - name: minStarRating
          description: Minimum star rating for properties in the results.
          in: query
          schema:
            type: number
            enum:
              - 1
              - 1.5
              - 2
              - 2.5
              - 3
              - 3.5
              - 4
              - 4.5
              - 5
              - 5.5
              - 6
        - name: maxStarRating
          description: Maximum star rating for properties in the results.
          in: query
          schema:
            type: number
            enum:
              - 1
              - 1.5
              - 2
              - 2.5
              - 3
              - 3.5
              - 4
              - 4.5
              - 5
              - 5.5
              - 6
        - name: propertyType
          description: Limit search criteria to properties of a specific type.
          in: query
          schema:
            type: string
            maxLength: 255
        - name: swimmingPoolAvailable
          description: Only return rates for properties that have a swimming pool.
          in: query
          schema:
            type: boolean
        - name: breakfastIncluded
          description: Only return rates with breakfast included.
          in: query
          schema:
            type: boolean
        - name: freeCancellation
          description: Only return rates with free cancellation periods.
          in: query
          schema:
            type: boolean
        - name: dealCodes
          description: return deal rate for properties that participates in the given deal
          in: query
          schema:
            type: array
            items:
              type: string
        - name: dealOnly
          description: exclude properties that are not on the deal with the given dealCode
          in: query
          schema:
            type: boolean
        - name: language
          description: used to specify is preferred language to return and fallback to property's default language
          in: query
          schema:
            type: string
            enum:
              - de
              - en
              - es
              - fr
              - id
              - it
              - pt
              - th

      responses:
        "200":
          description: successful
          headers:
            x-sm-request-id:
              schema:
                type: string
              description: uuid of the request, useful to provide to SiteMinder when raising issues.
            x-sm-trace-token:
              schema:
                type: string
              description: uuid used for tracing, useful to provide to SiteMinder when raising issues.
            ratelimit-policy:
              schema:
                type: string
              description: Shows the number of request allowed per number of seconds window. e.g. '100;w=60' means 100 request in a 60 seconds window.
            ratelimit-limit:
              schema:
                type: integer
              description: The number of requests allowed per window
            ratelimit-remaining:
              schema:
                type: integer
              description: The number of requests left for the time window.
            ratelimit-reset:
              schema:
                type: integer
              description: The number of seconds left for the window to reset
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: false
                  properties:
                    uuid:
                      type: string
                      description: Unique identifier for the property.
                    name:
                      type: string
                      description: The name of the property.
                    propertyType:
                      $ref: '#/components/schemas/TranslationText'
                      description: The type of the property with language information.
                    description:
                      $ref: '#/components/schemas/TranslationText'
                      description: A description of the property with language information.
                    address:
                      type: string
                      description: The address of the property.
                    suburb:
                      type: string
                      description: The suburb where the property is located.
                    state:
                      type: string
                      description: The state or region where the property is located.
                    country:
                      type: string
                      description: The country where the property is located.
                    email:
                      type: string
                      description: The contact email for the property.
                    phoneNumber:
                      type: string
                      description: The contact phone number for the property.
                    language:
                      type: string
                      maxLength: 16
                      description: The primary language used by the property.
                    latitude:
                      type: number
                      description: The latitude coordinate of the property.
                    longitude:
                      type: number
                      description: The longitude coordinate of the property.
                    checkinStartTime:
                      type: string
                      minLength: 1
                      maxLength: 10
                      description: The earliest time guests can check in.
                    checkinEndTime:
                      type: string
                      minLength: 1
                      maxLength: 10
                      description: The latest time guests can check in.
                    checkoutEndTime:
                      type: string
                      minLength: 1
                      maxLength: 10
                      description: The latest time guests must check out.
                    starRating:
                      $ref: '#/components/schemas/StarRatings'
                      description: The star rating of the property.
                    currency:
                      type: string
                      description: The currency of the price
                    photo:
                      $ref: '#/components/schemas/Photo'
                      description: A photo representing the property.
                    amenities:
                      type: array
                      description: Amenities that are available at this property
                      items:
                        $ref: '#/components/schemas/TranslationText'
                    acceptedCardTypes:
                      type: array
                      description: accepted credit card types at this property
                      items:
                        type: string
                        enum:
                          - AX
                          - DN
                          - DS
                          - JC
                          - MC
                          - CU
                          - VI
                      minItems: 1
                    totalCommissionPercentage:
                      type: number
                      description: The total commission percentage for this property.
                    siteminderCommissionPercentage:
                      type: number
                      description: SiteMinder's portion of the commission percentage.
                    channelCommissionPercentage:
                      type: number
                      description: The channel partner's portion of the commission percentage.
                    rooms:
                      type: array
                      description: Available rooms and their details.
                      items:
                        type: object
                        additionalProperties: false
                        properties:
                          roomRateUuid:
                            type: string
                            description: Unique identifier for this room rate.
                          roomTypeName:
                            $ref: '#/components/schemas/TranslationText'
                            description: The name of the room type with language information.
                          roomTypeDescription:
                            $ref: '#/components/schemas/TranslationText'
                            description: A description of the room type with language information.
                          ratePlanName:
                            type: string
                            description: The name of the rate plan for this room.
                          breakfastIncluded:
                            type: boolean
                            description: Indicates whether breakfast is included in the rate.
                          roomArea:
                            type: string
                            description: room area from room type with the unit of measurement
                            nullable: true
                          photo:
                            $ref: '#/components/schemas/Photo'
                            description: A photo of the room.
                          amenities:
                            type: array
                            description: Amenities that are available at this property
                            items:
                              $ref: '#/components/schemas/TranslationText'
                          views:
                            type: array
                            description: Views that are available for this room type
                            items:
                              $ref: '#/components/schemas/TranslationText'
                          bedConfigurations:
                            type: array
                            description: Bed configurations for this room type
                            items:
                              type: object
                              additionalProperties: false
                              properties:
                                bedCode:
                                  $ref: '#/components/schemas/TranslationText'
                                  description: The type of bed with language information.
                                quantity:
                                  type: number
                                  minimum: 1
                                  description: The number of beds of this type.
                          adults:
                            type: integer
                            description: The number of adults this rate is for.
                          children:
                            type: integer
                            description: The number of children this rate is for.
                          cancellationPolicy:
                            $ref: '#/components/schemas/CancelationPolicy'
                            description: The cancellation policy for this room rate.
                          prices:
                            type: array
                            description: The pricing options for this room, including any applicable deals.
                            items:
                              type: object
                              additionalProperties: false
                              properties:
                                totalPrice:
                                  type: number
                                  minimum: 0
                                  description: The total price for the stay.
                                dealCode:
                                  type: string
                                  description: The code of any deal applied to this price.
                                totalCommissionPercentage:
                                  type: number
                                  description: The total commission percentage for this specific rate.
                                siteminderCommissionPercentage:
                                  type: number
                                  description: SiteMinder's portion of the commission for this rate.
                                channelCommissionPercentage:
                                  type: number
                                  description: The channel partner's portion of the commission for this rate.
                              required:
                                - totalPrice
                                - totalCommissionPercentage
                                - siteminderCommissionPercentage
                                - channelCommissionPercentage
                          lowInventory:
                            type: boolean
                            description: Indicates whether this room type has low inventory available.
                        required:
                          - roomRateUuid
                          - roomTypeName
                          - ratePlanName
                          - breakfastIncluded
                          - adults
                          - children
                          - cancellationPolicy
                          - prices
                          - lowInventory
                    specialConditions:
                      $ref: '#/components/schemas/SpecialConditions'
                      description: Special conditions that apply to this property.
                  required:
                    - uuid
                    - name
                    - address
                    - state
                    - country
                    - phoneNumber
                    - language
                    - latitude
                    - longitude
                    - currency
                    - checkinStartTime
                    - checkoutEndTime
                    - acceptedCardTypes
                    - totalCommissionPercentage
                    - siteminderCommissionPercentage
                    - channelCommissionPercentage
                    - rooms
                    - specialConditions
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/RateLimitError"
        "500":
          $ref: "#/components/responses/ServerError"

  /properties/{uuid}:
    get:
      operationId: showProperty
      description: >-
        Get detailed information and room rates for a specific property that satisfies the given search criteria.
        This endpoint provides more comprehensive data about a single property, including its room types and available rates.
      parameters:
        - $ref: "#/components/parameters/SmApiId"
        - $ref: "#/components/parameters/SmApiKey"
        - name: uuid
          description: The unique identifier of the property
          required: true
          in: path
          schema:
            type: string
        - name: checkin
          description: The arrival date. Must be within 500 days in the future and in the format yyyy-mm-dd.
          required: true
          in: query
          schema:
            type: string
            format: date
        - name: checkout
          description: The departure date. Must be later than checkin. Must be between 1 and 30 days after checkin. Must be within 500 days in the future and in the format yyyy-mm-dd.
          required: true
          in: query
          schema:
            type: string
            format: date
        - name: rooms
          description: >-
            Use the rooms list to specify exact occupants in each room. Provides more accurate pricing.
            Do not use this if searching by totalAdults, totalChildren & totalRooms.
          in: query
          schema:
            type: array
            minItems: 1
            maxItems: 10
            items:
              type: object
              additionalProperties: false
              properties:
                adults:
                  type: integer
                  minimum: 0
                  maximum: 65535
                  description: Number of adults in the room
                children:
                  type: integer
                  minimum: 0
                  maximum: 65535
                  description: Number of children in the room
              required:
                - adults
                - children
        - name: totalAdults
          description: >-
            Specify the total number of adults across all rooms. Must also specify totalRooms field.
            Do not use this if searching with the occupants rooms list.
          in: query
          schema:
            type: integer
            minimum: 0
            maximum: 655350
        - name: totalChildren
          description: >-
            Specify the total number of children across all rooms. Must also specify totalRooms field.
            Do not use this if searching with the occupants rooms list.
          in: query
          schema:
            type: integer
            minimum: 0
            maximum: 655350
        - name: totalRooms
          description: >-
            Specify the total number of rooms. Must also specify totalAdults and/or totalChildren fields.
            Do not use this if searching with the occupants rooms list.
          in: query
          schema:
            type: integer
            minimum: 1
            maximum: 10
        - name: dealCode
          description: Only return rates associated with the given deal code
          in: query
          schema:
            type: string
        - name: language
          description: Specify the preferred language for returned content. Falls back to the property's default language if unavailable.
          in: query
          schema:
            type: string
            enum:
              - de
              - en
              - es
              - fr
              - id
              - it
              - pt
              - th

      responses:
        "200":
          description: Successful response
          headers:
            x-sm-request-id:
              schema:
                type: string
              description: UUID of the request, useful to provide to SiteMinder when raising issues.
            x-sm-trace-token:
              schema:
                type: string
              description: UUID used for tracing, useful to provide to SiteMinder when raising issues.
            ratelimit-policy:
              schema:
                type: string
              description: Shows the number of requests allowed per number of seconds window. e.g. '100;w=60' means 100 requests in a 60 seconds window.
            ratelimit-limit:
              schema:
                type: integer
              description: The number of requests allowed per window
            ratelimit-remaining:
              schema:
                type: integer
              description: The number of requests left for the time window.
            ratelimit-reset:
              schema:
                type: integer
              description: The number of seconds left for the window to reset
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  uuid:
                    type: string
                    description: Unique identifier of the property
                  name:
                    type: string
                    description: Name of the property
                  propertyType:
                    $ref: '#/components/schemas/TranslationText'
                    description: Type of the property with language information
                  description:
                    $ref: '#/components/schemas/TranslationText'
                    description: Detailed description of the property with language information
                  address:
                    type: string
                    description: Street address of the property
                  suburb:
                    type: string
                    description: Suburb where the property is located
                  state:
                    type: string
                    description: State or region where the property is located
                  country:
                    type: string
                    description: Country where the property is located
                  email:
                    type: string
                    description: Contact email address for the property
                  phoneNumber:
                    type: string
                    description: Contact phone number for the property
                  language:
                    type: string
                    maxLength: 16
                    description: Primary language used by the property
                  latitude:
                    type: number
                    description: Latitude coordinate of the property's location
                  longitude:
                    type: number
                    description: Longitude coordinate of the property's location
                  checkinStartTime:
                    type: string
                    minLength: 1
                    maxLength: 10
                    description: Earliest time guests can check in
                  checkinEndTime:
                    type: string
                    minLength: 1
                    maxLength: 10
                    description: Latest time guests can check in
                  checkoutEndTime:
                    type: string
                    minLength: 1
                    maxLength: 10
                    description: Latest time guests must check out
                  starRating:
                    $ref: '#/components/schemas/StarRatings'
                    description: Star rating of the property
                  currency:
                    type: string
                    description: Currency used for pricing at this property
                  photos:
                    type: array
                    description: Array of photos representing the property
                    items:
                      $ref: '#/components/schemas/Photo'
                  amenities:
                    type: array
                    description: Amenities available at this property
                    items:
                      $ref: '#/components/schemas/TranslationText'
                  acceptedCardTypes:
                    type: array
                    description: Credit card types accepted at this property
                    items:
                      type: string
                      enum:
                        - AX
                        - DN
                        - DS
                        - JC
                        - MC
                        - CU
                        - VI
                    minItems: 1
                  totalCommissionPercentage:
                    type: number
                    description: Total commission percentage for bookings at this property
                  siteminderCommissionPercentage:
                    type: number
                    description: SiteMinder's portion of the commission percentage
                  channelCommissionPercentage:
                    type: number
                    description: Channel partner's portion of the commission percentage
                  roomTypes:
                    type: array
                    description: Array of room types available at this property
                    items:
                      type: object
                      additionalProperties: false
                      properties:
                        name:
                          $ref: '#/components/schemas/TranslationText'
                          description: Name of the room type with language information
                        description:
                          $ref: '#/components/schemas/TranslationText'
                          description: Detailed description of the room type with language information
                        roomArea:
                          type: string
                          description: Size of the room, including the unit of measurement
                          nullable: true
                        photos:
                          type: array
                          description: Array of photos representing the room type
                          items:
                            $ref: '#/components/schemas/Photo'
                        amenities:
                          type: array
                          description: Amenities available in this room type
                          items:
                            $ref: '#/components/schemas/TranslationText'
                        views:
                          type: array
                          description: Views available from this room type
                          items:
                            $ref: '#/components/schemas/TranslationText'
                        bedConfigurations:
                          type: array
                          description: Possible bed configurations for this room type
                          items:
                            type: object
                            additionalProperties: false
                            properties:
                              bedCode:
                                $ref: '#/components/schemas/TranslationText'
                                description: Type of bed (e.g., "King", "Twin") with language information
                              quantity:
                                type: number
                                minimum: 1
                                description: Number of beds of this type in the room
                        roomRates:
                          type: array
                          description: Available rates for this room type
                          items:
                            type: object
                            additionalProperties: false
                            properties:
                              uuid:
                                type: string
                                description: Unique identifier for this room rate
                              ratePlanName:
                                type: string
                                description: Name of the rate plan
                              breakfastIncluded:
                                type: boolean
                                description: Indicates if breakfast is included in the rate
                              totalPrice:
                                type: number
                                description: Total price for the stay in this room
                                minimum: 0
                              taxes:
                                type: array
                                description: Breakdown of taxes applicable to this rate
                                items:
                                  type: object
                                  additionalProperties: false
                                  properties:
                                    name:
                                      type: string
                                      description: Name of the tax
                                    amount:
                                      type: number
                                      description: Amount of the tax
                                  required:
                                    - name
                                    - amount
                              fees:
                                type: array
                                description: Breakdown of fees applicable to this rate
                                items:
                                  type: object
                                  additionalProperties: false
                                  properties:
                                    name:
                                      type: string
                                      description: Name of the fee
                                    amount:
                                      type: number
                                      description: Amount of the fee
                                  required:
                                    - name
                                    - amount
                              adults:
                                type: integer
                                description: Number of adults this rate is for
                              children:
                                type: integer
                                description: Number of children this rate is for
                              cancellationPolicy:
                                $ref: '#/components/schemas/CancelationPolicy'
                                description: Cancellation policy for this rate
                              dealCode:
                                type: string
                                description: Code of any deal applied to this rate
                              totalCommissionPercentage:
                                type: number
                                description: Total commission percentage for this specific rate
                              siteminderCommissionPercentage:
                                type: number
                                description: SiteMinder's portion of the commission for this rate
                              channelCommissionPercentage:
                                type: number
                                description: Channel partner's portion of the commission for this rate
                              lowInventory:
                                type: boolean
                                description: Indicates if this room type has low inventory available
                            required:
                              - uuid
                              - ratePlanName
                              - breakfastIncluded
                              - totalPrice
                              - taxes
                              - fees
                              - adults
                              - children
                              - cancellationPolicy
                              - totalCommissionPercentage
                              - siteminderCommissionPercentage
                              - channelCommissionPercentage
                              - lowInventory
                      required:
                        - name
                  specialConditions:
                    $ref: '#/components/schemas/SpecialConditions'
                    description: Special conditions that apply to this property.
                required:
                  - uuid
                  - name
                  - address
                  - state
                  - country
                  - phoneNumber
                  - language
                  - latitude
                  - longitude
                  - checkinStartTime
                  - checkoutEndTime
                  - acceptedCardTypes
                  - totalCommissionPercentage
                  - siteminderCommissionPercentage
                  - channelCommissionPercentage
                  - currency
                  - roomTypes
                  - specialConditions

        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "429":
          $ref: "#/components/responses/RateLimitError"
        "500":
          $ref: "#/components/responses/ServerError"

  /properties/{uuid}/reservations:
    post:
      operationId: createPendingReservation
      description: >-
        Create a pending reservation to lock in rates and availabilities for a specific property.
        This endpoint allows you to temporarily hold a reservation before confirming it,
        ensuring the rates and room availability are secured for a short period.
      parameters:
        - $ref: "#/components/parameters/SmApiId"
        - $ref: "#/components/parameters/SmApiKey"
        - name: uuid
          description: The unique identifier of the property for which the reservation is being made
          required: true
          in: path
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                checkin:
                  type: string
                  format: date
                  description: The arrival date. Must be within 500 days in the future and in the format yyyy-mm-dd.
                checkout:
                  type: string
                  format: date
                  description: The departure date. Must be later than checkin. Must be between 1 and 30 days after checkin. Must be within 500 days in the future and in the format yyyy-mm-dd.
                dealCode:
                  type: string
                  nullable: true
                  description: The code of any deal to be applied to the reservation. If null, no deal will be applied.
                netInvoicing:
                  type: boolean
                  default: false
                  description: Indicates whether net invoicing should be applied to the reservation.
                rooms:
                  type: array
                  description: An array of room bookings for this reservation. Minimum 1, maximum 10 rooms.
                  items:
                    type: object
                    additionalProperties: false
                    properties:
                      roomRateUuid:
                        type: string
                        maxLength: 36
                        description: The unique identifier for the specific room rate being booked.
                      adults:
                        type: integer
                        minimum: 0
                        maximum: 255
                        description: The number of adults for this room booking.
                      children:
                        type: integer
                        minimum: 0
                        maximum: 255
                        description: The number of children for this room booking.
                      applyDeal:
                        type: boolean
                        nullable: true
                        description: Indicates whether to apply the deal (if any) to this specific room booking.
                    required:
                      - roomRateUuid
                      - adults
                      - children
                  minItems: 1
                  maxItems: 10

              required:
                - checkin
                - checkout
                - rooms
      responses:
        "200":
          description: Successful response. A pending reservation has been created.
          headers:
            x-sm-request-id:
              schema:
                type: string
              description: UUID of the request, useful to provide to SiteMinder when raising issues.
            x-sm-trace-token:
              schema:
                type: string
              description: UUID used for tracing, useful to provide to SiteMinder when raising issues.
          content:
            application/json:
              schema:
                type: object
                additionalProperties: false
                properties:
                  propertyUuid:
                    type: string
                    description: The unique identifier of the property for which the reservation is made.
                  propertyEmail:
                    type: string
                    description: The contact email address for the property.
                  propertyPhoneNumber:
                    type: string
                    description: The contact phone number for the property.
                  bookingReferenceId:
                    type: string
                    description: The unique identifier for this pending reservation.
                  expiresInMinutes:
                    type: number
                    description: The number of minutes before the pending reservation expires and is no longer valid.
                    minimum: 0
                  currencyCode:
                    type: string
                    description: The currency code for all monetary values in this response.
                  paymentTotal:
                    type: number
                    description: The total payment amount for the reservation, including all taxes and fees.
                  paymentTotalLessCommission:
                    type: number
                    description: The total payment amount minus the commission.
                  taxes:
                    type: array
                    description: An array of taxes applicable to this reservation.
                    items:
                      type: object
                      additionalProperties: false
                      properties:
                        name:
                          type: string
                          description: The name or type of the tax.
                        amount:
                          type: number
                          description: The amount of the tax.
                      required:
                        - name
                        - amount
                  fees:
                    type: array
                    description: An array of fees applicable to this reservation.
                    items:
                      type: object
                      additionalProperties: false
                      properties:
                        name:
                          type: string
                          description: The name or type of the fee.
                        amount:
                          type: number
                          description: The amount of the fee.
                      required:
                        - name
                        - amount
                  rooms:
                    type: array
                    description: An array of rooms included in this reservation.
                    items:
                      additionalProperties: false
                      properties:
                        roomUuid:
                          type: string
                          description: The unique identifier for this specific room.
                        roomTypeName:
                          type: string
                          description: The name of the room type.
                        roomRateUuid:
                          type: string
                          minLength: 1
                          maxLength: 36
                          description: The unique identifier for the rate plan applied to this room.
                        adults:
                          type: integer
                          minimum: 0
                          description: The number of adults for this room.
                        children:
                          type: integer
                          minimum: 0
                          description: The number of children for this room.
                        paymentTotal:
                          type: number
                          description: The total payment amount for this room.
                        totalCommissionPercentage:
                          type: number
                          description: The total commission percentage for this room booking.
                        siteminderCommissionPercentage:
                          type: number
                          description: SiteMinder's portion of the commission percentage for this room booking.
                        channelCommissionPercentage:
                          type: number
                          description: The channel partner's portion of the commission percentage for this room booking.
                      required:
                        - roomUuid
                        - roomTypeName
                        - roomRateUuid
                        - adults
                        - children
                        - paymentTotal
                        - totalCommissionPercentage
                        - siteminderCommissionPercentage
                        - channelCommissionPercentage
                    minItems: 1
                    maxItems: 10
                  licenses:
                    type: array
                    description: An array of licenses applicable to this property or room.
                    items:
                      type: object
                      additionalProperties: false
                      properties:
                        licenseType:
                          type: string
                          enum:
                            - property
                            - room
                          description: Indicates whether the license applies to the entire property or to a specific room.
                        licenseNumber:
                          type: string
                          description: The license number.
                        licenseIssueDate:
                          type: string
                          description: The date when the license was issued.
                      required:
                        - licenseType
                        - licenseNumber
                        - licenseIssueDate
                  cancellationPolicy:
                    $ref: '#/components/schemas/CancelationPolicy'
                    description: The cancellation policy applicable to this reservation.
                required:
                  - propertyUuid
                  - propertyPhoneNumber
                  - bookingReferenceId
                  - expiresInMinutes
                  - currencyCode
                  - paymentTotal
                  - paymentTotalLessCommissions
                  - rooms
                  - cancellationPolicy
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/ServerError"

  /reservations/{bookingReferenceId}:
    patch:
      operationId: modifyReservation
      description: >-
        Modify an existing reservation. This endpoint allows updating guest information
        for the primary guest and individual room guests. Note that this endpoint
        can only modify non-price impacting details of the reservation.
      parameters:
        - $ref: "#/components/parameters/SmApiId"
        - $ref: "#/components/parameters/SmApiKey"
        - name: bookingReferenceId
          description: The unique identifier of the reservation to be modified
          required: true
          in: path
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                guestTitle:
                  type: string
                  nullable: true
                  description: The title of the primary guest (e.g., Mr., Mrs., Ms., Dr.)
                guestFirstName:
                  type: string
                  nullable: true
                  description: The first name of the primary guest
                guestLastName:
                  type: string
                  nullable: true
                  description: The last name of the primary guest
                guestEmail:
                  type: string
                  nullable: true
                  description: The email address of the primary guest
                guestPhoneNumber:
                  type: string
                  nullable: true
                  description: The phone number of the primary guest
                guestAddress:
                  type: string
                  nullable: true
                  description: The street address of the primary guest
                guestCity:
                  type: string
                  nullable: true
                  description: The city of residence for the primary guest
                guestState:
                  type: string
                  nullable: true
                  description: The state or region of residence for the primary guest
                guestPostcode:
                  type: string
                  nullable: true
                  description: The postal or zip code of the primary guest
                guestCountry:
                  type: string
                  nullable: true
                  description: The country of residence for the primary guest
                guestRemarks:
                  type: string
                  nullable: true
                  description: Any additional remarks or special requests from the primary guest
                rooms:
                  type: array
                  description: An array of rooms in the reservation, allowing individual guest information updates
                  items:
                    type: object
                    additionalProperties: false
                    properties:
                      roomUuid:
                        type: string
                        description: The unique identifier of the room in the reservation
                      guestTitle:
                        type: string
                        nullable: true
                        description: The title of the guest for this specific room
                      guestFirstName:
                        type: string
                        nullable: true
                        description: The first name of the guest for this specific room
                      guestLastName:
                        type: string
                        nullable: true
                        description: The last name of the guest for this specific room
                      guestRemarks:
                        type: string
                        nullable: true
                        description: Any additional remarks or special requests for this specific room
                    required:
                      - roomUuid
                  maxItems: 10

      responses:
        "200":
          description: Successful response. The reservation has been modified successfully.
          headers:
            x-sm-request-id:
              schema:
                type: string
              description: UUID of the request, useful to provide to SiteMinder when raising issues.
            x-sm-trace-token:
              schema:
                type: string
              description: UUID used for tracing, useful to provide to SiteMinder when raising issues.
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/ServerError"

  /reservations/{bookingReferenceId}/confirmation:
    post:
      operationId: confirmReservation
      description: >-
        Confirm a pending reservation by providing guest details and payment information.
        This endpoint finalizes the booking process, transforming a temporary hold into a confirmed reservation.
      parameters:
        - $ref: "#/components/parameters/SmApiId"
        - $ref: "#/components/parameters/SmApiKey"
        - name: bookingReferenceId
          description: The unique identifier of the pending reservation to be confirmed
          required: true
          in: path
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              additionalProperties: false
              properties:
                paymentMethod:
                  type: string
                  enum:
                    - CreditCard
                    - VirtualCreditCard
                  description: The method of payment for the reservation
                cardNumber:
                  type: integer
                  description: The full number of the credit card or virtual credit card
                cardholderName:
                  type: string
                  description: The name of the cardholder as it appears on the card
                cardExpiry:
                  type: string
                  pattern: '^\d{2}\/\d{4}$'
                  description: The expiry date of the card in MM/YYYY format
                cardType:
                  type: string
                  enum:
                    - AX
                    - DN
                    - DS
                    - JC
                    - MC
                    - CU
                    - VI
                  description: The type of credit card (AX=American Express, DN=Diners, DS=Discover, JC=JCB, MC=Mastercard, CU=China UnionPay, VI=Visa)
                cardCvv:
                  type: string
                  pattern: '^\d{3,4}$'
                  description: The Card Verification Value (CVV) of the credit card
                vccActivationDateTime:
                  type: string
                  format: date-time
                  description: >-
                    VCC activation date/time. Expressed in ISO 8601 extended format.
                    Date Format - YYYY-MM-DDThh:mm:ss<.sss>(+|-)hh:mm where <.sss> is optional and can be 1 to 3 digits.
                  example: 2020-07-04T12:09:56.450-07:00
                vccDeactivationDateTime:
                  type: string
                  format: date-time
                  description: >-
                    VCC deactivation date/time. Expressed in ISO 8601 extended format.
                    Date Format - YYYY-MM-DDThh:mm:ss<.sss>(+|-)hh:mm where <.sss> is optional and can be 1 to 3 digits.
                  example: 2020-07-04T12:09:56.450-07:00
                vccCurrency:
                  type: string
                  description: The currency of the Virtual Credit Card (if applicable)
                vccBalance:
                  type: number
                  description: The balance available on the Virtual Credit Card (if applicable)
                guestTitle:
                  type: string
                  description: The title of the primary guest (e.g., Mr., Mrs., Ms., Dr.)
                guestFirstName:
                  type: string
                  description: The first name of the primary guest
                guestLastName:
                  type: string
                  description: The last name of the primary guest
                guestEmail:
                  type: string
                  description: The email address of the primary guest
                guestPhoneNumber:
                  type: string
                  description: The phone number of the primary guest
                guestAddress:
                  type: string
                  nullable: true
                  description: The street address of the primary guest (optional)
                guestCity:
                  type: string
                  nullable: true
                  description: The city of residence for the primary guest (optional)
                guestState:
                  type: string
                  nullable: true
                  description: The state or region of residence for the primary guest (optional)
                guestPostcode:
                  type: string
                  nullable: true
                  description: The postal or zip code of the primary guest (optional)
                guestCountry:
                  type: string
                  nullable: true
                  description: The country of residence for the primary guest (optional)
                guestRemarks:
                  type: string
                  nullable: true
                  description: Any additional remarks or special requests from the primary guest (optional)
                rooms:
                  type: array
                  description: An array of rooms in the reservation, each with its guest details
                  items:
                    type: object
                    additionalProperties: false
                    properties:
                      roomUuid:
                        type: string
                        minLength: 1
                        maxLength: 36
                        description: The unique identifier of the room in the reservation
                      guestTitle:
                        type: string
                        description: The title of the guest for this specific room
                      guestFirstName:
                        type: string
                        description: The first name of the guest for this specific room
                      guestLastName:
                        type: string
                        description: The last name of the guest for this specific room
                      guestRemarks:
                        type: string
                        nullable: true
                        description: Any additional remarks or special requests for this specific room (optional)
                    required:
                      - roomUuid
                      - guestTitle
                      - guestFirstName
                      - guestLastName
                  minItems: 1
                  maxItems: 10

              required:
                - paymentMethod
                - cardNumber
                - cardholderName
                - cardExpiry
                - cardType
                - cardCvv
                - guestTitle
                - guestFirstName
                - guestLastName
                - guestPhoneNumber
                - guestEmail
                - rooms
      responses:
        "200":
          description: Successful response. The reservation has been confirmed successfully.
          headers:
            x-sm-request-id:
              schema:
                type: string
              description: UUID of the request, useful to provide to SiteMinder when raising issues.
            x-sm-trace-token:
              schema:
                type: string
              description: UUID used for tracing, useful to provide to SiteMinder when raising issues.
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/ServerError"

  /reservations/{bookingReferenceId}/cancellation:
    post:
      operationId: cancelReservation
      description: >-
        Cancel an existing reservation. This endpoint allows you to cancel a confirmed reservation.
        Be aware that cancellation policies may apply, and fees might be incurred depending on the
        timing of the cancellation relative to the check-in date.
      parameters:
        - $ref: "#/components/parameters/SmApiId"
        - $ref: "#/components/parameters/SmApiKey"
        - name: bookingReferenceId
          description: The unique identifier of the reservation to be cancelled
          required: true
          in: path
          schema:
            type: string
      responses:
        "200":
          description: >-
            Successful response. The reservation has been cancelled successfully.
            Note that a successful cancellation does not necessarily mean a full refund will be issued.
            Refunds are subject to the property's cancellation policy.
          headers:
            x-sm-request-id:
              schema:
                type: string
              description: UUID of the request, useful to provide to SiteMinder when raising issues.
            x-sm-trace-token:
              schema:
                type: string
              description: UUID used for tracing, useful to provide to SiteMinder when raising issues.
        "400":
          $ref: "#/components/responses/BadRequest"
        "401":
          $ref: "#/components/responses/Unauthorized"
        "404":
          $ref: "#/components/responses/NotFound"
        "500":
          $ref: "#/components/responses/ServerError"

components:
  parameters:
    SmApiId:
      name: x-sm-api-id
      description: The api id for channel
      required: true
      in: header
      schema:
        type: string
    SmApiKey:
      name: x-sm-api-key
      description: The api key for channel
      required: true
      in: header
      schema:
        type: string

  responses:
    BadRequest:
      description: Invalid request
      headers:
        x-sm-request-id:
          schema:
            type: string
          description: uuid of the request, useful to provide to SiteMinder when raising issues.
        x-sm-trace-token:
          schema:
            type: string
          description: uuid used for tracing, useful to provide to SiteMinder when raising issues.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    NotFound:
      description: The specified resource was not found
      headers:
        x-sm-request-id:
          schema:
            type: string
          description: uuid of the request, useful to provide to SiteMinder when raising issues.
        x-sm-trace-token:
          schema:
            type: string
          description: uuid used for tracing, useful to provide to SiteMinder when raising issues.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    RateLimitError:
      description: The number of requests for the last 5 minutes window has reached the limit for the given channel
      headers:
        x-sm-request-id:
          schema:
            type: string
          description: uuid of the request, useful to provide to SiteMinder when raising issues.
        x-sm-trace-token:
          schema:
            type: string
          description: uuid used for tracing, useful to provide to SiteMinder when raising issues.
        ratelimit-policy:
          schema:
            type: string
          description: Shows the number of request allowed per number of seconds window. e.g. '100;w=60' means 100 request in a 60 seconds window.
        ratelimit-limit:
          schema:
            type: integer
          description: The number of requests allowed per window
        ratelimit-remaining:
          schema:
            type: integer
          description: The number of requests left for the time window.
        ratelimit-reset:
          schema:
            type: integer
          description: The number of seconds left for the window to reset
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
    ServerError:
      description: Unexpected error occurred
      headers:
        x-sm-request-id:
          schema:
            type: string
          description: uuid of the request, useful to provide to SiteMinder when raising issues.
        x-sm-trace-token:
          schema:
            type: string
          description: uuid used for tracing, useful to provide to SiteMinder when raising issues.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'

  schemas:
    StarRatings:
      type: number
      enum:
        - 1
        - 1.5
        - 2
        - 2.5
        - 3
        - 3.5
        - 4
        - 4.5
        - 5
        - 5.5
        - 6
    CancelationPolicy:
      type: object
      additionalProperties: false
      properties:
        policyType:
          type: string
          enum: ["non-refundable", "free-cancellation"]
        freeCancellationUntilDays:
          type: number
          nullable: true
      required:
        - policyType
    SpecialConditions:
      type: object
      additionalProperties: false
      nullable: true
      properties:
        taxExemptions:
          type: array
          items:
            type: object
            additionalProperties: false
            properties:
              name:
                type: string
                enum:
                  - is-nz-gst-opt-out
            required:
              - name
      required:
        - taxExemptions
    Photo:
      type: object
      additionalProperties: false
      properties:
        url:
          type: string
          format: uri
          description: The photo url
        captions:
          type: string
          description: The photo's captions
      required:
        - url
    TranslationText:
      type: object
      additionalProperties: false
      properties:
        text:
          type: string
        language:
          type: string
      required:
        - text
        - language
    Error:
      type: object
      required:
        - errors
      properties:
        errors:
          minItems: 1
          type: array
          description: An array of error objects, for most errors, this array would only contain one error object. An errors array must contain at least one error object.
          items:
            type: object
            required:
              - code
            properties:
              code:
                type: string
              message:
                type: string
              meta:
                type: object

Last updated