Spotnana Hotel API

These endpoints provide comprehensive functionality for managing hotel bookings. They enable users to search for hotels, check room rates and availability, create and modify bookings, and handle cancellations and rebooking.

Operations 9

POST /v2/hotel/search Get hotel search results #
POST /v2/hotel/details Get hotel details #
POST /v2/hotel/price-check Verify hotel price #
POST /v2/hotel/validate-rebooking Validate rebooking for price optimization #
POST /v2/hotel/create-pnr Create a new hotel booking #
POST /v2/hotel/pnrs/{pnrId}/cancel-pnr Cancel hotel pnr #
POST /v2/hotel/pnrs/{pnrId}/modify-details Modify hotel details #
POST /v2/hotel/pnrs/{pnrId}/modify-book Modify hotel booking #
POST /v2/hotel/ancillaries Get hotel ancillaries #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/spotnana-hotel-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

spotnana-hotel-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Air Hotel API
  version: v2
  description: APIs to perform search, checkout and book an air pnr
servers:
- url: https://api-ext-sboxmeta.partners.spotnana.com
  description: Sandbox URL
security:
- Bearer: []
tags:
- name: Hotel
  description: "These endpoints provide comprehensive functionality for managing hotel bookings. They enable users to search for hotels, check room rates and availability, create and modify bookings, and handle cancellations and rebooking. \n"
paths:
  /v2/hotel/search:
    post:
      tags:
      - Hotel
      summary: Get hotel search results
      description: Get all available hotels for the requested search parameters.
      operationId: hotelSearch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HotelSearchRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HotelSearchResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/hotel/details:
    post:
      tags:
      - Hotel
      summary: Get hotel details
      description: Get details for a specific hotel.
      operationId: hotelDetails
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HotelDetailsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HotelDetailsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/hotel/price-check:
    post:
      tags:
      - Hotel
      summary: Verify hotel price
      description: 'Checks if the previously selected hotel price has been modified. To indicate the change in hotel price, the `priceChange` field in the response will be set to `true` and the `price`  object will contain the latest hotel price. If the price remains unchanged, the `priceChange` field will be set as `false` and the `price` object will contain the original price.

        '
      operationId: hotelPriceCheck
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HotelPriceCheckRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HotelPriceCheckResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/hotel/validate-rebooking:
    post:
      tags:
      - Hotel
      summary: Validate rebooking for price optimization
      description: "Validates if a hotel rebooking can be performed for price optimization purpose.\nThe Source PNR ID provided in the request will be checked if it's eligible for rebooking. \nIn the response, if `isValid` is `true` then users can proceed to checkout flow, which cancels the existing Source PNR \nand creates a new PNR to save booking cost.\n"
      operationId: hotelValidateRebooking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HotelValidateRebookingRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HotelValidateRebookingResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/hotel/create-pnr:
    post:
      tags:
      - Hotel
      summary: Create a new hotel booking
      description: Creates a new hotel booking for the given request parameters.
      operationId: hotelCreatePnr
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HotelCreatePnrRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HotelCreatePnrResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/hotel/pnrs/{pnrId}/cancel-pnr:
    parameters:
    - name: pnrId
      in: path
      description: Pnr Id of the Pnr to be cancelled.
      required: true
      schema:
        type: string
      example: 4974a66b
    post:
      tags:
      - Hotel
      summary: Cancel hotel pnr
      description: This endpoint deletes a pnr by pnrID.
      operationId: hotelCancelPnr
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HotelCancelPnrRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HotelCancelPnrResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/hotel/pnrs/{pnrId}/modify-details:
    parameters:
    - name: pnrId
      in: path
      description: PNR ID of the hotel booking for which the details need to be modified.
      required: true
      schema:
        type: string
      example: 4974a66b
    post:
      tags:
      - Hotel
      summary: Modify hotel details
      description: "Modify the details of an existing hotel booking. \nThis API displays the list of modifications available for the same hotel. \nCurrently, the details such as occupancy date and room type can be modified. \nTo confirm the selected changes, use the **Modify hotel booking** API.\n"
      operationId: hotelModifyDetails
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HotelModifyDetailsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HotelDetailsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/hotel/pnrs/{pnrId}/modify-book:
    parameters:
    - name: pnrId
      in: path
      description: PNR ID of the hotel booking that needs to be modified.
      required: true
      schema:
        type: string
      example: 4974a66b
    post:
      tags:
      - Hotel
      summary: Modify hotel booking
      description: 'Modify an existing hotel booking based on the request parameters.

        This API is used to confirm the requested changes for the booking.

        '
      operationId: hotelModifyBooking
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HotelModifyBookingRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HotelModifyBookingResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/hotel/ancillaries:
    post:
      tags:
      - Hotel
      summary: Get hotel ancillaries
      description: 'Retrieves available ancillaries (add-ons, extras, services) for a selected hotel booking. Ancillaries may include breakfast, parking, early check-in, late checkout, spa services, and other optional services.

        '
      operationId: hotelAncillaries
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/HotelAncillariesRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HotelAncillariesResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  schemas:
    HotelSearchData:
      type: object
      title: Hotel Data
      description: Defines the structure for hotel data in the search results.
      required:
      - hotelDetailsKey
      - hotelSpec
      - distance
      - hasNegotiatedRates
      - rateInfo
      properties:
        hotelDetailsKey:
          type: string
          example: Cg5TUE9UTkFOQTozMDc3NhIgCgIIARIMCgoyMDI0LTA=
          description: Unique key for the hotel details.
        hotelSpec:
          $ref: '#/components/schemas/HotelSpec'
          description: Specifications and details of the hotel.
        distance:
          $ref: '#/components/schemas/Length'
          description: Distance from the search point.
        policyInfo:
          $ref: '#/components/schemas/CommonPolicyInfo'
          description: Policy information related to the hotel.
        hasNegotiatedRates:
          type: boolean
          example: false
          description: Indicates if the hotel has negotiated rates.
        preferences:
          type: array
          items:
            $ref: '#/components/schemas/Preference'
          description: List of preferences applicable to the hotel.
        rateInfo:
          $ref: '#/components/schemas/HotelSearchRateInfo'
          description: Rate related information for the cheapest rate available in the hotel.
        hotelCo2EmissionDetail:
          description: The co2 emission details for the hotel.
          $ref: '#/components/schemas/HotelCo2EmissionDetail'
    Department:
      type: object
      title: Department
      description: Department details.
      required:
      - id
      - name
      properties:
        id:
          $ref: '#/components/schemas/DepartmentId'
        name:
          type: string
          example: IT Department
        externalId:
          type: string
          description: External id of the department
          example: department-ext-id
        employeeCount:
          type: integer
          format: int32
          description: Count of employees in the department
          example: 57
    NameSuffix:
      title: NameSuffix
      description: Suffix for name
      type: string
      enum:
      - NAME_SUFFIX_UNKNOWN
      - SR
      - JR
      - MD
      - PHD
      - II
      - III
      - IV
      - DO
      - ATTY
      - V
      - VI
      - ESQ
      - DC
      - DDS
      - VM
      - JD
      - SECOND
      - THIRD
      example: SR
    CompanyConfigSourceWrapper:
      type: object
      title: CompanyConfigSourceWrapper
      description: Wrapper for option source company config.
      properties:
        companyConfig:
          $ref: '#/components/schemas/CompanyConfigSource'
    SeatPref:
      type: object
      title: SeatPref
      description: Preference about seat of rail.
      properties:
        hasAccessibility:
          type: boolean
          description: Whether or not requires assistance for disability.
          default: false
          example: false
        seatTypes:
          type: array
          items:
            $ref: '#/components/schemas/SeatPrefType'
        seatLocations:
          type: array
          items:
            $ref: '#/components/schemas/SeatPrefLocation'
        deckLevels:
          type: array
          items:
            $ref: '#/components/schemas/DeckLevel'
        seatDirections:
          type: array
          items:
            $ref: '#/components/schemas/SeatPrefDirection'
    Preference:
      title: Preference
      type: object
      required:
      - preferredType
      properties:
        preferredType:
          $ref: '#/components/schemas/PreferredType'
        blockedReason:
          type: string
          description: Reason for blocking the leg, hotel or car.
        label:
          type: string
          description: The label assigned to a specific tier of preference.
    DepartmentId:
      type: object
      title: DepartmentId
      description: Department id.
      required:
      - id
      properties:
        id:
          type: string
          example: 631ccbcf-9414-5fe0-c234-b324dfbe7422
    TravelRegionType:
      type: string
      title: TravelRegionType
      description: Travel region Type
      enum:
      - DOMESTIC
      - INTERNATIONAL
      example: DOMESTIC
    AdhocUserInfo:
      type: object
      title: AdhocUserInfo
      description: Basic information related to ad-hoc traveler profile.
      required:
      - profileOwner
      properties:
        profileOwner:
          $ref: '#/components/schemas/ProfileOwner'
        isSaved:
          type: boolean
          description: "A boolean flag to show if ad-hoc traveler is visible in search. While updating the user \nif client tries to update this field, it will throw exception.\n"
          default: false
    HotelPropertyType:
      type: object
      title: Hotel Property Type
      description: Describes the type of property for a hotel.
      required:
      - type
      properties:
        type:
          $ref: '#/components/schemas/HotelPropertyEnum'
          description: Type of the property.
        description:
          type: string
          description: Description of the property type.
    HotelPriceCheckResponse:
      type: object
      title: Hotel Price Check Response
      description: Defines the structure of a hotel price check response.
      required:
      - bookingKey
      - timeout
      - priceChange
      - price
      properties:
        bookingKey:
          type: string
          description: The unique key used to make the hotel booking.
        timeout:
          type: integer
          format: int32
          description: Timeout for the booking key in seconds.
        priceChange:
          type: boolean
          description: Indicates if the price has changed.
        price:
          $ref: '#/components/schemas/HotelRoomRate'
          description: Final price for the booking.
    LegalEntityIdListWrapper:
      type: object
      title: LegalEntityIdListWrapper
      properties:
        legalEntityIdList:
          type: array
          items:
            $ref: '#/components/schemas/LegalEntityId'
    DateTimeOffset:
      title: DateTimeOffset
      description: ISO8601 UTC Date Time
      type: object
      required:
      - iso8601
      properties:
        iso8601:
          type: string
          pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])T([01][0-9]|2[0-4]):([0-5][0-9])(:([0-5][0-9]))?(Z|([+-](0[0-9]|1[0-4]):([0-5][0-9])))$
          example: 2017-07-21T17:32Z
    HotelTraveler:
      type: object
      title: Traveler
      required:
      - travelerId
      - name
      - phoneNumber
      - email
      properties:
        travelerId:
          description: The ID of the traveler.
          $ref: '#/components/schemas/UserId'
        name:
          description: Name of the traveler.
          $ref: '#/components/schemas/Name'
        dob:
          description: Date of birth of the traveler.
          $ref: '#/components/schemas/DateModel'
        phoneNumber:
          description: Phone number of the traveler.
          $ref: '#/components/schemas/PhoneNumber'
        email:
          description: Email of the traveler.
          type: string
          example: mail@mail.com
        loyaltyInfo:
          description: Loyalty Info of the traveler.
          $ref: '#/components/schemas/LoyaltyInfo'
        adhocInfo:
          description: Adhoc Info of the traveler. It is only present if the traveler is adhoc user.
          properties:
            profileOwnerId:
              description: The profile owner of the adhoc user.
              $ref: '#/components/schemas/UserId'
    OccupancyDates:
      type: object
      title: Occupancy Dates
      required:
      - occupancy
      - checkInDate
      - checkOutDate
      properties:
        occupancy:
          type: array
          items:
            $ref: '#/components/schemas/Occupancy'
          description: List of occupancy details including the number of adults and children.
        checkInDate:
          $ref: '#/components/schemas/DateTimeLocal'
          description: The check-in date for the hotel stay.
        checkOutDate:
          $ref: '#/components/schemas/DateTimeLocal'
          description: The check-out date for the hotel stay.
    UserOrgId:
      type: object
      title: UserOrgId
      description: User and user's organization information.
      required:
      - userId
      - organizationId
      properties:
        organizationAgencyId:
          $ref: '#/components/schemas/OrganizationAgencyId'
        organizationId:
          $ref: '#/components/schemas/OrganizationId'
        userId:
          $ref: '#/components/schemas/UserId'
        tmcInfo:
          $ref: '#/components/schemas/TmcInfo'
          deprecated: true
          x-sunset: '2026-07-01'
        tmcBasicInfo:
          $ref: '#/components/schemas/TmcBasicInfo'
    IntListWrapper:
      type: object
      title: IntListWrapper
      properties:
        iList:
          type: array
          items:
            type: integer
            format: int32
    ContactInfo:
      type: object
      title: Contact Information
      description: Provides contact information for a hotel.
      required:
      - phone
      - email
      properties:
        phone:
          type: array
          description: List of phone numbers for the hotel.
          items:
            $ref: '#/components/schemas/PhoneNumber'
        fax:
          type: array
          description: List of fax numbers for the hotel.
          items:
            type: string
        email:
          type: array
          description: List of email addresses for the hotel.
          items:
            type: string
    HotelAdditionalDetailType:
      title: HotelAdditionalDetailType
      type: string
      enum:
      - ADDITIONAL_DETAIL_TYPE_UNKNOWN
      - RATE_DESCRIPTION
      - PROPERTY_DESCRIPTION
      - PROPERTY_LOCATION
      - ROOM_INFORMATION
      - GUARANTEE_INFORMATION
      - DEPOSIT_INFORMATION
      - CANCELLATION_INFORMATION
      - CHECK_IN_CHECK_OUT_INFORMATION
      - EXTRA_CHARGE_INFORMATION
      - TAX_INFORMATION
      - SERVICE_CHARGE_INFORMATION
      - PACKAGE_INFORMATION
      - COMMISSION_INFORMATION
      - MISCELLANEOUS_INFORMATION
      - PROMOTIONAL_INFORMATION
      - INCLUSION_INFORMATION
      - AMENITY_INFORMATION
      - LATE_ARRIVAL_INFORMATION
      - LATE_DEPARTURE_INFORMATION
      - ADVANCED_BOOKING_INFORMATION
      - EXTRA_PERSON_INFORMATION
      - AREAS_SERVED
      - ONSITE_FACILITIES_INFORMATION
      - OFFSITE_FACILITIES_INFORMATION
      - ONSITE_SERVICES_INFORMATION
      - OFFSITE_SERVICES_INFORMATION
      - EXTENDED_STAY_INFORMATION
      - CORPORATE_BOOKING_INFORMATION
      - BOOKING_GUIDELINES
      - GOVERNMENT_BOOKING_POLICY
      - GROUP_BOOKING_INFORMATION
      - RATE_DISCLAIMER_INFORMATION
      - VISA_TRAVEL_REQUIREMENT_INFORMATION
      - SECURITY_INFORMATION
      - ONSITE_RECREATIONAL_ACTIVITIES_INFORMATION
      - OFFSITE_RECREATIONAL_ACTIVITIES_INFORMATION
      - GENERAL_MEETING_PLANNING_INFORMATION
      - GROUP_MEETING_PLANNING_INFORMATION
      - CONTRACT_NEGOTIATED_BOOKING_INFORMATION
      - TRAVEL_INDUSTRY_BOOKING_INFORMATION
      - MEETING_ROOM_DESCRIPTION
      - PET_POLICY_DESCRIPTION
      - MEAL_PLAN_DESCRIPTION
      - FAMILY_PLAN_DESCRIPTION
      - CHILDREN_INFORMATION
      - EARLY_CHECKOUT_DESCRIPTION
      - SPECIAL_OFFERS_DESCRIPTION
      - CATERING_DESCRIPTION
      - ROOM_DECOR_DESCRIPTION
      - OVERSOLD_POLICY_DESCRIPTION
      - LAST_ROOM_AVAILABILITY_DESCRIPTION
      - ROOM_TYPE_UPGRADE_DESCRIPTION
      - DRIVING_DIRECTIONS
      - DRIVING_DIRECTIONS_FROM_THE_NORTH
      - DRIVING_DIRECTIONS_FROM_THE_SOUTH
      - DRIVING_DIRECTIONS_FROM_THE_EAST
      - DRIVING_DIRECTIONS_FROM_THE_WEST
      - SURCHARGE_INFORMATION
      - MINIMUM_STAY_INFORMATION
      - MAXIMUM_STAY_INFORMATION
      - CHECK_IN_POLICY
      - CHECK_OUT_POLICY
      - EXPRESS_CHECK_IN_POLICY
      - EXPRESS_CHECK_OUT_POLICY
      - FACILITY_RESTRICTIONS
      - CUSTOMS_INFORMATION_FOR_MATERIAL
      - SEASONS
      - FOOD_AND_BEVERAGE_MINIMUMS_FOR_GROUPS
      - DEPOSIT_POLICY_FOR_MASTER_ACCOUNT
      - DEPOSIT_POLICY_FOR_RESERVATIONS
      - RESTAURANT_SERVICES
      - SPECIAL_EVENTS
      - CUISINE_DESCRIPTION
      - KEY_COLLECTION_INFO
      - IMPORTANT_INFO
    AirportSearch:
      type: object
      title: Airport Search
      required:
      - searchType
      - airport
      properties:
        searchType:
          type: string
          example: AIRPORT
        airport:
          type: string
          example: LHR
          description: IATA code of the airport. The search result will contain the list of hotels in close proximity to the specified airport.
    PolicyPreventBookingAction:
      type: object
      title: PolicyPreventBookingAction
      description: Whether to allow booking if a rule is violated.
      properties:
        prevent:
          type: boolean
          description: True if booking is to be blocked if rule is violated, else false
        reason:
          type: string
          description: Reason describing why was that specific itinerary not allowed to book.
    LegalEntityId:
      type: object
      title: LegalEntityId
      description: The ID of the legal entity.
      required:
      - id
      properties:
        id:
          type: string
          example: fc1ccbce-8413-4fe9-b233-a324dfbe7421
    HotelSortOptions:
      type: object
      title: Hotel Sort Options
      description: Defines the sorting options for hotel search results.
      required:
      - sortBy
      - sortOrder
      properties:
        sortBy:
          type: string
          description: Sorting criteria for the hotel search results.
          enum:
          - PRICE
          - DISTANCE
          - SABRE_RATING
        sortOrder:
          type: string
          description: The order in which the search results should be displayed.
          enum:
          - ASCENDING
          - DESCENDING
    PostStripeVerificationInfoWrapper:
      type: object
      title: PostStripeVerificationInfoWrapper
      description: Wrapper for post stripe verification info object.
      properties:
        postStripeVerificationInfo:
          $ref: '#/components/schemas/PostStripeVerificationInfo'
    Credit:
      type: object
      title: Credit
      required:
      - ticketNumber
      - ticketType
      - sourcePnr
      - totalFare
      - passengerName
      - segmentsAvailable
      - type
      - airlineInfo
      - traveler
      - source
      - unusedCreditPcc
      - pnrOwningPcc
      properties:
        type:
          type: string
          description: Payment source type. Should be set to CREDIT for unused credit details.
        pnrOwningPcc:
          type: string
          description: PCC the PNR was created on.
        unusedCreditPcc:
          type: string
          description: PCC the credit was issued on.
        departureCountry:
          type: string
          description: 3 letter country code of the departure country associated with the original ticket.
          example: USA
        arrivalCountry:
          type: string
          description: 3 letter country code of the arrival country associated with the original ticket.
          example: USA
        ticketType:
          type: string
          description: Type of credit.
          enum:
          - TICKET_TYPE_UNKNOWN
          - ETICKET
          - MCO
        departureDate:
          description: Date for the departure of the first flight associated with the unused credit.
          $ref: '#/components/schemas/DateTimeOffset'
        segmentsAvailable:
          type: string
          description: Whether all segments are unused or some have already been used.
          enum:
          - UNKNOWN
          - ALL_OPEN
          - PARTIAL
          - OTHER
        traveler:
          description: Information about the traveler for which the credit should be redeemed.
          $ref: '#/components/schemas/AirRequestTravelerInfo'
        passengerName:
          description: Name of the passenger associated with the credit.
          $ref: '#/components/schemas/Name'
        airlineInfo:
          description: Airline info with airline name and code
          $ref: '#/components/schemas/AirlineInfo'
        totalFare:
          description: Total airfare associated with the original ticket.
          $ref: '#/components/schemas/Money'
        issueDate:
          description: Issue date for the unused credit.
          $ref: '#/components/schemas/DateTimeOffset'
        expiryDate:
          description: Expiry date for the unused credit.
          $ref: '#/components/schemas/DateTimeOffset'
        source:
          $ref: '#/components/schemas/ThirdPartySource'
          default: SABRE
          description: Source of unused credit e.g. Sabre, NDC etc.
        sourcePnr:
          type: string
          description: PNR number corresponding to third party through which booking was made.
          example: MC5ONS
        flightIds:
          type: array
          description: ID of the flights on which this credit applies.
          minItems: 1
          items:
            type: string
        ticketNumber:
          type: string
          description: Ticket number for the ticket that was converted into an unused credit.
          example: '5267779139217'
      x-ignoreBreakingChanges:
      - Credit->pnrOwningPcc
      - Credit->unusedCreditPcc
      - Credit->source
    OrganizationAgencyId:
      type: object
      title: OrganizationAgencyId
      description: Agency id for the organization.
      deprecated: true
      x-sunset: '2026-07-01'
      required:
      - id
      properties:
        id:
          type: string
    HotelRoomMealType:
      type: string
      description: Type of meal plan
      enum:
      - UNKNOWN
      - ALL_INCLUSIVE
      - AMERICAN
      - BED_AND_BREAKFAST
      - BUFFET_BREAKFAST
      - CARIBBEAN_BREAKFAST
      - CONTINENTAL_BREAKFAST
      - ENGLISH_BREAKFAST
      - EUROPEAN_PLAN
      - FAMILY_PLAN
      - FULL_BOARD
      - FULL_BREAKFAST
      - HALF_BOARD_MODIFIED_AMERICAN_PLAN
      - AS_BROCHURED
      - ROOM_ONLY
      - SELF_CATERING
      - BERMUDA
      - DINNER_BED_AND_BREAKFAST_PLAN
      - FAMILY_AMERICAN
      - BREAKFAST_MEAL_PLAN
      - MODIFIED
      - LUNCH_MEAL_PLAN
      - DINNER_MEAL_PLAN
      - BREAKFAST_AND_LUNCH
      example: ENGLISH_BREAKFAST
    PaymentVerificationInfo:
      type: object
      title: PaymentVerificationInfo
      description: VerificationInfo required for the payment operation.
      oneOf:
      - $ref: '#/components/schemas/StripeVerificationInfoWrapper'
      - $ref: '#/components/schemas/UrlVerificationInfoWrapper'
      - $ref: '#/components/schemas/ThreeDSecure2VerificationInfoWrapper'
      - $ref: '#/components/schemas/RazorpayVerificationInfoWrapper'
      properties:
        gatewayIdentifier:
          $ref: '#/components/schemas/GatewayIdentifier'
        paymentKey:
          type: string
          description: Serialized key to identify the payment executed on payment gateway that will be used for post payment verification.
    Accessibility:
      type: object
      title: Accessibility
      description: Information about the accessibility of the hotel room.
      required:
      - type
      - isSelectionRequired
      properties:
        type:
          type: string
          description: The type of accessibility feature.
          enum:
          - ACCESSIBLE_ROOM
        additionalInfo:
          type: string
          description: Additional information about the accessibility feature.
        isSelectionRequired:
          type: boolean
          description: Indicates if the selection of this accessibility feature is required.
    Card:
      type: object
      title: Card
      description: User card info
      required:
      - number
      properties:
        id:
          type: string
          description: Unique identifier for this card
          format: uuid
          example: 34d536b6-f8ff-11eb-9a61-0242ac180002
        type:
          type: string
          enum:
          - UNKNOWN
          - CREDIT
          - DEBIT
          description: Type of card
          example: CREDIT
        company:
          $ref: '#/components/schemas/CardCompany'
        name:
          description: Name on card
          type: string
          example: Harrison Schwartz
          x-pii: SENSITIVE
        address:
          description: Billing address
          $ref: '#/components/schemas/PostalAddress'
          x-pii: SENSITIVE
        number:
          type: string
          description: Card number
          example: '4111111111111111'
        expiryMonth:
          type: integer
          format: int32
          minimum: 1
          maximum: 12
          description: Expiry month
          example: 1
          deprecated: true
          x-sunset: '2026-07-01'
        expiryYear:
          type: integer
          format: int32
          description: Expiry year
          minimum: 2000
          example: 2010
          deprecated: true
          x-sunset: '2026-07-01'
        cvv:
          type: string
          description: Card cvv number
          example: '012'
        label:
          type: string
          description: Card Label
          example: Label amex
        currency:
          type: string
          description: Native currency of the card.
          example: USD
        externalId:
          type: string
          description: Spotnana partner card id.
          example: bxt_RNGsNfzgJDaTstKIKqK4xEuhGYAnMdYK8T40
        vaultId:
          type: string
          description: ID of the vault used for creating the card.
          format: uuid
          example: 34d536b6-f8ff-11eb-9a61-0242ac180002
        expiry:
          description: Card Expiry.
          $ref: '#/components/schemas/CardExpiry'
        ownershipLabel:
          $ref: '#/components/schemas/OwnershipLabel'
          example: PERSONAL
    FlightPassPaymentAmounts:
      type: object
      title: FlightPassPaymentAmounts
      description: Fare breakdown for the flight pass booking.
      properties:
        totalAmount:
          description: Total value (base + taxes).
          $ref: '#/components/schemas/Money'
        baseAmount:
          description: Base fare excluding taxes.
          $ref: '#/components/schemas/Money'
        totalTaxes:
          description: Sum of all taxes, fees, and charges.
          $ref: '#/components/schemas/Money'
        taxBreakdown:
          type: array
          description: Breakdown of taxes by code (e.g. GST_HST, QST, OTHER).
          items:
            $ref: '#/components/schemas/FlightPassTax'
    Int32Range:
      type: object
      properties:
        min:
          type: integer
          format: int32
          description: Minimum value - inclusive.
        max:
          type: integer
          format: int32
          description: Maximum value - inclusive.
    EmergencyContactInfo:
      type: object
      title: EmergencyContactInfo
      description: Emergency contact information.
      required:
      - email
      properties:
        address:
          $ref: '#/components/schemas/PostalAddress'
          x-pii: SENSITIVE
        designation:
          type: string
          example: MANAGER
      

# --- truncated at 32 KB (225 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/spotnana/refs/heads/main/openapi/spotnana-hotel-api-openapi.yml