openapi: 3.1.0
info:
  title: Trip API
  version: v2
servers:
  - url: https://apis.spotnana.com
    description: Staging URL
security:
  - Bearer: []
components:
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
  responses:
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The specified resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    ActualPayment:
      title: ActualPayment
      type: object
      description: Payment done via supported Spotnana payment types.
      required:
        - paymentSourceType
        - paymentMetadata
      properties:
        paymentSourceType:
          description: Type of payment source.
          $ref: '#/components/schemas/PaymentSourceType'
        paymentMetadata:
          description: Type of payment source.
          $ref: '#/components/schemas/PaymentSourceMetadata'
    AddRemarksRequest:
      title: AddRemarksRequest
      type: object
      description: Add third party remarks to given PNR.
      required:
        - remarks
      properties:
        remarks:
          type: array
          description: The list of remarks to be added to the give PNR.
          items:
            $ref: '#/components/schemas/ThirdPartyPnrRemark'
    AddRemarksResponse:
      type: object
      description: Response on adding remark.
      properties:
        processedRemarks:
          type: array
          description: The list of remarks added to the given PNR.
          items:
            $ref: '#/components/schemas/ThirdPartyPnrRemark'
        ignoredRemarks:
          type: array
          description: The list of remarks ignored.
          items:
            $ref: '#/components/schemas/ThirdPartyPnrRemark'
    AdhocTravelerInfo:
      title: AdhocTravelerInfo
      type: object
      description: Describes an adhoc traveler.
      properties:
        registrarUserId:
          description: The registrar of the adhoc traveler.
          $ref: '#/components/schemas/UserId'
        externalId:
          type: string
          description: External Id of user
          example: qwert123
    AdhocTravelerInfoWrapper:
      title: AdhocTravelerInfoWrapper
      description: >-
        Wrapper over AdhocTravelerInfo object to be used as an identifier in a
        oneOf case.
      properties:
        adhocTravelerInfo:
          $ref: '#/components/schemas/AdhocTravelerInfo'
    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 

            if client tries to update this field, it will throw exception.
          default: false
    Air:
      title: Air
      description: Air PNR information
      required:
        - legs
        - travelerInfos
      properties:
        legs:
          type: array
          description: List of legs that are part of this bookings
          items:
            $ref: '#/components/schemas/Leg'
        airPnrRemarks:
          type: array
          description: Remarks added for the pnr.
          items:
            $ref: '#/components/schemas/AirPnrRemark'
        travelerInfos:
          type: array
          minItems: 1
          description: Information about traveler bookings
          items:
            $ref: '#/components/schemas/TravelerInfo'
        automatedCancellationInfo:
          readOnly: true
          $ref: '#/components/schemas/AutomatedCancellationInfo'
        automatedExchangeInfo:
          readOnly: true
          $ref: '#/components/schemas/AutomatedExchangeInfo'
        bookingMetadata:
          type: object
          title: BookingMetadata
          description: Metadata like fare statistics for this booking
          properties:
            fareStatistics:
              description: >
                Fare statistics of all logical itineraries. In case of multi
                pax, only primary i.e. 

                adult fare is included in stats.
              $ref: '#/components/schemas/FareStatistics'
        otherServiceInfos:
          type: array
          description: List of all the Other Service Information associated with the PNR.
          items:
            $ref: '#/components/schemas/OtherServiceInformationDetail'
        holdDeadline:
          $ref: '#/components/schemas/HoldInfo'
        airPriceOptimizationMetadata:
          $ref: '#/components/schemas/AirPriceOptimizationMetadata'
        disruptedFlightDetails:
          type: array
          description: >-
            List of all the last confirmed flights that have changed via
            disruption by the airline.
          items:
            $ref: '#/components/schemas/FlightDetailInformation'
    AirBookingGuideline:
      title: AirBookingGuideline
      description: Air related guidelines
      type: object
      required:
        - arrivalBookingWindow
        - departureBookingWindow
      properties:
        allowedAirports:
          description: >-
            List of allowed airports for arrival of flight-in-event and
            departure of flight-out-event.
          type: array
          items:
            $ref: '#/components/schemas/AirportInfo'
        arrivalBookingWindow:
          description: Booking window for flight-in-event.
          $ref: '#/components/schemas/EventBookingWindow'
        departureBookingWindow:
          description: Booking window for flight-out-event.
          $ref: '#/components/schemas/EventBookingWindow'
        allowedFlightGuidelines:
          description: List of allowed flight guidelines for the event.
          type: array
          items:
            $ref: '#/components/schemas/AllowedFlightGuideline'
    AirBookingGuidelineWrapper:
      type: object
      title: AirBookingGuidelineWrapper
      description: Wrapper for AirBookingGuideline
      properties:
        airBookingGuideLine:
          $ref: '#/components/schemas/AirBookingGuideline'
    AirCancellationDetails:
      type: object
      title: AirCancellationDetails
      description: Cancellation details for air booking.
      required:
        - travelers
        - cancellationState
      properties:
        travelers:
          type: array
          description: Cancellation information for travelers in this booking.
          minItems: 1
          items:
            $ref: '#/components/schemas/AirTravelerCancellationInfo'
        cancellationOptions:
          type: array
          description: Cancellation options for this booking.
          minItems: 1
          items:
            $ref: '#/components/schemas/AirCancellationOption'
        cancellationState:
          description: Cancellation state for this booking.
          $ref: '#/components/schemas/AirCancellationState'
    AirCancellationDetailsWrapper:
      type: object
      title: AirCancellationDetailsWrapper
      description: Wrapper for AirCancellationDetails
      properties:
        air:
          $ref: '#/components/schemas/AirCancellationDetails'
    AirCancellationNotSupportedReason:
      type: string
      title: AirCancellationNotSupportedReason
      description: Reason why cancellation is not supported via OBT.
      example: PARTIAL_LEG_FLOWN
      enum:
        - PARTIAL_LEG_FLOWN
        - EXCHANGED_TICKET
        - AUTOMATED_REFUND_NOT_SUPPORTED
        - AUTOMATED_EXCHANGE_NOT_SUPPORTED
        - NON_REFUNDABLE_BUT_EXCHANGEABLE
        - NON_REFUNDABLE_NON_EXCHANGEABLE
        - FARE_RULES_UNKNOWN
        - FLIGHT_CHECKED_IN
        - FARE_BREAKUP_UNKNOWN
        - CURRENT_TIME_CLOSE_TO_FLIGHT_DEPARTURE
        - ALL_FLIGHTS_USED
        - NON_VOIDABLE_ANCILLARY_TICKET
        - SUPPLIER_CANCELLATION_NOT_IMPLEMENTED
        - OUTSIDE_BOOKING
        - UPGRADE_REQUESTED
    AirCancellationOption:
      type: object
      title: AirCancellationOption
      description: Details like fare breakup for a cancellation option.
      required:
        - fareInfo
      properties:
        cancellationType:
          description: Cancellation type like VOID, REFUND, etc.
          $ref: '#/components/schemas/AirCancellationType'
        fareInfo:
          description: Fare breakup for cancellation option.
          $ref: '#/components/schemas/AirFareInfo'
        offerExpiryInfo:
          description: Cancellation offer expiry datetime in UTC.
          $ref: '#/components/schemas/OfferExpiryInfo'
        optionId:
          description: Unique id for this cancellation option.
          type: string
          example: '1'
    AirCancellationState:
      type: string
      title: AirCancellationState
      description: >
        - CANCELLABLE_BY_OBT: Cancellation possible via API.

        - CANCELLABLE_BY_SUPPORT: Cancellation possible via agent support.

        - NON_CANCELLABLE: Booking is non-cancellable.

        - CANCELLATION_IN_PROGRESS: Cancellation is in progress.

        - CANCELLATION_BY_AGENT_REQUESTED: Cancellation request has been sent to
        agent.

        - CANCELLED: Already cancelled.

        - CANCELLATION_INFO_NOT_AVAILABLE: Cancellation information not
        available.
      example: CANCELLABLE_BY_OBT
      enum:
        - CANCELLABLE_BY_OBT
        - CANCELLABLE_BY_SUPPORT
        - NON_CANCELLABLE
        - CANCELLATION_IN_PROGRESS
        - CANCELLATION_BY_AGENT_REQUESTED
        - CANCELLED
        - CANCELLATION_INFO_NOT_AVAILABLE
    AirCancellationType:
      type: string
      title: AirCancellationType
      description: Type of cancellation.
      example: VOID
      enum:
        - REFUND
        - VOID
        - UNUSED_CREDITS
    AirConditioning:
      type: string
      title: AirConditioning
      description: Whether air conditioning is available.
      enum:
        - UNKNOWN_AC
        - AC_AVAILABLE
        - AC_NOT_AVAILABLE
      example: AC_AVAILABLE
    AirFareInfo:
      type: object
      title: AirFareInfo
      description: Fare breakup for cancellation.
      required:
        - totalFare
        - usedFare
        - nonRefundableFare
        - cancellationFee
        - merchantFee
        - refund
      properties:
        totalFare:
          description: Total fare charged.
          $ref: '#/components/schemas/FareAmount'
        usedFare:
          description: Used fare component.
          $ref: '#/components/schemas/FareAmount'
        nonRefundableFare:
          description: Non refundable fare.
          $ref: '#/components/schemas/FareAmount'
        cancellationFee:
          description: Cancellation fee.
          $ref: '#/components/schemas/FareAmount'
        merchantFee:
          description: Non refundable merchant fee.
          $ref: '#/components/schemas/Money'
        refund:
          description: Total refund amount.
          $ref: '#/components/schemas/FareAmount'
        flightCredits:
          description: >
            Flight credits info for the cases where the ticket can be converted
            to unused credits
          $ref: '#/components/schemas/FlightCredits'
    AirItemNameMetadata:
      title: AirItemNameMetadata
      type: object
      description: AirItemNameMetadata information.
      required:
        - pnrType
      properties:
        pnrType:
          type: string
          example: AIR
        ticketStatus:
          description: Ticket status.
          $ref: '#/components/schemas/TicketStatus'
          example: REFUNDED_EXCHANGED
        airNameInvoiceMetadata:
          description: Air invoice metadata.
          type: array
          items:
            $ref: '#/components/schemas/AirNameInvoiceMetadata'
    AirNameInvoiceMetadata:
      title: AirNameInvoiceMetadata
      type: object
      description: invoice metadata for Air Pnr.
      required:
        - airlineName
        - flightNumber
        - origin
        - destination
        - cabin
      properties:
        airlineName:
          description: Name of the airline.
          type: string
          example: United Airlines
        flightNumber:
          description: Flight number.
          type: string
          example: UA 123
        origin:
          description: Origin of the flight.
          type: string
          example: SFO
        destination:
          description: Destination of the flight.
          type: string
          example: EWR
        date:
          description: Date of the flight.
          $ref: '#/components/schemas/DateModel'
        cabin:
          description: Cabin class.
          $ref: '#/components/schemas/Cabin'
          example: ECONOMY
        ancillary:
          description: Ancillary services.
          type: string
          example: Seat Purchase
    AirPnrRemark:
      title: AirPnrRemark
      type: object
      required:
        - remarkString
      properties:
        remarkString:
          type: string
          description: Remark String
          example: COMPLEATREMARK
    AirPref:
      type: object
      title: AirPref
      description: Travel preferences related to air travel.
      properties:
        airlinePrefs:
          type: array
          items:
            $ref: '#/components/schemas/AirlinePref'
        alliancePref:
          $ref: '#/components/schemas/AlliancePref'
        farePref:
          $ref: '#/components/schemas/FarePref'
        homeAirport:
          type: string
          example: NEW YORK
        mealPref:
          $ref: '#/components/schemas/MealPref'
        numStopPref:
          $ref: '#/components/schemas/NumStopsPref'
        seatAmenityPref:
          $ref: '#/components/schemas/SeatAmenityPref'
        seatLocationPrefs:
          type: array
          items:
            $ref: '#/components/schemas/SeatLocationPref'
        preferredAirports:
          type: array
          description: A list of user preferred airports.
          items:
            $ref: '#/components/schemas/PreferredAirport'
    AirPriceOptimizationMetadata:
      type: object
      title: AirPriceOptimizationMetadata
      description: |
        Information related to air price optimization if PNR has been rebooked.
      required:
        - oldPnrId
        - newPnrId
        - oldPrice
        - newPrice
        - priceDrop
      properties:
        oldTickets:
          type: array
          items:
            type: string
            example: '0111234567890'
          description: |
            List of old tickets present in PNR before rebook.
            For non-ticketed PNRs, tickets will not be present.
        newTickets:
          type: array
          items:
            type: string
            example: '0111234567890'
          description: |
            List of new tickets in PNR after rebook.
            For non-ticketed PNRs, tickets will not be present.
        oldPnrId:
          type: string
          description: |
            Old Spotnana PnrId of the PNR before rebook.
          example: '6789533589'
        newPnrId:
          type: string
          description: >
            New Spotnana PnrId of the PNR after rebook.

            If the same PNR has been modified during rebook, oldPnrId and
            newPnrId will be same.

            If a new PNR has been booked during rebook, oldPnrId and newPnrId
            will be different.
          example: '6789533589'
        oldPrice:
          description: Total price of the PNR before rebook.
          $ref: '#/components/schemas/Money'
        newPrice:
          description: Total price of the PNR after rebook.
          $ref: '#/components/schemas/Money'
        priceDrop:
          description: Total price drop during rebook process.
          $ref: '#/components/schemas/Money'
        penaltyPrice:
          description: Penalty amount paid during rebook process.
          $ref: '#/components/schemas/Money'
    AirPriceOptimizationMetadataWrapper:
      type: object
      title: AirPriceOptimizationMetadataWrapper
      description: Wrapper for AirPriceOptimizationMetadata.
      properties:
        airPriceOptimizationMetadata:
          $ref: '#/components/schemas/AirPriceOptimizationMetadata'
    AirRequestTravelerInfo:
      title: AirRequestTravelerInfo
      description: >
        The traveler identifiers. These can be either the Spotnana user IDs of
        the travelers or information regarding

        the adhoc travelers.
      type: object
      oneOf:
        - $ref: '#/components/schemas/UserIdWrapper'
        - $ref: '#/components/schemas/AdhocTravelerInfoWrapper'
    AirRsvpResponse:
      title: AirRsvpResponse
      type: object
      description: Air rsvp response
      properties:
        notNeeded:
          type: boolean
          description: Whether air booking is needed by the traveler or not
          example: true
    AirTravelerCancellationInfo:
      type: object
      title: AirTravelerCancellationInfo
      description: Cancellation information for traveler.
      required:
        - userId
        - tickets
      properties:
        userId:
          description: User ID of traveler.
          $ref: '#/components/schemas/UserId'
        travelerInfo:
          description: Unique identifier for the traveler in this response.
          $ref: '#/components/schemas/TravelerInfoResponse'
        tickets:
          type: array
          description: Cancellation information for traveler tickets.
          minItems: 1
          items:
            $ref: '#/components/schemas/TicketCancellationInfo'
        cancellationOptions:
          type: array
          description: Cancellation options for this traveler.
          minItems: 1
          items:
            $ref: '#/components/schemas/AirCancellationOption'
    AirVendorCancellationInfo:
      title: VendorCancellationInfo
      type: object
      properties:
        airVendorCancellationObjects:
          type: array
          description: Vendor Cancellation
          items:
            $ref: '#/components/schemas/AirVendorCancellationObject'
    AirVendorCancellationObject:
      type: object
      description: vendor cancellation object
      properties:
        vendorCancellationId:
          type: string
          description: Identifier returned by the vendor for a cancellation transaction
        flightAndLegIndices:
          type: array
          description: Vendor Cancellation
          items:
            $ref: '#/components/schemas/FlightAndLegIndex'
    Airline:
      title: Airline
      description: Airline Details
      type: object
      required:
        - carrierCode
        - airlineName
      properties:
        carrierCode:
          type: string
          description: Unique code for the Airline
          example: AA
        airlineName:
          type: string
          description: Full Name of the Airline
          example: American Airlines
        isPresentInPreferredVendors:
          type: boolean
          description: >-
            Whether the airline is present in preferred vendor list. This is an
            optional field which gets populated only in the preferred vendor
            autocomplete API.
          example: true
    AirlineInfo:
      title: AirlineInfo
      type: object
      required:
        - airlineCode
        - airlineName
      properties:
        airlineCode:
          type: string
          description: IATA code for airline.
          example: AA
        airlineName:
          type: string
          description: Airline name
          example: American Airlines
    AirlinePref:
      type: object
      title: AirlinePref
      description: Airline preferences.
      properties:
        airlines:
          type: array
          items:
            type: string
            example: Indigo
        flightType:
          type: string
          enum:
            - UNKNOWN_FLIGHT_TYPE
            - DOMESTIC
            - INTERNATIONAL
            - ALL
          example: DOMESTIC
    AirlineProgram:
      type: object
      title: AirlineProgram
      description: Descriptor for Airline program details.
      required:
        - airlineInfo
        - airlineProgramMetadata
      properties:
        airlineInfo:
          type: array
          description: Eligible airlines' information list.
          items:
            $ref: '#/components/schemas/Airline'
        airlineProgramMetadata:
          description: Airline program payment specific metadata.
          $ref: '#/components/schemas/AirlineProgramMetadata'
    AirlineProgramMetadata:
      type: object
      title: AirlineProgramMetadata
      oneOf:
        - $ref: '#/components/schemas/UATPMetadataWrapper'
        - $ref: '#/components/schemas/UAPassPlusMetadataWrapper'
    AirlineProgramWrapper:
      type: object
      title: AirlineProgramWrapper
      description: Wrapper for AirlineProgram
      properties:
        airlineProgram:
          $ref: '#/components/schemas/AirlineProgram'
    AirportInfo:
      title: AirportInfo
      description: Detailed information about the airport.
      type: object
      properties:
        airportCode:
          type: string
          description: 3-letter code of the airport.
          example: WRA
        airportName:
          type: string
          description: Full name of the airport.
          example: Warder Airport
        cityName:
          type: string
          description: Name of the city in which the airport is located (or is nearest to).
          example: Werder
        countryName:
          type: string
          description: Name of the country in which the airport is located.
          example: Ethiopia
        countryCode:
          type: string
          description: 2-letter IATA country code associated with the airport.
          example: ET
        zoneName:
          type: string
          description: Name of the time zone associated with the airport.
          example: Africa/Addis_Ababa
        stateCode:
          type: string
          description: 2-letter IATA code for the state in which the airport is located.
          example: CA
    Alliance:
      type: string
      enum:
        - UNKNOWN_ALLIANCE
        - STAR_ALLIANCE
        - ONEWORLD
        - SKYTEAM
        - VANILLA_ALLIANCE
        - U_FLY_ALLIANCE
        - VALUE_ALLIANCE
      default: UNKNOWN_ALLIANCE
      example: STAR_ALLIANCE
    AlliancePref:
      type: object
      title: AlliancePref
      description: Alliance preferences.
      required:
        - alliances
      properties:
        alliances:
          type: array
          items:
            $ref: '#/components/schemas/Alliance'
    AllowedFlightGuideline:
      title: AllowedFlightGuideline
      description: Flight related guideline
      type: object
      required:
        - allowedFlightType
      properties:
        allowedFlightType:
          description: The type of flight booking allowed for the event.
          $ref: '#/components/schemas/AllowedFlightType'
        numberOfLegs:
          description: The number of legs allowed for the flight booking.
          type: integer
          example: 2
    AllowedFlightType:
      title: AllowedFlightType
      description: The types of flight booking guidelines
      type: string
      enum:
        - ONE_WAY
        - ROUND_TRIP
        - MULTICITY
      example: ROUND_TRIP
    AmadeusCheckoutMetadata:
      type: object
      title: AmadeusCheckoutMetadata
      required:
        - splitPaymentAllowed
      description: Metadata for AmadeusCheckout
      properties:
        paymentPageId:
          type: string
          example: aslkdjalwjd
          description: Payment page Id.
        splitPaymentAllowed:
          type: boolean
          example: true
          default: false
          description: >-
            True if split payment is allowed in Amadeus Checkout, false
            otherwise
        splitOptionsByCardCompany:
          type: array
          items:
            $ref: '#/components/schemas/SplitOptionByCardCompany'
    AmadeusCheckoutMetadataWrapper:
      type: object
      title: AmadeusCheckoutMetadataWrapper
      description: Wrapper for AmadeusCheckoutMetadata
      required:
        - amadeusCheckoutMetadata
      properties:
        amadeusCheckoutMetadata:
          $ref: '#/components/schemas/AmadeusCheckoutMetadata'
    AncillaryFlightId:
      description: Flights to which this ancillary belongs
      type: object
      required:
        - legIndex
      properties:
        legIndex:
          $ref: '#/components/schemas/AncillaryLegIndex'
        flightIndex:
          $ref: '#/components/schemas/AncillaryFlightIndex'
    AncillaryFlightIndex:
      type: integer
      description: >
        Index of flight in it's leg to which this ancillary belongs. If an
        ancillary 

        belongs to all flights, this index should be set to -1
      format: int32
      example: 0
      minimum: -1
    AncillaryLegIndex:
      type: integer
      description: >
        Index of leg to which this ancillary belongs. If an ancillary belongs to
        all legs,

        this index should be set to -1
      format: int32
      example: 0
      minimum: -1
    AncillaryType:
      type: string
      title: AncillaryType
      description: Type of ancillary
      enum:
        - EARLY_BIRD
        - WIFI
        - CARBON_OFFSET
      example: EARLY_BIRD
    AnswerPair:
      type: object
      properties:
        item:
          type: string
          description: The option selected from the list of available choices.
        value:
          type: string
          description: >-
            The additional input provided (by the user) while selecting one of
            the options.
        description:
          type: string
          description: Description of the selected option.
    AppliedCreditInfo:
      type: object
      title: AppliedCreditInfo
      description: Information about credit redeemed in booking.
      required:
        - creditId
      properties:
        creditId:
          type: string
          description: >-
            Unique ID of credit applied. For example, numeric ID of unused
            ticket.
          example: '0017574214321'
        creditAmount:
          $ref: '#/components/schemas/FareAmount'
          description: Total credit amount available.
        fareDifference:
          $ref: '#/components/schemas/Money'
          description: >
            Difference between the selected fare and credit available.

            If the fare is greater than credit available, value of this field
            will be positive (that amount will be charged to payment method).

            If the fare is less than credit available, value of this field will
            be negative (credit balance will remain).
        penalty:
          $ref: '#/components/schemas/Money'
          description: >-
            Penalty amount applied to redeem credit. This could be a change fee
            applied when redeeming.
    ApprovalInfo:
      type: object
      title: ApprovalInfo
      required:
        - approvalStatus
      properties:
        approvalStatus:
          type: string
          description: The approval status for the PNR
          enum:
            - APPROVAL_PENDING
            - APPROVED
            - DENIED
            - TIMED_OUT
            - TIMED_OUT_REMINDER
            - APPROVAL_NOT_REQUIRED
            - SOFT_APPROVAL_TIMEOUT
    AssessmentType:
      type: string
      enum:
        - NEUTRAL
        - BENEFIT
        - RESTRICTION
        - FEE
      example: BENEFIT
    AutomatedCancellationInfo:
      type: object
      description: Info related to possible automated cancellations
      properties:
        supportedCancellations:
          type: array
          description: >
            Supported automated cancellations. If this list is empty, automated
            cancellation is not 

            supported for this booking
          items:
            type: object
            title: CancellationInfo
            required:
              - cancelType
              - totalFare
              - refund
            properties:
              cancelType:
                type: string
                title: CancelType
                description: Type of cancellation
                enum:
                  - VOID
                  - REFUND
              maxCancellationDateTime:
                description: Max date time till when this cancellation is supported
                $ref: '#/components/schemas/DateTimeOffset'
              totalFare:
                description: Total booking fare
                $ref: '#/components/schemas/FareAmount'
              penalty:
                description: Total penalty
                $ref: '#/components/schemas/Money'
              merchantFee:
                description: Non refundable merchant fee
                $ref: '#/components/schemas/Money'
              refund:
                description: Total refund (totalFare - penalty - merchantFee)
                $ref: '#/components/schemas/Money'
    AutomatedExchangeInfo:
      type: object
      description: Info related to possible automated exchange
      properties:
        supportedExchanges:
          type: array
          description: >
            Supported automated exchanges. If this list is empty, automated
            exchange is not 

            supported for this booking.
          items:
            type: object
            title: ExchangeInfo
            properties:
              legInfos:
                type: array
                description: List of legs supported for this exchange
                minItems: 1
                items:
                  type: object
                  title: LegInfo
                  required:
                    - legIdx
                  properties:
                    legIdx:
                      type: integer
                      format: int32
                      example: 1
    BagFees:
      type: object
      description: This contains price info for the baggage
      properties:
        fee:
          $ref: '#/components/schemas/Money'
        applicability:
          $ref: '#/components/schemas/BagPolicyApplicability'
    BagPolicyApplicability:
      type: string
      description: This represents that the info is applicable for per bag/combined bags
      enum:
        - EACH
        - TOTAL
    BagWeightLimit:
      type: object
      description: This contains weight limit details of bag
      properties:
        weightLimit:
          type: array
          description: Weight limit in different units
          items:
            $ref: '#/components/schemas/WeightLimit'
        applicability:
          $ref: '#/components/schemas/BagPolicyApplicability'
    BaggageInfo:
      type: object
      description: Information about the baggage policy.
      properties:
        description:
          type: string
          description: Baggage policy text
          example: 1 checked bag, 33 lbs
        count:
          type: integer
          description: Count of bags
          example: 3
        sizeLimitInfo:
          type: array
          description: Size of bag in cm
          items:
            $ref: '#/components/schemas/SizeInfo'
        weightLimitInfo:
          type: array
          description: Array of bag weight limits
          items:
            $ref: '#/components/schemas/BagWeightLimit'
        fee:
          type: array
          description: Array of bag weight fees
          items:
            $ref: '#/components/schemas/BagFees'
    BaggagePolicy:
      type: object
      description: Baggage policy for this traveler.
      required:
        - checkedIn
        - carryOn
      properties:
        checkedIn:
          type: array
          description: Policies for checked-in baggage
          items:
            $ref: '#/components/schemas/BaggageInfo'
        carryOn:
          type: array
          description: Policies for carry-on baggage
          items:
            $ref: '#/components/schemas/BaggageInfo'
    BasicTripInfo:
      title: BasicTripInfo
      description: Basic trip info
      type: object
      required:
        - tripId
        - tripName
      properties:
        tripId:
          type: string
          description: Spotnana trip Id
          example: '6926658168'
        tripName:
          type: string
          description: Name of the trip
          example: JFK SFO Trip
        tripDescription:
          type: string
          description: Trip description
          example: JFK SFO Business Trip
        applicationId:
          type: string
          format: uuid
          description: Application id used for the trip.
        startDate:
          $ref: '#/components/schemas/DateModel'
        endDate:
          $ref: '#/components/schemas/DateModel'
    BedType:
      type: string
      title: BedType
      description: Bed types.
      enum:
        - UNKNOWN_BED_TYPE
        - DOUBLE
        - FUTON
        - KING
        - MURPHY
        - QUEEN
        - SOFA
        - TATAMI_MATS
        - TWIN
        - SINGLE
        - FULL
        - RUN_OF_THE_HOUSE
        - DORM
        - WATER
        - PULL_OUT
        - TWIN_XL
      example: SINGLE
    BoardingPass:
      type: object
      title: BoardingPass
      description: Boarding pass information for the corresponding flight.
      properties:
        legIndex:
          type: integer
          description: Index of leg to which this boarding pass belongs.
          format: int32
          example: 0
          minimum: 0
        flightIndex:
          type: integer
          description: Index of flight in it's leg to which this boarding pass belongs.
          format: int32
          example: 0
          minimum: 0
        boardingPriority:
          type: string
          description: >-
            Boarding Priority for airlines like Southwest which have open
            seating.
          example: A
        boardingZone:
          type: string
          description: Boarding zone for airlines like Southwest which have open seating.
          example: '16'
    BookerInfo:
      title: BookerInfo
      description: Booker Details
      type: object
      properties:
        name:
          type: string
          description: Name of the Booker
          example: Harry Potter
        email:
          type: string
          description: Email of the Booker
          example: harry@spotnana.com
        role:
          type: string
          description: User facing role of the Booker
          enum:
            - UNKNOWN_ROLE
            - AGENT
            - TRAVEL_MANAGER
            - TRAVELER
            - REGISTRAR
          example: AGENT
        tmcName:
          type: string
          description: Name of the Tmc booker belongs to
          example: Spotnana Technology
    Booking:
      type: object
      title: Booking
      description: Info about all booked items
      properties:
        seats:
          type: array
          title: Seat
          description: Seat booking info
          items:
            type: object
            properties:
              legIdx:
                type: integer
                description: Index of leg to which this seat belongs
                format: int32
                example: 0
                minimum: 0
              flightIdx:
                type: integer
                description: Index of flight in it's leg to which this seat belongs
                format: int32
                example: 0
                minimum: 0
              amount:
                $ref: '#/components/schemas/Money'
                description: Total seat price
              number:
                type: string
                description: Assigned seat number
                example: 32A
              status:
                $ref: '#/components/schemas/FlightSeatStatus'
                description: Seat booking status
              sourceStatus:
                type: string
                description: Raw status code of the seat. E.g. HK, KK.
                example: HK
        luggageDetails:
          type: array
          description: Additional luggage info
          items:
            $ref: '#/components/schemas/LuggageInfo'
        otherAncillaries:
          type: array
          description: Ancillaries other than seat and luggage
          items:
            type: object
            required:
              - flightIds
              - status
              - type
            properties:
              type:
                $ref: '#/components/schemas/AncillaryType'
              legIndex:
                $ref: '#/components/schemas/AncillaryLegIndex'
                deprecated: true
              flightIndex:
                $ref: '#/components/schemas/AncillaryFlightIndex'
                deprecated: true
              fare:
                $ref: '#/components/schemas/FareAmount'
                description: Fare for this ancillary
              status:
                type: string
                description: Status of this ancillary
                enum:
                  - ANCILLARY_STATUS_UNKNOWN
                  - CONFIRMED
                  - PENDING
                  - CANCELLED
                  - ELIGIBLE
                  - NOT_APPLICABLE
                example: CONFIRMED
              flightIds:
                type: array
                items:
                  $ref: '#/components/schemas/AncillaryFlightId'
        itinerary:
          type: object
          title: Itinerary
          description: Info about booked itinerary
          readOnly: true
          properties:
            totalFare:
              $ref: '#/components/schemas/FareAmount'
              description: >
                Total itinerary fare including flights, ancillaries and extras.
                This does not 

                include service fee
            totalFlightsFare:
              $ref: '#/components/schemas/FareAmount'
              description: Total flights fare
            totalSeatFare:
              $ref: '#/components/schemas/Money'
              description: Total fare for seats
            totalLuggageFare:
              $ref: '#/components/schemas/Money'
              description: Total fare for luggage
            totalMerchantFees:
              $ref: '#/components/schemas/Money'
              description: Total merchant fees
            totalAirlineFees:
              $ref: '#/components/schemas/Money'
              description: Total card or sevice fee charged by airline
            otherCharges:
              $ref: '#/components/schemas/Money'
              description: Charges other than flight, seat and luggage
            flightFareBreakup:
              type: array
              description: Ticket level flight fare breakup
              items:
                type: object
                title: FlightFareBreakup
                properties:
                  legIndices:
                    type: array
                    description: List of legs for this fare info
                    items:
                      type: integer
                      format: int32
                      example: 1
                  flightsFare:
                    description: Total flight fare for the above legs
                    $ref: '#/components/schemas/FareAmount'
            fareComponents:
              type: array
              description: List of fare component details for this itinerary
              items:
                $ref: '#/components/schemas/FareComponentDetail'
            otherAncillaryFares:
              type: array
              description: Fare breakup for ancillaries other than seat and luggage
              items:
                $ref: '#/components/schemas/OtherAncillaryFare'
        otherCharges:
          type: array
          title: Other
          description: Extra charges over flight fare, seat and luggage.
          items:
            type: object
            required:
              - amount
              - type
            properties:
              amount:
                $ref: '#/components/schemas/Money'
                description: Total amount for extra item
              type:
                type: string
                description: Name of extra item
                example: Meal
    BookingHistory:
      title: BookingHistory
      description: Booking History
      properties:
        bookerInfo:
          $ref: '#/components/schemas/BookerInfo'
          description: Booker Information
        bookingInfo:
          $ref: '#/components/schemas/BookingInfo'
          description: Booking Information
    BookingInfo:
      title: BookingInfo
      description: Booking Details
      type: object
      properties:
        updatedDateTime:
          description: Date Time when the booking was created/updated
          $ref: '#/components/schemas/DateTimeOffset'
        status:
          type: string
          description: User facing status of the booking in history
          enum:
            - UNKNOWN_STATUS
            - BOOKED
            - EXCHANGED
            - UPDATED
            - CANCELLED
          example: BOOKED
        bookingSourceClient:
          type: string
          description: Client on which this booking was created/updated
          enum:
            - ANDROID_APP
            - ANDROID_WEB
            - ANDROID_EMBED
            - IOS_APP
            - IOS_WEB
            - IOS_EMBED
            - WEB
    BookingStatusType:
      title: BookingStatusType
      description: Booking status of the travel.
      type: string
      enum:
        - BOOKED
        - NOT_BOOKED
        - OPTED_OUT
      example: BOOKED
    BoolWrapper:
      type: object
      title: BoolWrapper
      properties:
        b:
          type: boolean
    BrexBudgetMetadata:
      type: object
      title: BrexBudgetMetadata
      description: Metadata for Brex Budget payment source.
      required:
        - budgetName
      properties:
        budgetName:
          type: string
          example: Travel Budget
          description: Budget name.
        budgetRemainingBalance:
          $ref: '#/components/schemas/SimpleMoney'
          description: Remaining balance of the budget.
        cardId:
          type: string
          description: Card id of the budget.
        budgetRemainingBalanceFormatted:
          type: string
          example: $90,000.00
          description: Remaining balance of the budget formatted with currency.
        isPersonalCardAllowed:
          type: boolean
          description: Whether the personal card is allowed for the trip.
        isBudgetMasked:
          type: boolean
          description: Whether the budget is masked.
    BrexBudgetMetadataWrapper:
      type: object
      title: BrexBudgetMetadataWrapper
      description: Wrapper for BrexBudgetMetadata
      required:
        - brexBudgetMetadata
      properties:
        brexBudgetMetadata:
          $ref: '#/components/schemas/BrexBudgetMetadata'
    BuyerInfo:
      type: object
      title: BuyerInfo
      description: Buyer of items mentioned in the invoice.
      required:
        - name
        - address
      properties:
        name:
          description: Name of buyer, usually a traveler.
          type: string
          example: John Doe
        address:
          description: Address of buyer. Could be office, legal entity or org address.
          type: string
          example: |-
            115 Broadway Suite 04-101,
            New York, NY 10006
        taxId:
          description: Tax number for the seller, for ex GSTN in India
          type: string
          example: TXG239023092
          deprecated: true
        idInfo:
          type: array
          description: The seller ID information.
          items:
            $ref: '#/components/schemas/IdInfo'
    CO2EmissionDetail:
      type: object
      title: CO2EmissionDetail
      description: CO2 emission details for the flight.
      required:
        - emissionValue
      properties:
        emissionValue:
          type: number
          format: double
          description: >-
            Estimated C02 emissions value for selected flight and seating class,
            per passenger (in tons)
          example: 10
        averageEmissionValue:
          type: number
          format: double
          description: >-
            Average estimated C02 emissions per passenger for same route (in
            tons)
          example: 10
        flightDistanceKm:
          type: number
          format: double
          description: Total distance flown by the flight in kilometres.
          example: 10
        isApproximate:
          type: boolean
          description: Indicates whether the emissions value is approximate or not.
          example: true
    COGS:
      type: object
      title: Cost of goods sold
      description: >-
        Payment information about all goods sold. This is a required field for
        now.
      required:
        - payments
      properties:
        payments:
          type: array
          description: >-
            Potentially multiple payments that spotnana will pay to vendors for
            this booking
          items:
            $ref: '#/components/schemas/Payment'
          minItems: 1
    CTC:
      type: object
      title: Cost to customer
      description: Cost of services, charged to customer
      required:
        - payments
      properties:
        payments:
          type: array
          description: Potentially multiple payments that spotnana will charge the clients
          items:
            $ref: '#/components/schemas/Payment'
          minItems: 1
    Cabin:
      title: Cabin
      description: Flight cabin
      type: string
      enum:
        - UNKNOWN_CABIN
        - ECONOMY
        - PREMIUM_ECONOMY
        - BUSINESS
        - FIRST
      example: ECONOMY
    CancelDetail:
      title: CancelDetail
      description: Describe the details associated with cancel PNR.
      type: object
      properties:
        cancelObjectDetail:
          $ref: '#/components/schemas/CancelObjectDetail'
        refundInfo:
          type: array
          description: List of refund details associated with the cancel object.
          items:
            $ref: '#/components/schemas/RefundInfoDetail'
    CancelObjectDetail:
      title: CancelObjectDetail
      description: Details associated with object to be cancel.
      type: object
      properties:
        cancelObjectType:
          type: string
          enum:
            - PNR
            - TICKET
            - JOURNEY
          description: Type of entity to be cancel.
          example: PNR
        cancelObjectId:
          type: string
          description: Unique ID of Cancel Object
        vendorCancellationId:
          type: string
          description: Vendor cancellation Id of the supplier.
    CancellationDetails:
      type: object
      title: CancellationDetails
      description: Cancellation details for this booking
      oneOf:
        - $ref: '#/components/schemas/AirCancellationDetailsWrapper'
        - $ref: '#/components/schemas/RailCancellationDetailsWrapper'
    CancellationPolicy1:
      type: object
      description: Information about the cancellation policy.
      properties:
        description:
          type: string
          description: Text describing the cancellation policy.
          example: Non-refundable
        fee:
          $ref: '#/components/schemas/Money'
        assessmentType:
          $ref: '#/components/schemas/AssessmentType'
          description: Assessment Type
        isCat16:
          type: boolean
          description: Is source cat16
          example: true
        isConditional:
          type: boolean
          description: Is conditional
          example: true
    CancellationPolicy2:
      type: object
      title: CancellationPolicy
      description: Cancellation policy info.
      required:
        - policy
      properties:
        policy:
          type: string
          description: Indicates whether the booking is refundable or not.
          enum:
            - UNKNOWN
            - NON_REFUNDABLE
            - FREE_CANCELLATION_UNTIL
            - PARTIALLY_REFUNDABLE
          example: NON_REFUNDABLE
        deadline:
          $ref: '#/components/schemas/DateTimeLocal'
          description: >
            The local date and time of the final deadline for cancellation, if
            policy type is

            FREE_CANCELLATION_UNTIL or PARTIALLY_REFUNDABLE.
        deadlineUtc:
          $ref: '#/components/schemas/DateTimeOffset'
          description: >
            The UTC date and time of the final deadline for cancellation, if
            policy type is

            FREE_CANCELLATION_UNTIL or PARTIALLY_REFUNDABLE.
        amount:
          $ref: '#/components/schemas/Money'
    CancellationRequestStatus:
      type: string
      description: >
        Status of in progress cancellation request

        CANCELLATION_IN_PROGRESS - Cancellation request is in progress via OBT

        CANCELLATION_BY_AGENT_REQUESTED - Cancellation request is in progress
        via agent
      enum:
        - CANCELLATION_IN_PROGRESS
        - CANCELLATION_BY_AGENT_REQUESTED
      example: CANCELLATION_IN_PROGRESS
    Car:
      title: Car
      description: Car PNR information
      required:
        - carInfo
        - dropOffDateTime
        - pickupDateTime
        - rate
        - vendorConfirmationNumber
      properties:
        cancellationPolicy:
          $ref: '#/components/schemas/CancellationPolicy2'
          description: Car rental cancellation policy.
        carInfo:
          $ref: '#/components/schemas/CarInfo'
          description: Details of the car booked.
        dropOffDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
          description: Drop off date and time.
        paymentType:
          type: string
          description: Payment type.
          enum:
            - UNKNOWN_PAYMENT_TYPE
            - PAY_AT_VENDOR
            - PREPAID
          example: PREPAID
        pickupDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
          description: Pickup date and time.
        pnrStatus:
          $ref: '#/components/schemas/PnrStatus'
          description: Pnr status.
        rate:
          $ref: '#/components/schemas/Cost'
          description: Car rental rate.
        vendorConfirmationNumber:
          type: string
          description: Car confirmation number.
          example: '2108528068'
        sortingPriority:
          type: integer
          description: Sort order on the trips page
          example: 0
        corporateId:
          type: string
          description: Corporate id applied while booking
          example: '8371'
        rateType:
          type: string
          description: Rate type of the car booked
          enum:
            - PUBLISHED
            - CORPORATE
            - SPOTNANA
        sourceStatus:
          type: string
          description: Source status code of the pnr
        vendorCancellationId:
          type: string
          description: Cancellation id sent by the supplier.
          example: '2108528068'
        originalCarSearchInfo:
          $ref: '#/components/schemas/CarSearchInfo'
          description: Original Car search info.
    CarAmenities:
      type: object
      title: CarAmenities
      description: Car amenities.
      properties:
        numDoors:
          type: integer
          description: Number of doors.
          format: int32
          example: 4
        numLargeBags:
          type: integer
          description: Number of large bags.
          format: int32
          example: 2
        numSeatBelts:
          type: integer
          description: Number of seats belts.
          format: int32
          example: 5
        numSeats:
          type: integer
          description: Number of seats.
          format: int32
          example: 5
        numSmallBags:
          type: integer
          description: Number of small bags.
          format: int32
          example: 5
    CarBookingGuideline:
      title: CarBookingGuideline
      description: Car related guidelines
      type: object
      required:
        - pickupBookingWindow
        - dropoffBookingWindow
      properties:
        pickupBookingWindow:
          $ref: '#/components/schemas/EventBookingWindow'
        dropoffBookingWindow:
          $ref: '#/components/schemas/EventBookingWindow'
    CarBookingGuidelineWrapper:
      type: object
      title: CarBookingGuidelineWrapper
      description: Wrapper for CarBookingGuideline
      properties:
        carBookingGuideLine:
          $ref: '#/components/schemas/CarBookingGuideline'
    CarCo2EmissionDetail:
      type: object
      description: The CO2 emission detail for car.
      required:
        - co2EmissionValue
      properties:
        co2EmissionValue:
          type: number
          format: double
          example: 0.01
          description: The CO2 emission value in kgs for car.
    CarInfo:
      type: object
      title: CarInfo
      description: Car info
      required:
        - carSpec
        - dropOffLocation
        - pickupLocation
        - vendor
      properties:
        carSpec:
          $ref: '#/components/schemas/CarSpec'
          description: Vehicle information.
        dropOffLocation:
          $ref: '#/components/schemas/CarLocation'
          description: Drop off location.
        mileageAllowance:
          $ref: '#/components/schemas/Length'
          description: Mileage allowance.
        pickupLocation:
          $ref: '#/components/schemas/CarLocation'
          description: Pick up location.
        vendor:
          $ref: '#/components/schemas/Vendor'
        carTypeCode:
          type: string
          description: Car type code
          example: EBMR
        extraMileageCharge:
          $ref: '#/components/schemas/Money'
        preferredType:
          type: array
          description: Car preference
          deprecated: true
          items:
            $ref: '#/components/schemas/PreferredType'
        preferences:
          type: array
          description: Car preferences
          items:
            $ref: '#/components/schemas/Preference'
        co2EmissionDetail:
          description: The CO2 emission detail for car.
          $ref: '#/components/schemas/CarCo2EmissionDetail'
    CarLocation:
      type: object
      title: CarLocation
      description: Pickup and drop-off location info.
      required:
        - address
      properties:
        address:
          $ref: '#/components/schemas/PostalAddress'
          description: Location address / airport code.
        coordinates:
          $ref: '#/components/schemas/Latlng'
          description: Latitude and longitude of the location.
        counterLocation:
          $ref: '#/components/schemas/CounterLocation'
          description: Counter location. If airport counter, set locationCode in address.
        contactInfo:
          $ref: '#/components/schemas/LocationContactInfo'
        operatingSchedule:
          $ref: '#/components/schemas/LocationOperatingSchedule'
    CarPref:
      type: object
      title: CarPref
      description: Travel preferences related to car.
      properties:
        vendors:
          type: array
          description: A list of car vendors.
          items:
            $ref: '#/components/schemas/CarVendor'
        carTypes:
          type: array
          description: A list of types of car.
          items:
            $ref: '#/components/schemas/CarType'
        engineTypes:
          type: array
          description: A list of types of engine.
          items:
            $ref: '#/components/schemas/EngineType'
        transmissionTypes:
          type: array
          description: A list of types of transmission.
          items:
            $ref: '#/components/schemas/TransmissionSearchFilter'
        conditionalRates:
          type: array
          description: A list of conditional rates for rail.
          items:
            $ref: '#/components/schemas/ConditionalRate'
    CarRsvpResponse:
      title: CarRsvpResponse
      type: object
      description: Car rsvp response
      properties:
        notNeeded:
          type: boolean
          description: Whether car booking is needed by the traveler or not
          example: true
    CarSearchInfo:
      title: CarSearchInfo
      type: object
      description: Car search information
      required:
        - pickup
        - dropOff
      properties:
        pickup:
          $ref: '#/components/schemas/SearchParams'
        dropOff:
          $ref: '#/components/schemas/SearchParams'
    CarSearchLocationParam:
      title: CarSearchLocationParam
      description: Car Search location parameters.
      type: object
      properties:
        airportCode:
          type: string
          description: IATA code for AIRPORT
          example: SFO
        cityCode:
          type: string
          description: City Code.
          example: JFK
        coordinates:
          $ref: '#/components/schemas/Latlng'
    CarSpec:
      type: object
      title: CarSpec
      description: Car spec.
      required:
        - type
      properties:
        airConditioning:
          $ref: '#/components/schemas/AirConditioning'
          description: Whether air conditioning is available.
        amenities:
          $ref: '#/components/schemas/CarAmenities'
          description: Car amenities.
        type:
          $ref: '#/components/schemas/CarType'
          description: Car type.
        displayName:
          type: string
          description: Car display name.
          example: Economy
        engineType:
          $ref: '#/components/schemas/EngineType'
          description: Engine type.
        imageGroups:
          type: array
          description: Collection of car images.
          items:
            $ref: '#/components/schemas/ImageGroup'
        transmission:
          $ref: '#/components/schemas/Transmission'
          description: Transmission type.
    CarType:
      type: string
      title: CarType
      description: Car type.
      enum:
        - OTHER
        - MINI
        - ECONOMY
        - COMPACT
        - MID_SIZE
        - STANDARD
        - FULL_SIZE
        - PREMIUM
        - LUXURY
        - CONVERTIBLE
        - MINIVAN
        - SUV
        - VAN
        - PICKUP
        - SPORTS
        - SPECIAL
        - RECREATIONAL_VEHICLE
        - WAGON
      example: ECONOMY
    CarVendor:
      type: object
      title: CarVendor
      description: Car vendor.
      required:
        - code
        - name
      properties:
        code:
          type: string
          description: Vendor code
          example: ZE
        name:
          type: string
          description: Vendor name
          example: HERTZ
        isPresentInPreferredVendors:
          type: boolean
          description: >-
            Whether the car vendor is present in preferred vendor list. This is
            an optional field which gets populated only in the preferred vendor
            autocomplete API.
          example: true
    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
        address:
          description: Billing address
          $ref: '#/components/schemas/PostalAddress'
        number:
          type: string
          description: Card number
          example: '4111111111111111'
        expiryMonth:
          type: integer
          format: int32
          minimum: 1
          maximum: 12
          description: Expiry month
          example: 1
          deprecated: true
        expiryYear:
          type: integer
          format: int32
          description: Expiry year
          minimum: 2000
          example: 2010
          deprecated: true
        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:
          type: string
          enum:
            - CORPORATE
            - PERSONAL
            - CENTRAL
          description: >-
            Ownership label of the card whether it is personal, corporate or
            central.
          example: CENTRAL
    CardAccessEntity:
      title: CardAccessEntity
      type: object
      description: Contains the central access level and entity id.
      required:
        - entityId
        - centralCardAccessLevel
      properties:
        entityId:
          type: string
          description: >-
            Holds the id for for the user who can access the card or
            organization id or legal entity
        centralCardAccessLevel:
          $ref: '#/components/schemas/CentralCardAccessLevel'
    CardCompany:
      type: string
      enum:
        - NONE
        - VISA
        - MASTERCARD
        - AMEX
        - DISCOVER
        - AIR_TRAVEL_UATP
        - CARTE_BLANCHE
        - DINERS_CLUB
        - JCB
        - BREX
        - UNION_PAY
        - EURO_CARD
        - ACCESS_CARD
        - ELO_CARD
      description: The issuing company of card
      example: VISA
    CardDetails:
      type: object
      title: Card Details
      description: Card Details
      required:
        - token
        - expiry
        - company
      properties:
        company:
          $ref: '#/components/schemas/CardCompany'
        token:
          type: string
          description: Tokenized Card Number
          example: '4111111111111111'
        expiry:
          $ref: '#/components/schemas/CardExpiry'
    CardExpiry:
      title: CardExpiry
      type: object
      description: Contains the expiry of a Card.
      oneOf:
        - $ref: '#/components/schemas/TokenizedExpiryWrapper'
        - $ref: '#/components/schemas/ExpiryWrapper'
    CardMetadata:
      type: object
      title: CardMetadata
      description: Metadata for Card payment source.
      required:
        - card
      properties:
        card:
          $ref: '#/components/schemas/Card'
    CardMetadata2:
      type: object
      title: CardMetadata
      description: Metadata for Card payment source.
      properties:
        card:
          $ref: '#/components/schemas/Card'
        accessType:
          $ref: '#/components/schemas/CreditCardAccess'
        isLodgeCard:
          type: boolean
          description: Whether the payment is made using a lodge card
          example: false
        bta:
          type: string
          description: >-
            Whether this is a BTA card. Possible values are 'Y' or 'N'. Relevant
            only for lodge cards.
          example: 'Y'
    CardMetadataWrapper:
      type: object
      title: CardMetadataWrapper
      description: Wrapper for CardMetadata
      properties:
        cardMetadata:
          $ref: '#/components/schemas/CardMetadata'
    CentralCardAccessLevel:
      title: CentralCardAccessLevel
      type: string
      description: >-
        Identifies at which level central card is applicable, for example
        organization or legal entity.
      enum:
        - UNKNOWN
        - ORGANIZATION
        - LEGAL_ENTITY
        - TMC
    CoachPref:
      type: string
      description: The preference of coach.
      enum:
        - SMOKING
        - NON_SMOKING
        - PETS_ALLOWED
        - RESTAURANT
        - QUIET
      example: NON_SMOKING
    CompanyConfigSource:
      type: object
      title: CompanyConfigSource
      description: >-
        For this option source, options would be auto generated based on
        specified parameter.
      required:
        - optionsParam
      properties:
        optionsParam:
          $ref: '#/components/schemas/CustomFieldOptionsParam'
    CompanyConfigSourceWrapper:
      type: object
      title: CompanyConfigSourceWrapper
      description: Wrapper for option source company config.
      properties:
        companyConfig:
          $ref: '#/components/schemas/CompanyConfigSource'
    CompanyId:
      type: object
      title: CompanyId
      description: Company ID
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
          example: f49d00fe-1eda-4304-ba79-a980f565281d
    CompanyRef:
      type: object
      description: Basic information about a company.
      required:
        - id
      properties:
        id:
          $ref: '#/components/schemas/CompanyId'
        name:
          type: string
        logo:
          $ref: '#/components/schemas/Image'
          description: Company logo
    CompanySpecifiedAttribute:
      type: object
      description: Company specified user arbitrary attribute.
      required:
        - fixedColumnName
        - value
      properties:
        fixedColumnName:
          type: string
          example: contingentType
        value:
          type: string
          example: FSTV
    CompanySpecifiedAttributeLegalEntity:
      type: object
      description: Company specified attribute for legal entity.
      required:
        - fieldName
        - value
      properties:
        fieldName:
          type: string
          description: Field name of the attribute
          example: businessId
        value:
          type: string
          description: Field value of the attribute
          example: ABCD
    Condition:
      type: object
      title: Condition
      description: Details of the condition
      required:
        - url
        - text
      properties:
        url:
          type: string
          description: Url for terms and conditions.
          example: https://www.amtrak.com/terms-and-conditions.html
        text:
          type: string
          description: Display text for the url.
          example: Amtrak
    ConditionalRate:
      type: string
      title: ConditionalRate
      description: Conditional rate.
      enum:
        - MILITARY
        - AAA
        - GOVERNMENT
      example: AAA
    ConfermaInfo:
      type: object
      title: ConfermaInfo
      description: Details of conferma - one of virtual card vendors.
      required:
        - deploymentId
      properties:
        deploymentId:
          type: integer
          format: int32
          description: >-
            Unique identifier assigned to the virtual card deployment at the
            point of creation.
          example: 68793680
    ConnectionRiskAlert:
      type: object
      title: ConnectionRiskAlert
      description: Alert for connection risk in a leg
      properties:
        departingFlightIndex:
          type: integer
          format: int32
          description: Index of departing flight for this connection
        minConnectionDuration:
          description: Minimum connection time
          $ref: '#/components/schemas/Duration'
        previousConnectionDuration:
          description: Connection time before this alert
          $ref: '#/components/schemas/Duration'
        updatedConnectionDuration:
          description: Updated connection time
          $ref: '#/components/schemas/Duration'
    Cost:
      type: object
      title: Cost
      description: Rate info for non-air pnr.
      required:
        - base
        - tax
      properties:
        base:
          $ref: '#/components/schemas/Money'
          description: Base Amount.
        extras:
          type: array
          description: List of extras.
          items:
            type: object
            required:
              - type
              - amount
            properties:
              type:
                type: string
                description: Charge type.
                example: SERVICE_CHARGE
              amount:
                $ref: '#/components/schemas/Money'
                description: Extra amount.
        refund:
          $ref: '#/components/schemas/Money'
          description: Refund Amount.
          deprecated: true
        tax:
          $ref: '#/components/schemas/Money'
          description: Tax amount.
        commission:
          type: object
          description: Commission
          properties:
            amount:
              $ref: '#/components/schemas/Money'
              description: The commission amount we are getting from the vendor
            percent:
              type: number
              format: double
              description: >-
                The percentage of the base amount that we are getting as
                commission
              example: 10
        includesCommission:
          type: boolean
          description: Whether the rate includes commission
          example: false
        taxBreakdown:
          type: object
          description: Tax breakdown
          properties:
            tax:
              type: array
              description: List of taxes for this ticket
              items:
                type: object
                properties:
                  amount:
                    $ref: '#/components/schemas/Money'
                    description: Tax amount
                  taxCode:
                    type: string
                    description: Tax code
        transactionDate:
          $ref: '#/components/schemas/DateModel'
          description: Transaction date
        refundInfo:
          type: object
          description: Refund info
          required:
            - refundAmount
          properties:
            refundAmount:
              $ref: '#/components/schemas/FareAmount'
              description: Amount refunded if cancelled
            refundTaxAmount:
              $ref: '#/components/schemas/FareAmount'
              description: Amount of tax refunded if cancelled
              deprecated: true
            refundDate:
              $ref: '#/components/schemas/DateModel'
              description: Refund transaction date
            penalty:
              $ref: '#/components/schemas/FareAmount'
              description: Refund penalty
            refundVoucher:
              $ref: '#/components/schemas/Voucher'
              description: Refund voucher details.
    CostCenter:
      type: object
      title: CostCenter
      description: Cost center details.
      required:
        - id
        - name
      properties:
        employeeCount:
          type: integer
          format: int32
          description: Count of employees in the cost center
          example: 120
        id:
          $ref: '#/components/schemas/CostCenterId'
        name:
          type: string
          example: CostCenter
        externalId:
          type: string
          example: external-id
    CostCenterId:
      type: object
      title: Cost center id.
      required:
        - id
      properties:
        id:
          type: string
          example: 731ccbca-0415-6fe1-d235-c324dfbe7423
    CounterLocation:
      type: string
      title: CounterLocation
      description: Rental car counter location.
      enum:
        - UNKNOWN_COUNTER
        - NON_AIRPORT_LOCATION
        - IN_TERMINAL
        - OFF_AIRPORT_RENTAL_SHUTTLE
        - IN_TERMINAL_RENTAL_SHUTTLE
        - ON_AIRPORT_RENTAL_SHUTTLE
        - ON_AIRPORT_AIRPORT_SHUTTLE
        - CALL_FOR_SHUTTLE
        - TWO_SHUTTLES_AIRPORT_AND_RENTAL
      example: OFF_AIRPORT_RENTAL_SHUTTLE
    CreateTripRequest:
      type: object
      title: CreateTripRequest
      description: >-
        Request body to create a trip, with either userId or registrarId
        mandatory.
      required:
        - tripName
      properties:
        tripName:
          type: string
          description: Name of the trip.
        tripDescription:
          type: string
          description: Description of the trip.
        userId:
          $ref: '#/components/schemas/UserId'
        registrarId:
          description: Creator of the Trip.
          $ref: '#/components/schemas/UserId'
    CreatedVia:
      title: CreatedViaEnum
      type: string
      description: Indicates the source of creation of PNR, like SHELL, OBT, etc.
      readOnly: true
      enum:
        - OFFLINE
        - OBT
        - SHELL
        - PASSIVE
        - API
    Credit:
      type: object
      title: Credit
      required:
        - ticketNumber
        - ticketType
        - sourcePnr
        - totalFare
        - passengerName
        - segmentsAvailable
        - type
        - airlineInfo
        - traveler
      properties:
        type:
          type: string
          description: >-
            Payment source type. Should be set to UNUSED_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'
    CreditCardAccess:
      type: object
      title: CreditCardAccess
      description: >-
        Access type for cards to check who in the organization has permission to
        use it
      required:
        - accessType
        - entityIds
      properties:
        accessType:
          $ref: '#/components/schemas/CreditCardAccessType'
        entityIds:
          type: array
          items:
            type: string
          description: >-
            Holds the ids for for all users who can access the card or
            organization id
        entities:
          type: array
          description: >-
            A list of cardAccessEntity consisting of central card access level
            if present and entity id.
          items:
            $ref: '#/components/schemas/CardAccessEntity'
    CreditCardAccessType:
      title: CreditCardAccessType
      type: string
      description: >-
        Identifies the different ways the card can be used across an
        organization
      enum:
        - UNKNOWN_TYPE
        - CENTRALISED
        - INDIVIDUAL
        - PERSONAL
        - TMC
        - APPLICATION
        - ITINERARY
        - EVENTS
    CreditStatus:
      type: string
      description: Status of the credit.
      enum:
        - STATUS_UNKNOWN
        - OPEN
        - USED
    CustomField:
      type: object
      title: CustomField
      description: The custom field containing type, externalId and description
      required:
        - id
        - type
        - description
      properties:
        id:
          type: string
          description: Meeting id or budget id based on custom field type.
        type:
          $ref: '#/components/schemas/CustomFieldType'
        description:
          type: string
          description: Description of the custom Field
          example: GLOBAL OFFSITE 2022
    CustomFieldId:
      type: object
      title: CustomFieldId
      description: The custom field type and the id associated with it.
      required:
        - type
        - externalId
      properties:
        type:
          $ref: '#/components/schemas/CustomFieldType'
        externalId:
          type: string
          description: Meeting id or budget id based on custom field type.
    CustomFieldLocation:
      title: CustomFieldLocation
      description: Display the custom fields in all these locations.
      type: string
      enum:
        - POLICY_APPROVAL_EMAIL
        - PNR_EMAIL
        - TRIP_EMAIL
      example: POLICY_APPROVAL_EMAIL
    CustomFieldMatchConditions:
      type: object
      title: CustomFieldMatchConditions
      description: Conditions to select the custom field for given context.
      properties:
        travelerConditions:
          $ref: '#/components/schemas/TravelerMatchConditions'
        travelTypes:
          type: array
          description: Travel types to match.
          items:
            $ref: '#/components/schemas/TravelType'
        travelRegionTypes:
          type: array
          description: Travel region types to match.
          items:
            $ref: '#/components/schemas/TravelRegionType'
        tripUsageTypes:
          type: array
          description: >-
            Trip usage types to match. If empty, all trip usage types will be
            matched.
          items:
            $ref: '#/components/schemas/TripUsageType'
    CustomFieldOptionsParam:
      type: string
      title: CustomFieldOptionsParam
      enum:
        - COST_CENTER
        - LEGAL_ENTITY
        - OFFICE
        - DEPARTMENT
      description: Parameter to form options for the custom field.
      example: COST_CENTER
    CustomFieldType:
      type: string
      description: The type of custom field.
      enum:
        - QUESTION
        - MEETING
        - BUDGET
        - BREX_TOKEN
      default: QUESTION
    CustomPaymentMethodMetadata:
      type: object
      title: CustomPaymentMethodMetadata
      description: Metadata for Custom Payment Method payment source.
      oneOf:
        - $ref: '#/components/schemas/BrexBudgetMetadataWrapper'
        - $ref: '#/components/schemas/AmadeusCheckoutMetadataWrapper'
        - $ref: '#/components/schemas/QantasTravelFundMetadataWrapper'
    CustomPaymentMethodMetadataWrapper:
      type: object
      title: CustomPaymentMethodMetadataWrapper
      description: Wrapper for CustomPaymentMethodMetadata
      properties:
        customPaymentMethodMetadata:
          $ref: '#/components/schemas/CustomPaymentMethodMetadata'
    DateModel:
      title: Date
      description: Date in ISO 8601 standard.
      type: object
      required:
        - iso8601
      properties:
        iso8601:
          type: string
          pattern: ^\d{4}-(0[1-9]|1[012])-(0[1-9]|[12][0-9]|3[01])$
          example: '2017-07-21'
    DateRange:
      type: object
      description: Date range within which the virtual card can be charged.
      required:
        - startDate
        - endDate
      properties:
        startDate:
          $ref: '#/components/schemas/DateTimeLocal'
        endDate:
          $ref: '#/components/schemas/DateTimeLocal'
    DateTimeLocal:
      title: DateTimeLocal
      description: Local date and time represented in the ISO 8601 standard.
      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]))?$
          example: 2017-07-21T17:32
    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
    DateTimeRange:
      type: object
      properties:
        min:
          $ref: '#/components/schemas/DateTimeLocal'
          description: Minimum value - inclusive.
        max:
          $ref: '#/components/schemas/DateTimeLocal'
          description: Maximum value - inclusive.
    DeckLevel:
      type: string
      description: The deck level of the rail.
      enum:
        - UPPER_DECK
        - LOWER_DECK
      example: UPPER_DECK
    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
    DepartmentId:
      type: object
      title: DepartmentId
      description: Department id.
      required:
        - id
      properties:
        id:
          type: string
          example: 631ccbcf-9414-5fe0-c234-b324dfbe7422
    DepartmentV2:
      type: object
      title: DepartmentV2
      description: Department details.
      required:
        - id
        - name
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          description: Name of the department
          example: IT Department
        externalId:
          type: string
          description: External id of the department
          example: department-ext-id
    Dimensions:
      type: object
      title: Dimensions
      description: Image dimensions ie width and height.
      properties:
        height:
          type: integer
          format: int32
          example: 120
        width:
          type: integer
          format: int32
          example: 240
    DirectBilling:
      type: object
      title: DirectBilling
      description: Descriptor for direct billing details.
      properties:
        directBillingCode:
          type: string
          description: Direct billing code provided by the vendor.
        corporateDiscountCode:
          type: string
          deprecated: true
          description: Corporate discount code provided by the vendor.
        label:
          type: string
          description: Label for the Direct Billing Payment method.
    DirectBilling2:
      title: DirectBilling
      type: object
      description: Metadata for Direct Billing
      required:
        - vendorId
      properties:
        vendorId:
          type: string
          description: Unique vendor id/code
          example: ZI
        directBillingCode:
          type: string
          description: Direct billing code provided by the vendor
          example: '123456'
    DirectBillingWrapper:
      type: object
      title: DirectBillingWrapper
      description: Wrapper for DirectBilling
      properties:
        directBilling:
          $ref: '#/components/schemas/DirectBilling'
    DirectBillingWrapper2:
      type: object
      title: DirectBillingWrapper
      description: Wrapper for DirectBilling metadata
      required:
        - directBilling
      properties:
        directBilling:
          $ref: '#/components/schemas/DirectBilling2'
    Document:
      type: object
      title: Document
      description: Document details.
      required:
        - url
        - documentId
        - documentMetadata
      properties:
        url:
          type: string
          description: S3 location of the document.
          example: https://s3.amazonaws.com/bucket-name/folder-name/file-name
        documentId:
          type: string
          format: uuid
          description: Unique identifier of the document.
          example: f49d00fe-1eda-4304-ba79-a980f565281d
        documentMetadata:
          $ref: '#/components/schemas/DocumentMetadata'
    DocumentMetadata:
      title: DocumentMetadata
      description: Metadata related to document.
      type: object
      required:
        - documentType
        - entityType
        - entityId
        - entityMetadata
        - name
      properties:
        documentType:
          $ref: '#/components/schemas/DocumentType'
        entityType:
          $ref: '#/components/schemas/EntityType'
        entityId:
          type: string
          description: Entity Id for the given entity type.
          example: '123124'
        entityMetadata:
          $ref: '#/components/schemas/EntityMetadata'
        name:
          type: string
          description: Document name.
          example: BoardingPass.pdf
    DocumentType:
      title: DocumentType
      description: Document type.
      type: string
      enum:
        - BOARDING_PASS
        - CONFIRMATION
        - INVOICE
        - VISA
        - MISCELLANEOUS
        - OTHERS
        - TASK_PROCESSOR
        - EVENT_COVER_IMAGE
      example: VISA
    DoubleListWrapper:
      type: object
      title: DoubleListWrapper
      properties:
        dList:
          type: array
          items:
            type: number
            format: double
    DoubleRange:
      type: object
      properties:
        min:
          type: number
          format: double
          description: Minimum value - inclusive.
        max:
          type: number
          format: double
          description: Maximum value - inclusive.
    DoubleRangeWrapper:
      type: object
      title: DoubleRangeWrapper
      properties:
        dRange:
          $ref: '#/components/schemas/DoubleRange'
    DoubleWrapper:
      type: object
      title: DoubleWrapper
      properties:
        d:
          type: number
          format: double
    DownloadInvoiceResponse:
      title: DownloadInvoiceResponse
      type: object
      description: Invoice of trip in PDF format
      properties:
        data:
          type: string
          format: byte
          example: 6935813e12584abda0e43d71cd2ea260
    Dpan:
      type: object
      title: Dpan
      description: Object to pass through dpan payment source details through the api call.
      required:
        - type
        - cardDetails
      properties:
        type:
          type: string
          description: Payment source type. Should be set to DPAN for card details.
        cardDetails:
          $ref: '#/components/schemas/CardDetails'
    Duration:
      type: object
      title: Duration
      description: Represents a duration of time with specific units of time.
      properties:
        iso8601:
          description: >
            Durations define the amount of intervening time in a time interval
            and are represented by the

            format P[n]Y[n]M[n]DT[n]H[n]M[n]S.

            The [n] is replaced by the value for each of the date and time
            elements that follow the [n].

            Leading zeros are not required. The capital letters P, Y, M, W, D,
            T, H, M, and S are

            designators for each of the date and time elements and are not
            replaced. P is the duration

            designator (for period) placed at the start of the duration
            representation.

            Y is the year designator.

            M is the month designator.

            W is the week designator.

            D is the day designator.

            T is the time designator.

            H is the hour designator.

            M is the minute designator.

            S is the second designator and can include decimal digits with
            arbitrary precision.
          type: string
          example: PT19H55M
    ElectricVehicle:
      type: string
      title: ElectricVehicle
      description: Whether the vehicle is electric.
      enum:
        - UNKNOWN_EV
        - 'YES'
        - 'NO'
      example: 'YES'
    EmergencyContact:
      type: object
      title: EmergencyContact
      description: Emergency contact information.
      required:
        - name
        - phoneNumbers
      properties:
        name:
          type: string
          description: Full name of contact.
          example: John Smith
        email:
          type: string
          description: Email address of contact.
          format: email
          example: emergency-contact@email.com
        designation:
          deprecated: true
          type: string
          description: Job title of contact.
          example: MANAGER
        relation:
          type: string
          description: Relation of contact to user.
          example: SPOUSE
          enum:
            - RELATION_UNKNOWN
            - SPOUSE
            - PARENT
            - SIBLING
            - CHILD
            - FRIEND
            - RELATIVE
            - COLLEAGUE
            - OTHER
        phoneNumbers:
          type: array
          description: Phone numbers of contact.
          items:
            $ref: '#/components/schemas/PhoneNumber'
        preferredLanguage:
          type: string
          description: Language preferred by user.
          example: en-US
    EmergencyContactInfo:
      type: object
      title: EmergencyContactInfo
      description: Emergency contact information.
      required:
        - email
      properties:
        address:
          $ref: '#/components/schemas/PostalAddress'
        designation:
          type: string
          example: MANAGER
        email:
          type: string
          format: email
          example: emergency-contact@email.com
        name:
          $ref: '#/components/schemas/Name'
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber'
        userOrgId:
          $ref: '#/components/schemas/UserOrgId'
    EngineType:
      type: string
      title: EngineType
      description: Engine types.
      enum:
        - UNKNOWN_ENGINE
        - PETROL
        - DIESEL
        - ELECTRIC
        - CNG
        - HYBRID
        - HYDROGEN
        - MULTI_FUEL
        - ETHANOL
      example: PETROL
    EntityAnswer:
      type: object
      properties:
        entityId:
          type: string
          description: The unique ID for the question.
        userInput:
          type: string
          description: The text input given by user (if any).
        itemIds:
          type: array
          items:
            type: integer
            format: int32
          description: |
            The id/enum value corresponding to the option chosen by the user as
            answer.
        answers:
          type: array
          items:
            $ref: '#/components/schemas/AnswerPair'
        customFieldType:
          $ref: '#/components/schemas/CustomFieldType'
        questionDisplayText:
          type: string
          description: The question text to be displayed to the user.
        question:
          $ref: '#/components/schemas/Question'
    EntityId:
      type: object
      description: Identifier of an object
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
    EntityMetadata:
      title: EntityMetadata
      description: Metadata for associated entity of document.
      type: object
      oneOf:
        - $ref: '#/components/schemas/PnrMetadataWrapper'
        - $ref: '#/components/schemas/EventMetadataWrapper'
    EntityNonUUIDId:
      type: object
      description: Identifier of an non uuid object
      properties:
        id:
          type: string
    EntityType:
      title: EntityType
      description: Entity type against which the document is to uploaded.
      type: string
      enum:
        - TRIP
        - PNR
        - COMPANY
        - AIR_ITINERARY
        - EVENT
        - LOCATION_IMAGE
      example: PNR
    Equipment:
      type: object
      title: Equipment
      description: The type of the aircraft equipment
      properties:
        code:
          type: string
          description: Aircraft equipment code
          example: '777'
        type:
          type: string
          description: Code representing the type of the equipment
          example: 'N'
          deprecated: true
        name:
          type: string
          description: The name of the flight aircraft type
          example: Boeing 737-800
    ErrorParameter:
      type: object
      title: ErrorParameter
      description: Error parameter
      properties:
        name:
          type: string
          description: Parameter name
        value:
          type: string
          description: Parameter value
    ErrorResponse:
      type: object
      properties:
        debugIdentifier:
          type: string
          description: Link to debug the error internally.
        errorMessages:
          type: array
          items:
            type: object
            properties:
              errorCode:
                type: string
                description: Error code to identify the specific errors.
              message:
                type: string
                description: Message containing details of error.
              errorParameters:
                type: array
                description: Error message parameters.
                items:
                  $ref: '#/components/schemas/ErrorParameter'
              errorDetail:
                type: string
                description: More details about the error.
    EventAllowedBookingType:
      title: EventAllowedBookingType
      description: Allowed booking type for the event
      type: string
      enum:
        - AIR
        - HOTEL
        - CAR
        - RAIL
    EventBookingGuideline:
      title: EventBookingGuideline
      description: Booking details allowed for the event
      type: object
      oneOf:
        - $ref: '#/components/schemas/AirBookingGuidelineWrapper'
        - $ref: '#/components/schemas/HotelBookingGuidelineWrapper'
        - $ref: '#/components/schemas/CarBookingGuidelineWrapper'
        - $ref: '#/components/schemas/RailBookingGuidelineWrapper'
      properties:
        numGuestsAllowed:
          type: integer
          description: Number of guests allowed to be booked for this booking
          example: 1
    EventBookingWindow:
      title: EventBookingWindow
      description: Event booking window
      type: object
      required:
        - startDateTime
        - endDateTime
      properties:
        startDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
        endDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
    EventEntityMetadata:
      title: EventEntityMetadata
      description: Metadata when document is associated to an event.
      type: object
      properties:
        address:
          $ref: '#/components/schemas/PostalAddress'
    EventLocation:
      title: EventLocation
      description: Location for an event
      type: object
      properties:
        address:
          $ref: '#/components/schemas/PostalAddress'
        coordinates:
          $ref: '#/components/schemas/Latlng'
    EventMetadataWrapper:
      type: object
      title: EventMetadataWrapper
      properties:
        eventMetadata:
          $ref: '#/components/schemas/EventEntityMetadata'
    EventRsvpResponse:
      title: EventRsvpResponse
      type: object
      description: Event rsvp response
      properties:
        air:
          $ref: '#/components/schemas/AirRsvpResponse'
        hotel:
          $ref: '#/components/schemas/HotelRsvpResponse'
        car:
          $ref: '#/components/schemas/CarRsvpResponse'
        rail:
          $ref: '#/components/schemas/RailRsvpResponse'
    EventRsvpState:
      title: EventRsvpState
      description: Allowed event rsvp states for a user
      type: string
      enum:
        - ADDED
        - INVITED
        - INVITE_ACCEPTED
        - INVITE_DECLINED
        - REMOVED
    EventRunningStatus:
      title: EventRunningStatus
      description: Running status of an event
      type: string
      enum:
        - IN_PROGRESS
        - UPCOMING
        - COMPLETED
      example: UPCOMING
    EventStatus:
      title: EventStatus
      description: Status of an event
      type: string
      enum:
        - DRAFT
        - PUBLISH
        - CANCELLED
      example: DRAFT
    EventUserInfo:
      title: EventUserInfo
      description: User information for the event
      type: object
      required:
        - userId
        - name
      properties:
        userId:
          $ref: '#/components/schemas/UserId'
        email:
          type: string
          description: Business email of the user
          example: a@spotnana.com
        name:
          $ref: '#/components/schemas/Name'
    EventUserRsvp:
      title: EventUserRsvp
      type: object
      description: User rsvp for the event
      properties:
        userId:
          $ref: '#/components/schemas/UserId'
        eventRsvpState:
          $ref: '#/components/schemas/EventRsvpState'
        eventRsvpResponse:
          $ref: '#/components/schemas/EventRsvpResponse'
        invitedAt:
          $ref: '#/components/schemas/DateTimeOffset'
        airBookingStatus:
          $ref: '#/components/schemas/BookingStatusType'
        railBookingStatus:
          $ref: '#/components/schemas/BookingStatusType'
        carBookingStatus:
          $ref: '#/components/schemas/BookingStatusType'
        hotelBookingStatus:
          $ref: '#/components/schemas/BookingStatusType'
    ExchangePayment:
      title: ExchangePayment
      type: object
      description: In case of exchange, payment accounted to the original ticket.
      required:
        - originalTicketNumber
      properties:
        originalTicketNumber:
          description: Ticket number which was exchanged to pay for current ticket.
          type: string
          example: '00129332929'
    ExchangePolicy:
      type: object
      description: Information about the exchange policy.
      properties:
        description:
          type: string
          description: Text describing the exchange policy.
          example: Change allowed for free
        fee:
          $ref: '#/components/schemas/Money'
        assessmentType:
          $ref: '#/components/schemas/AssessmentType'
        isCat16:
          type: boolean
          description: Is source cat16
          example: true
        isConditional:
          type: boolean
          description: Is conditional
          example: true
    Expiry:
      title: Expiry
      type: object
      description: Contains the expiry of a Card.
      required:
        - expiryMonth
        - expiryYear
      properties:
        expiryMonth:
          type: integer
          format: int32
          minimum: 1
          maximum: 12
          description: Expiry month
          example: 1
        expiryYear:
          type: integer
          format: int32
          description: Expiry year
          minimum: 2000
          example: 2010
    ExpiryWrapper:
      type: object
      title: ExpiryWrapper
      properties:
        expiry:
          $ref: '#/components/schemas/Expiry'
    FailureReason:
      type: object
      title: FailureReason
      description: Contains the failure reason in case of any Failed Transaction
      properties:
        reasonCode:
          type: string
          description: Reason Code associated with the Failure
          enum:
            - PAYMENT_METHOD_MISSING
            - PAYMENT_GATEWAY_FAILURE
          example: PAYMENT_METHOD_MISSING
    FareAmount:
      type: object
      title: FareAmount
      description: Fare amount including base fare and tax.
      required:
        - base
        - tax
      properties:
        base:
          description: Base fare amount.
          $ref: '#/components/schemas/Money'
        tax:
          description: Tax amount.
          $ref: '#/components/schemas/Money'
    FareComponentDetail:
      type: object
      title: FareComponentDetail
      description: Fare component details for this itinerary
      required:
        - fareBasisCode
        - flightIds
      properties:
        fareBasisCode:
          type: string
          description: Fare basis code for the booking
          example: QUAJZNB3
        tourCode:
          type: string
          description: Tour code applied on this fare component
          example: ABC12
        ticketDesignator:
          type: string
          description: Ticket designator applied on this fare component
          example: ABC
        flightIds:
          type: array
          minItems: 1
          items:
            description: Flights to which this fare component is applicable
            $ref: '#/components/schemas/FlightId'
    FarePref:
      type: object
      title: FarePref
      description: Fare preferences.
      required:
        - fareTypes
      properties:
        fareTypes:
          type: array
          items:
            type: string
            enum:
              - UNKNOWN_TYPE
              - CHANGEABLE
              - REFUNDABLE
            example: CHANGEABLE
    FareStatistics:
      type: object
      required:
        - statisticsItems
      properties:
        statisticsItems:
          type: array
          items:
            $ref: '#/components/schemas/StatisticsItem'
            description: minimum/median/maximum prices of itinerary in air search response
    FinalizeIntent:
      type: object
      title: FinalizeIntent
      description: Intent of finalizing Pnr.
      oneOf:
        - $ref: '#/components/schemas/AirPriceOptimizationMetadataWrapper'
        - $ref: '#/components/schemas/ManualVerificationIntentWrapper'
        - $ref: '#/components/schemas/QcFinalizationWrapper'
    FinalizeMetadata:
      title: FinalizeRequest
      type: object
      description: Metadata information related to finalize request
      properties:
        isMandatoryTicketing:
          type: boolean
          description: True for forceful ticketing of PNR.
        mandatorySkipTicketing:
          type: boolean
          description: Override other params and skip ticketing.
    FinalizeRequest:
      title: FinalizeRequest
      type: object
      description: Request Object to finalize an existing Manual form or Shell Pnr.
      properties:
        preBookAnswers:
          $ref: '#/components/schemas/PreBookAnswers'
        finalizeIntent:
          $ref: '#/components/schemas/FinalizeIntent'
        finalizeMetadata:
          $ref: '#/components/schemas/FinalizeMetadata'
    Flight:
      title: Flight
      description: Flight info
      type: object
      required:
        - departureDateTime
        - arrivalDateTime
        - origin
        - destination
        - marketing
        - operating
      properties:
        departureDateTime:
          description: Departure date time of flight
          $ref: '#/components/schemas/DateTimeLocal'
        arrivalDateTime:
          description: Arrival date time of flight
          $ref: '#/components/schemas/DateTimeLocal'
        duration:
          description: Flight duration
          $ref: '#/components/schemas/Duration'
        flightId:
          type: string
          description: Unique identifier for a flight.
          example: CjoKOGNsYXNzIERhdGVUaW1lTG9jYWwgewogICAgaXNvO
        origin:
          type: string
          description: 3 letter IATA airport code for origin
          pattern: ^[A-Z]{3}$
          example: SFO
        destination:
          type: string
          description: 3 letter IATA airport code for destination
          pattern: ^[A-Z]{3}$
          example: LHR
        departureGate:
          description: Departure gate and terminal
          $ref: '#/components/schemas/Gate'
        arrivalGate:
          description: Arrival gate and terminal
          $ref: '#/components/schemas/Gate'
        marketing:
          description: Marketing flight number
          $ref: '#/components/schemas/FlightNumber'
        operating:
          description: Operating flight number
          $ref: '#/components/schemas/FlightNumber'
        operatingAirlineName:
          type: string
          description: >
            Free text operating airline name that has to be displayed to the
            user if present
          example: SKYWEST DBA UNITED EXPRESS
        hiddenStops:
          type: array
          description: Stops for refueling or getting more passengers
          items:
            type: object
            title: HiddenStop
            required:
              - airport
              - arrivalDateTime
              - departureDateTime
            properties:
              airport:
                type: string
                description: 3 letter IATA airport code
                pattern: ^[A-Z]{3}$
                example: LHR
              arrivalDateTime:
                description: Stop start date time
                $ref: '#/components/schemas/DateTimeLocal'
              departureDateTime:
                description: Stop end date time
                $ref: '#/components/schemas/DateTimeLocal'
              duration:
                description: Stop duration
                $ref: '#/components/schemas/Duration'
        vendorConfirmationNumber:
          type: string
          description: Flight confirmation number
          example: ABQTEJ
        cabin:
          $ref: '#/components/schemas/Cabin'
          description: Flight cabin
        bookingCode:
          type: string
          description: Flight Booking Code
          example: A
        flightStatus:
          $ref: '#/components/schemas/PnrStatus'
          description: Status of flight
        otherStatuses:
          type: array
          description: >
            Details about any duplicate flight segment. Cabin code and status of
            other duplicate 

            segments.
          items:
            type: object
            title: OtherStatus
            description: Status of duplicate flights in case of upgrades
            required:
              - cabin
            properties:
              cabin:
                $ref: '#/components/schemas/Cabin'
                description: Upgraded flight cabin
              status:
                $ref: '#/components/schemas/PnrStatus'
                description: Upgraded flight status
        co2EmissionDetail:
          description: CO2 emission info for this flight
          readOnly: true
          $ref: '#/components/schemas/CO2EmissionDetail'
        restrictions:
          type: array
          description: Restrictions such as seat booking, loyalty etc
          readOnly: true
          items:
            $ref: '#/components/schemas/FlightRestrictions'
        flightUpdates:
          readOnly: true
          $ref: '#/components/schemas/FlightUpdates'
        sourceStatus:
          type: string
          description: Flight status code from supplier
        equipment:
          $ref: '#/components/schemas/Equipment'
        distance:
          $ref: '#/components/schemas/Length'
        flightWaiverCodes:
          type: array
          description: List of waiver codes for flight
          readOnly: true
          items:
            $ref: '#/components/schemas/FlightWaiverCode'
    FlightAndLegIndex:
      title: FlightAndLegIndex
      description: Flight and Leg index details.
      properties:
        flightIndex:
          type: integer
          description: Flight index within a leg, starts from 0.
          example: 0
        legIndex:
          type: integer
          description: Leg index within a pnr, starts from 0.
          example: 1
    FlightCredits:
      type: object
      title: FlightCredits
      description: Flight credits for a traveler.
      required:
        - totalCreditAmount
        - changePenalty
        - netCreditAmount
      properties:
        totalCreditAmount:
          description: Amount of flight credits.
          $ref: '#/components/schemas/FareAmount'
        changePenalty:
          description: Change penalty applicable for using this credit.
          $ref: '#/components/schemas/FareAmount'
        netCreditAmount:
          description: Net credit amount (total credit amount - change penalty)
          $ref: '#/components/schemas/FareAmount'
    FlightDetailInformation:
      type: object
      title: FlightDetailInformation
      description: >-
        This flight detail has information that is relevant in case of a flight
        disruption.
      required:
        - departureDateTime
        - arrivalDateTime
        - originAirportCode
        - destinationAirportCode
      properties:
        departureDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
        arrivalDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
        cabin:
          $ref: '#/components/schemas/Cabin'
        originAirportCode:
          type: string
          description: 3 letter IATA airport code for origin
          pattern: ^[A-Z]{3}$
          example: SFO
        destinationAirportCode:
          type: string
          description: 3 letter IATA airport code for destination
          pattern: ^[A-Z]{3}$
          example: LHR
        marketing:
          $ref: '#/components/schemas/FlightNumber'
        operating:
          $ref: '#/components/schemas/FlightNumber'
    FlightId:
      type: object
      title: FlightId
      description: Flight identifier
      required:
        - legIdx
        - flightIdx
      properties:
        legIdx:
          type: integer
          description: Index of leg to which this flight belongs
          format: int32
          example: 0
          minimum: 0
        flightIdx:
          type: integer
          description: Index of flight in it's leg
          format: int32
          example: 0
          minimum: 0
    FlightMetadata:
      title: FlightMetadata
      description: Flight metadata against which document is associated.
      type: object
      properties:
        flightId:
          type: string
          description: Unique identifier of the flight.
          example: CgNERU4SA1NGTxoKNTQ1NzI5ODcxMQ
    FlightMetadataWrapper:
      type: object
      title: FlightMetadataWrapper
      properties:
        flightMetadata:
          $ref: '#/components/schemas/FlightMetadata'
    FlightNumber:
      title: FlightNumber
      description: Flight number and airline code.
      required:
        - airlineCode
        - num
      properties:
        num:
          type: string
          description: Flight number.
          example: '321'
        airlineCode:
          type: string
          description: Two-letter IATA airline code.
          example: AA
    FlightRestrictions:
      type: string
      title: FlightRestrictions
      description: Restrictions like seat booking, loyalty etc.
      enum:
        - PRE_BOOKING_SEAT_NOT_ALLOWED
        - POST_BOOKING_SEAT_NOT_ALLOWED
        - SEAT_BOOKING_NOT_ALLOWED_DUE_TO_BRAND
        - SEAT_BOOKING_NOT_ALLOWED
        - SEAT_BOOKING_NOT_ALLOWED_OPEN_SEATING
        - SEAT_NOT_GUARANTEED_WARNING
        - SEAT_BOOKING_NOT_ALLOWED_DUE_TO_CODESHARE
      example: SEAT_BOOKING_NOT_ALLOWED_DUE_TO_BRAND
    FlightSeatStatus:
      type: string
      description: Status of assigned seat.
      enum:
        - CONFIRMED
        - PENDING
        - UNKNOWN
        - CANCELLED
      example: CONFIRMED
    FlightUpdates:
      type: object
      title: FlightUpdates
      description: Flight alerts like departure datetime change, gate change, etc.
      properties:
        previousDepartureDateTime:
          description: Departure date time before this alert
          $ref: '#/components/schemas/DateTimeLocal'
        previousArrivalDateTime:
          description: Arrival date time before this alert
          $ref: '#/components/schemas/DateTimeLocal'
        previousDepartureGate:
          description: Departure gate before this alert
          $ref: '#/components/schemas/Gate'
        previousArrivalGate:
          description: Arrival gate before this alert
          $ref: '#/components/schemas/Gate'
    FlightWaiverCode:
      type: object
      title: FlightWaiverCode
      description: Flight waiver code information on disruption.
      properties:
        waiverCode:
          type: string
          description: Flight waiver code
        firstNewTravelDate:
          description: First new travel date applicable for the waiver code
          $ref: '#/components/schemas/DateTimeLocal'
        lastNewTravelDate:
          description: Last new travel date applicable for the waiver code
          $ref: '#/components/schemas/DateTimeLocal'
        firstOriginalTravelDate:
          description: First new travel date applicable for the waiver code
          $ref: '#/components/schemas/DateTimeLocal'
        lastOriginalTravelDate:
          description: Last new travel date applicable for the waiver code
          $ref: '#/components/schemas/DateTimeLocal'
        policyLinks:
          type: array
          description: List of waiver codes policy link
          readOnly: true
          items:
            $ref: '#/components/schemas/FlightWaiverPolicyLink'
        additionalInfo:
          type: string
          description: Textual information about waiver policies
    FlightWaiverPolicyLink:
      type: object
      title: FlightWaiverPolicyLink
      description: Flight waiver code policy link.
      properties:
        name:
          type: string
          description: Name of the link
        url:
          type: string
          description: Url of the link
    FormOfPayment:
      title: Form of Payment
      description: Information about form of payment to be used to charge customer
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - UNKNOWN
            - CARD
            - CASH
            - TFPAY
            - CHEQUE
            - BREX_POINTS
            - QANTAS_POINTS
          title: PaymentType
          description: Type of payment used
          example: CARD
          deprecated: true
        card:
          description: >-
            The payment card to be used to charge customer. This is only set if
            the payment type is 'CARD'
          $ref: '#/components/schemas/Card'
        additionalInfo:
          type: string
          description: Additional info to be added if payment type is 'UNKNOWN'.
        accessType:
          $ref: '#/components/schemas/CreditCardAccess'
        paymentMethod:
          $ref: '#/components/schemas/PaymentMethod'
          description: Payment method used to pay for this transaction
        paymentMetadata:
          $ref: '#/components/schemas/PaymentMetadata'
        paymentSourceType:
          $ref: '#/components/schemas/PaymentSourceType'
    FreshnessInfo:
      title: FreshnessInfo
      type: object
      description: >
        Information about the freshness of the data set in this PNR object. This
        field is only set

        when the PNR returned is not the latest PNR available.
      properties:
        latestVersionDateTime:
          description: >
            Time when the PNR information was updated in Spotnana's systems for
            the latest PNR

            version available.
          required: true
          $ref: '#/components/schemas/DateTimeOffset'
        returnedVersionDateTime:
          description: >
            Time when the PNR information was updated in Spotnana's systems for
            the PNR whose

            information is in this object.
          required: true
          $ref: '#/components/schemas/DateTimeOffset'
    Gate:
      type: object
      title: Gate
      description: Flight boarding / arrival gate
      properties:
        gate:
          type: string
          description: Gate number
          example: 1A
        terminal:
          type: string
          description: Airport terminal
          example: '1'
    GatewayInfo:
      type: object
      title: GatewayInfo
      description: Payment gateway information
      oneOf:
        - $ref: '#/components/schemas/StripeInfoWrapper'
    Gender:
      title: Gender
      type: string
      enum:
        - MALE
        - FEMALE
        - UNSPECIFIED
        - UNDISCLOSED
      example: FEMALE
    Grade:
      type: object
      title: Grade
      description: Grade details.
      required:
        - id
        - name
      properties:
        employeeCount:
          type: integer
          format: int32
          description: Count of employees in the grade
          example: 75
        id:
          $ref: '#/components/schemas/GradeId'
        name:
          type: string
          example: Grade
    GradeId:
      type: object
      title: GradeId
      description: Grade id.
      required:
        - id
      properties:
        id:
          type: string
          example: 831ccbcb-1416-7fe2-e236-d324dfbe7424
    HoldInfo:
      type: object
      title: HoldInfo
      description: Hold Information about the booking.
      required:
        - holdDeadline
      properties:
        holdDeadline:
          $ref: '#/components/schemas/DateTimeOffset'
    Hotel:
      title: HotelPnr
      description: Hotel PNR information
      required:
        - checkInDateTime
        - checkOutDateTime
        - hotelInfo
        - numberOfRooms
        - payment
        - room
        - vendorConfirmationNumber
      properties:
        checkInDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
          description: Check-in date and time.
        checkOutDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
          description: Check-out date and time.
        hotelInfo:
          $ref: '#/components/schemas/HotelInfo'
          description: Hotel details.
        numberOfRooms:
          type: integer
          description: Number of rooms booked.
          format: int32
          example: 1
        payment:
          type: object
          title: HotelPayment
          description: Payment method.
          required:
            - paymentType
          properties:
            paymentType:
              type: string
              description: Payment type.
              enum:
                - UNKNOWN
                - PAY_AT_HOTEL
                - PREPAID
                - OTHER
              example: PREPAID
            description:
              type: string
              description: Payment method, if payment type is OTHER.
        pnrStatus:
          $ref: '#/components/schemas/PnrStatus'
          description: Pnr status.
        room:
          $ref: '#/components/schemas/Room'
          description: Room info.
        vendorConfirmationNumber:
          type: string
          description: Hotel confirmation number
          example: '2108528068'
        travelerInfos:
          type: array
          description: Information about travelers.
          items:
            $ref: '#/components/schemas/HotelTravelerInfo'
        sortingPriority:
          type: integer
          description: Sorting priority amongst other pnrs
          example: 0
        vendorReferenceId:
          type: string
          description: Reference provided by vendors
          example: AWKHGS
        vendorCancellationId:
          type: string
          description: Cancellation reference provided by vendors
          example: AWKHGS
        preferredType:
          type: array
          description: Hotel preference
          deprecated: true
          items:
            $ref: '#/components/schemas/PreferredType'
        preferences:
          type: array
          description: Hotel preference
          items:
            $ref: '#/components/schemas/Preference'
        occupancy:
          type: array
          description: Occupancy information
          items:
            $ref: '#/components/schemas/HotelOccupancy'
        sourceStatus:
          type: string
          description: Source status code of the pnr
        rebookReference:
          $ref: '#/components/schemas/RebookReference'
        hotelSpecialRequests:
          $ref: '#/components/schemas/HotelSpecialRequests'
          description: Hotel special requests.
    HotelAccessibleFeatureType:
      type: string
      title: Hotel Accessible Feature Type
      description: Types of accessible features available in the hotel.
      enum:
        - MOBILITY_ACCESSIBLE_ROOM_WITH_TUB
        - MOBILITY_ACCESSIBLE_ROOM_WITH_ROLL_IN_SHOWER
        - HEARING_ACCESSIBLE_ROOM
        - MOBILITY_ACCESSIBLE_ROOM_WITH_TUB_AND_ROLL_IN_SHOWER
        - MOBILITY_ACCESSIBLE_ROOM_WITH_TUB_AND_HEARING_ACCESSIBLE_ROOM
        - >-
          MOBILITY_ACCESSIBLE_ROOM_WITH_ROLL_IN_SHOWER_AND_HEARING_ACCESSIBLE_ROOM
        - MOBILITY_ACCESSIBLE_ROOM_WITH_TRANSFER_SHOWER
        - MOBILITY_ACCESSIBLE_ROOM_WITH_TUB_AND_TRANSFER_SHOWER
        - >-
          MOBILITY_ACCESSIBLE_ROOM_WITH_TRANSFER_SHOWER_AND_HEARING_ACCESSIBLE_ROOM
      example: MOBILITY_ACCESSIBLE_ROOM_WITH_TUB
    HotelAdditionalDetail:
      title: HotelAdditionalDetail
      type: object
      properties:
        additionalDetailType:
          $ref: '#/components/schemas/HotelAdditionalDetailType'
          description: Type of the Additional Detail for the room.
        text:
          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
    HotelAmenities:
      title: HotelAmenities
      type: object
      description: Type of hotel amenity
      properties:
        type:
          $ref: '#/components/schemas/HotelAmenityType'
        additionalInfo:
          type: string
          description: Amenity description
          example: Complimentary in-room coffee or tea
        complimentary:
          type: boolean
          description: Is Amenity complimentary
          example: true
    HotelAmenityType:
      title: HotelAmenityType
      type: string
      description: Type of hotel amenity.
      enum:
        - TWENTY_FOUR_HOUR_FRONT_DESK
        - TWENTY_FOUR_HOUR_ROOM_SERVICE
        - TWENTY_FOUR_HOUR_SECURITY
        - ADJOINING_ROOMS
        - AIR_CONDITIONING
        - AIRLINE_DESK
        - ATM_CASH_MACHINE
        - BABY_SITTING
        - BBQ_PICNIC_AREA
        - BILINGUAL_STAFF
        - BOOKSTORE
        - BOUTIQUES_STORES
        - BRAILED_ELEVATORS
        - BUSINESS_LIBRARY
        - CAR_RENTAL_DESK
        - CASINO
        - CHECK_CASHING_POLICY
        - CHECK_IN_KIOSK
        - COCKTAIL_LOUNGE
        - COFFEE_SHOP
        - COIN_OPERATED_LAUNDRY
        - CONCIERGE_DESK
        - CONCIERGE_FLOOR
        - CONFERENCE_FACILITIES
        - COURTYARD
        - CURRENCY_EXCHANGE
        - DESK_WITH_ELECTRICAL_OUTLET
        - DOCTOR_ON_CALL
        - DOOR_MAN
        - DRIVING_RANGE
        - DRUGSTORE_PHARMACY
        - DUTY_FREE_SHOP
        - ELEVATORS
        - EXECUTIVE_FLOOR
        - EXERCISE_GYM
        - EXPRESS_CHECK_IN
        - EXPRESS_CHECK_OUT
        - FAMILY_PLAN
        - FLORIST
        - FOLIOS
        - FREE_AIRPORT_SHUTTLE
        - FREE_PARKING
        - FREE_TRANSPORTATION
        - GAME_ROOM
        - GIFT_NEWS_STAND
        - HAIRDRESSER_BARBER
        - ACCESSIBLE_FACILITIES
        - HEALTH_CLUB
        - HEATED_POOL
        - HOUSEKEEPING_DAILY
        - HOUSEKEEPING_WEEKLY
        - ICE_MACHINE
        - INDOOR_PARKING
        - INDOOR_POOL
        - JACUZZI
        - JOGGING_TRACK
        - KENNELS
        - LAUNDRY_VALET_SERVICE
        - LIQUOR_STORE
        - LIVE_ENTERTAINMENT
        - MASSAGE_SERVICES
        - NIGHTCLUB
        - OFF_SITE_PARKING
        - ON_SITE_PARKING
        - OUTDOOR_PARKING
        - OUTDOOR_POOL
        - PACKAGE_PARCEL_SERVICES
        - PARKING
        - PHOTOCOPY_CENTER
        - PLAYGROUND
        - POOL
        - POOLSIDE_SNACK_BAR
        - PUBLIC_ADDRESS_SYSTEM
        - RAMP_ACCESS
        - RECREATIONAL_VEHICLE_PARKING
        - RESTAURANT
        - ROOM_SERVICE
        - SAFE_DEPOSIT_BOX
        - SAUNA
        - SECURITY
        - SHOE_SHINE_STAND
        - SHOPPING_MALL
        - SOLARIUM
        - SPA
        - SPORTS_BAR
        - STEAM_BATH
        - STORAGE_SPACE
        - SUNDRY_CONVENIENCE_STORE
        - TECHNICAL_CONCIERGE
        - THEATRE_DESK
        - TOUR_SIGHTSEEING_DESK
        - TRANSLATION_SERVICES
        - TRAVEL_AGENCY
        - TRUCK_PARKING
        - VALET_CLEANING
        - DRY_CLEANING
        - VALET_PARKING
        - VENDING_MACHINES
        - VIDEO_TAPES
        - WAKEUP_SERVICE
        - WHEELCHAIR_ACCESS
        - WHIRLPOOL
        - MULTILINGUAL_STAFF
        - WEDDING_SERVICES
        - BANQUET_FACILITIES
        - BELL_STAFF_PORTER
        - BEAUTY_SHOP_SALON
        - COMPLIMENTARY_SELF_SERVICE_LAUNDRY
        - DIRECT_DIAL_TELEPHONE
        - FEMALE_TRAVELER_ROOM_FLOOR
        - PHARMACY
        - STABLES
        - ONE_TWENTY_AC
        - ONE_TWENTY_DC
        - TWO_TWENTY_AC
        - ACCESSIBLE_PARKING
        - TWO_TWENTY_DC
        - BARBEQUE_GRILLS
        - WOMENS_CLOTHING
        - MENS_CLOTHING
        - CHILDRENS_CLOTHING
        - SHOPS_AND_COMMERCIAL_SERVICES
        - VIDEO_GAMES
        - SPORTS_BAR_OPEN_FOR_LUNCH
        - SPORTS_BAR_OPEN_FOR_DINNER
        - ROOM_SERVICE_FULL_MENU
        - ROOM_SERVICE_LIMITED_MENU
        - ROOM_SERVICE_LIMITED_HOURS
        - VALET_SAME_DAY_DRY_CLEANING
        - BODY_SCRUB
        - BODY_WRAP
        - PUBLIC_AREA_AIR_CONDITIONED
        - EFOLIO_AVAILABLE_TO_COMPANY
        - INDIVIDUAL_EFOLIO_AVAILABLE
        - VIDEO_REVIEW_BILLING
        - BUTLER_SERVICE
        - COMPLIMENTARY_IN_ROOM_COFFEE_OR_TEA
        - COMPLIMENTARY_BUFFET_BREAKFAST
        - COMPLIMENTARY_COCKTAILS
        - COMPLIMENTARY_COFFEE_IN_LOBBY
        - COMPLIMENTARY_CONTINENTAL_BREAKFAST
        - COMPLIMENTARY_FULL_AMERICAN_BREAKFAST
        - DINNER_DELIVERY_SERVICE_FROM_LOCAL_RESTAURANT
        - COMPLIMENTARY_NEWSPAPER_DELIVERED_TO_ROOM
        - COMPLIMENTARY_NEWSPAPER_IN_LOBBY
        - COMPLIMENTARY_SHOESHINE
        - EVENING_RECEPTION
        - FRONT_DESK
        - GROCERY_SHOPPING_SERVICE_AVAILABLE
        - HALAL_FOOD_AVAILABLE
        - KOSHER_FOOD_AVAILABLE
        - LIMOUSINE_SERVICE
        - MANAGERS_RECEPTION
        - MEDICAL_FACILITIES_SERVICE
        - TELEPHONE_JACK_ADAPTOR_AVAILABLE
        - ALL_INCLUSIVE_MEAL_PLAN
        - BUFFET_BREAKFAST
        - COMMUNAL_BAR_AREA
        - CONTINENTAL_BREAKFAST
        - FULL_MEAL_PLAN
        - FULL_AMERICAN_BREAKFAST
        - MEAL_PLAN_AVAILABLE
        - MODIFIED_AMERICAN_MEAL_PLAN
        - FOOD_AND_BEVERAGE_OUTLETS
        - LOUNGES_BARS
        - BARBER_SHOP
        - VIDEO_CHECKOUT
        - ONSITE_LAUNDRY
        - TWENTY_FOUR_HOUR_FOOD_AND_BEVERAGE_KIOSK
        - CONCIERGE_LOUNGE
        - PARKING_FEE_MANAGED_BY_HOTEL
        - TRANSPORTATION
        - BREAKFAST_SERVED_IN_RESTAURANT
        - LUNCH_SERVED_IN_RESTAURANT
        - DINNER_SERVED_IN_RESTAURANT
        - FULL_SERVICE_HOUSEKEEPING
        - LIMITED_SERVICE_HOUSEKEEPING
        - HIGH_SPEED_INTERNET_ACCESS_FOR_LAPTOP_IN_PUBLIC_AREAS
        - WIRELESS_INTERNET_CONNECTION_IN_PUBLIC_AREAS
        - ADDITIONAL_SERVICES_AMENITIES_FACILITIES_ON_PROPERTY
        - TRANSPORTATION_SERVICES_LOCAL_AREA
        - TRANSPORTATION_SERVICES_LOCAL_OFFICE
        - DVD_VIDEO_RENTAL
        - PARKING_LOT
        - PARKING_DECK
        - STREET_SIDE_PARKING
        - COCKTAIL_LOUNGE_WITH_ENTERTAINMENT
        - COCKTAIL_LOUNGE_WITH_LIGHT_FARE
        - MOTORCYCLE_PARKING
        - PHONE_SERVICES
        - BALLROOM
        - BUS_PARKING
        - CHILDRENS_PLAY_AREA
        - CHILDRENS_NURSERY
        - DISCO
        - EARLY_CHECK_IN
        - LOCKER_ROOM
        - NON_SMOKING_ROOMS_GENERIC
        - TRAIN_ACCESS
        - AEROBICS_INSTRUCTION
        - BAGGAGE_HOLD
        - BICYCLE_RENTALS
        - DIETICIAN
        - LATE_CHECK_OUT_AVAILABLE
        - PET_SITTING_SERVICES
        - PRAYER_MATS
        - SPORTS_TRAINER
        - TURNDOWN_SERVICE
        - DVDS_VIDEOS_CHILDREN
        - BANK
        - LOBBY_COFFEE_SERVICE
        - BANKING_SERVICES
        - STAIRWELLS
        - PET_AMENITIES_AVAILABLE
        - EXHIBITION_CONVENTION_FLOOR
        - LONG_TERM_PARKING
        - CHILDREN_NOT_ALLOWED
        - CHILDREN_WELCOME
        - COURTESY_CAR
        - HOTEL_DOES_NOT_PROVIDE_PORNOGRAPHIC_FILMS_TV
        - HOTSPOTS
        - FREE_HIGH_SPEED_INTERNET_CONNECTION
        - INTERNET_SERVICES
        - PETS_ALLOWED
        - GOURMET_HIGHLIGHTS
        - CATERING_SERVICES
        - COMPLIMENTARY_BREAKFAST
        - BUSINESS_CENTER
        - BUSINESS_SERVICES
        - SECURED_PARKING
        - RACQUETBALL
        - SNOW_SPORTS
        - TENNIS_COURT
        - WATER_SPORTS
        - CHILD_PROGRAMS
        - GOLF
        - HORSEBACK_RIDING
        - OCEANFRONT
        - BEACHFRONT
        - HAIR_DRYER
        - IRONING_BOARD
        - HEATED_GUEST_ROOMS
        - TOILET
        - PARLOR
        - VIDEO_GAME_PLAYER
        - THALASSOTHERAPY
        - PRIVATE_DINING_FOR_GROUPS
        - HEARING_IMPAIRED_SERVICES
        - CARRYOUT_BREAKFAST
        - DELUXE_CONTINENTAL_BREAKFAST
        - HOT_CONTINENTAL_BREAKFAST
        - HOT_BREAKFAST
        - PRIVATE_POOL
        - CONNECTING_ROOMS
        - DATA_PORT
        - EXTERIOR_CORRIDORS
        - GULF_VIEW
        - ACCESSIBLE_ROOMS
        - HIGH_SPEED_INTERNET_ACCESS
        - INTERIOR_CORRIDORS
        - HIGH_SPEED_WIRELESS
        - KITCHENETTE
        - PRIVATE_BATH_OR_SHOWER
        - FIRE_SAFETY_COMPLIANT
        - WELCOME_DRINK
        - BOARDING_PASS_PRINT_OUT_AVAILABLE
        - PRINTING_SERVICES_AVAILABLE
        - ALL_PUBLIC_AREAS_NON_SMOKING
        - MEETING_ROOMS
        - MOVIES_IN_ROOM
        - SECRETARIAL_SERVICE
        - SNOW_SKIING
        - WATER_SKIING
        - FAX_SERVICE
        - GREAT_ROOM
        - LOBBY
        - MULTIPLE_PHONE_LINES_BILLED_SEPARATELY
        - UMBRELLAS
        - GAS_STATION
        - GROCERY_STORE
        - TWENTY_FOUR_HOUR_COFFEE_SHOP
        - AIRPORT_SHUTTLE_SERVICE
        - LUGGAGE_SERVICE
        - PIANO_BAR
        - VIP_SECURITY
        - COMPLIMENTARY_WIRELESS_INTERNET
        - CONCIERGE_BREAKFAST
        - SAME_GENDER_FLOOR
        - CHILDREN_PROGRAMS
        - BUILDING_MEETS_LOCAL_STATE_AND_COUNTRY_BUILDING_CODES
        - INTERNET_BROWSER_ON_TV
        - NEWSPAPER
        - PARKING_CONTROLLED_ACCESS_GATES_TO_ENTER_PARKING_AREA
        - HOTEL_SAFE_DEPOSIT_BOX_NOT_ROOM_SAFE_BOX
        - STORAGE_SPACE_AVAILABLE_FEE
        - TYPE_OF_ENTRANCES_TO_GUEST_ROOMS
        - BEVERAGE_COCKTAIL
        - CELL_PHONE_RENTAL
        - COFFEE_TEA
        - EARLY_CHECK_IN_GUARANTEE
        - FOOD_AND_BEVERAGE_DISCOUNT
        - LATE_CHECK_OUT_GUARANTEE
        - ROOM_UPGRADE_CONFIRMED
        - ROOM_UPGRADE_ON_AVAILABILITY
        - SHUTTLE_TO_LOCAL_BUSINESSES
        - SHUTTLE_TO_LOCAL_ATTRACTIONS
        - SOCIAL_HOUR
        - VIDEO_BILLING
        - WELCOME_GIFT
        - HYPOALLERGENIC_ROOMS
        - ROOM_AIR_FILTRATION
        - SMOKE_FREE_PROPERTY
        - WATER_PURIFICATION_SYSTEM_IN_USE
        - POOLSIDE_SERVICE
        - CLOTHING_STORE
        - ELECTRIC_CAR_CHARGING_STATIONS
        - OFFICE_RENTAL
        - PIANO
        - INCOMING_FAX
        - OUTGOING_FAX
        - SEMI_PRIVATE_SPACE
        - LOADING_DOCK
        - BABY_KIT
        - CHILDRENS_BREAKFAST
        - CLOAKROOM_SERVICE
        - COFFEE_LOUNGE
        - EVENTS_TICKET_SERVICE
        - LATE_CHECK_IN
        - LIMITED_PARKING
        - OUTDOOR_SUMMER_BAR_CAFE
        - NO_PARKING_AVAILABLE
        - BEER_GARDEN
        - GARDEN_LOUNGE_BAR
        - SUMMER_TERRACE
        - WINTER_TERRACE
        - ROOF_TERRACE
        - BEACH_BAR
        - HELICOPTER_SERVICE
        - FERRY
        - TAPAS_BAR
        - CAFE_BAR
        - SNACK_BAR
        - GUESTROOM_WIRED_INTERNET
        - GUESTROOM_WIRELESS_INTERNET
        - FITNESS_CENTER
        - ALCOHOLIC_BEVERAGES
        - NON_ALCOHOLIC_BEVERAGES
        - HEALTH_AND_BEAUTY_SERVICES
        - LOCAL_CALLS
        - MINIBAR
        - REFRIGERATOR
        - IN_ROOM_SAFE
        - SMOKING_ROOMS_AVAILBLE
        - MOUNTAIN_VIEW
        - POOL_VIEW
        - BEACH_VIEW
        - OCEAN_VIEW
        - ROOMS_WITH_BALCONY
        - FAMILY_ROOM
        - CRIB_CHARGE
        - ROLLAWAY_ADULT
        - FREE_WIFI_IN_MEETING_ROOMS
        - ECO_FRIENDLY
        - EXTRA_PERSON
        - STAY_SAFE
        - ENHANCED_HYGIENE_CLEANLINESS_PROTOCOLS
      example: ECO_FRIENDLY
    HotelBookingGuideline:
      title: HotelBookingGuideline
      description: Hotel related guidelines
      type: object
      required:
        - checkinBookingWindow
        - checkoutBookingWindow
      properties:
        allowedHotels:
          description: List of allowed Hotel details for the event
          type: array
          items:
            $ref: '#/components/schemas/HotelInfo'
        checkinBookingWindow:
          $ref: '#/components/schemas/EventBookingWindow'
        checkoutBookingWindow:
          $ref: '#/components/schemas/EventBookingWindow'
    HotelBookingGuidelineWrapper:
      type: object
      title: HotelBookingGuidelineWrapper
      description: Wrapper for HotelBookingGuideline
      properties:
        hotelBookingGuideLine:
          $ref: '#/components/schemas/HotelBookingGuideline'
    HotelBrand:
      type: object
      title: HotelBrand
      description: The brand of hotel.
      properties:
        brandCode:
          type: string
          description: The code of hotel brand.
          example: HY
        brandName:
          type: string
          description: The name of hotel brand.
          example: Global Hytt Corp.
    HotelChain:
      type: object
      title: HotelChain
      description: The chain of hotel.
      properties:
        chainCode:
          type: string
          description: The code of hotel chain.
          example: EM
        chainName:
          type: string
          description: The name of hotel chain.
          example: Mariott
    HotelCo2EmissionDetail:
      type: object
      description: The co2 emission detail for the hotel.
      required:
        - co2EmissionValue
      properties:
        co2EmissionValue:
          type: number
          format: double
          example: 10.5
          description: CO2 emission value in kg per room for the entire stay.
    HotelDescription:
      type: object
      title: HotelDescription
      description: Hotel description
      properties:
        type:
          type: string
          enum:
            - GENERAL
            - ALERTS
            - DINING
            - FACILITIES
            - RECREATION
            - SERVICES
            - ATTRACTIONS
            - CANCELLATION_POLICY
            - DEPOSIT_POLICY
            - DIRECTIONS
            - POLICIES
            - SAFETY
            - TRANSPORTATION
          description: Hotel description type
          example: ''
        value:
          type: string
          description: Hotel description value
          example: ''
    HotelImageCategory:
      type: string
      description: Category of image such as exterior, spa, etc.
      enum:
        - UNKNOWN_CATEGORY
        - EXTERIOR_VIEW
        - LOBBY_VIEW
        - POOL_VIEW
        - RESTAURANT
        - HEALTH_CLUB
        - GUEST_ROOM
        - SUITE
        - MEETING_ROOM
        - BALLROOM
        - GOLF_COURSE
        - BEACH
        - SPA
        - BAR_OR_LOUNGE
        - RECREATIONAL_FACILITY
        - LOGO
        - BASICS
        - MAP
        - PROMOTIONAL
        - HOT_NEWS
        - MISCELLANEOUS
        - GUEST_ROOM_AMENITY
        - PROPERTY_AMENITY
        - BUSINESS_CENTER
    HotelImageSet:
      type: object
      description: Object containing details of images of different for a given category.
      required:
        - category
        - imageGroup
      properties:
        category:
          $ref: '#/components/schemas/HotelImageCategory'
        imageGroup:
          $ref: '#/components/schemas/ImageGroup'
    HotelInfo:
      type: object
      title: HotelInfo
      description: Hotel info
      required:
        - address
        - name
      properties:
        address:
          $ref: '#/components/schemas/PostalAddress'
          description: Address of the hotel.
        chainCode:
          type: string
          description: Chain code of the hotel.
          example: RF
        chainName:
          type: string
          description: Chain name of the hotel.
          example: Red Roof Inns
        coordinates:
          $ref: '#/components/schemas/Latlng'
          description: Coordinates of the hotel.
        email:
          type: string
          description: Email address of the hotel.
          example: user@business.com
        hotelId:
          type: string
          description: Hotel id.
          example: '100094780'
        name:
          type: string
          description: Name of the hotel.
          example: San Francisco Airport Red Roof
        phone:
          $ref: '#/components/schemas/PhoneNumber'
          description: Phone number of the hotel.
        starRating:
          type: number
          description: Star rating of the hotel.
          format: double
          example: 3.5
        fax:
          type: array
          items:
            $ref: '#/components/schemas/PhoneNumber'
        masterChainCode:
          type: string
          description: Master chain code of the hotel.
          example: EM
        brandName:
          type: string
          description: Brand name of the hotel.
          example: Marriott Hotel Brands
        amenities:
          type: array
          items:
            $ref: '#/components/schemas/HotelAmenities'
        additionalAmenities:
          type: array
          items:
            type: string
          description: List of amenities provided by the supplier.
          example:
            - Room service
            - Wifi
        imageSets:
          type: array
          items:
            $ref: '#/components/schemas/HotelImageSet'
        descriptions:
          type: array
          items:
            $ref: '#/components/schemas/HotelDescription'
        thirdPartyHotelCodes:
          type: array
          items:
            $ref: '#/components/schemas/ThirdPartyHotelCode'
    HotelItemNameMetadata:
      title: HotelItemNameMetadata
      type: object
      description: HotelItemNameMetadata information.
      required:
        - pnrType
      properties:
        pnrType:
          type: string
          example: HOTEL
        hotelName:
          description: Name of the hotel.
          type: string
          example: Hilton
        hotelCity:
          description: City of the hotel.
          type: string
          example: New York
        checkInDate:
          description: Check in date.
          $ref: '#/components/schemas/DateModel'
        nights:
          description: Number of nights.
          type: string
          example: 2 Nights
    HotelOccupancy:
      type: object
      title: HotelOccupancy
      description: Occupancy information
      properties:
        numAdults:
          type: integer
          description: Number of adults in the hotel pnr
          example: 1
        numChildren:
          type: integer
          description: Number of children in the hotel pnr
          example: 1
        childAges:
          type: array
          items:
            type: integer
            description: Age of each child in the hotel pnr
            example: 10
        numInfants:
          type: integer
          description: Number of infants in the hotel pnr
          example: 1
    HotelPref:
      type: object
      title: HotelPref
      description: Travel preferences related to hotel.
      properties:
        hotelParentChains:
          type: array
          description: A list of hotel parent chains.
          items:
            $ref: '#/components/schemas/HotelChain'
        hotelBrands:
          type: array
          description: A list of hotel brands.
          items:
            $ref: '#/components/schemas/HotelBrand'
        hotelAmenityTypes:
          type: array
          description: A list of HotelAmenities.
          items:
            $ref: '#/components/schemas/HotelPrefAmenity'
        roomPreference:
          $ref: '#/components/schemas/RoomPreference'
        conditionalRates:
          type: array
          description: A list of conditional rates for rail.
          items:
            $ref: '#/components/schemas/ConditionalRate'
    HotelPrefAmenity:
      type: string
      description: Preferred hotel amenity.
      enum:
        - PARKING
        - FREE_PARKING
        - FREE_BREAKFAST
        - POOL
        - WIFI
        - FITNESS_CENTER
        - FAMILY_FRIENDLY
        - RECEPTION
        - SPA
        - RESTAURANT
        - BAR
        - TRANSPORTATION
        - PET_FRIENDLY
        - BUSINESS_CENTER
        - AIR_CONDITIONING
        - BEACH_ACCESS
        - LAUNDRY_SERVICES
        - ROOM_SERVICE
        - ACCESSIBLE
    HotelRateAssuranceMetadata:
      title: HotelRateAssuranceMetadata
      type: object
      description: Savings information from the rate assurance rebooking
      properties:
        selfReportedSavings:
          $ref: '#/components/schemas/SimpleMoney'
        actualSavings:
          $ref: '#/components/schemas/SimpleMoney'
    HotelRoomAmenity:
      type: object
      title: HotelRoomAmenity
      description: Hotel Room amenities
      properties:
        additionalInfo:
          type: string
          description: Extra information about the room amenity
        complimentary:
          type: boolean
          description: Is amenity complimentary
          example: true
        type:
          type: string
          description: Room amenity type
          enum:
            - UNKNOWN
            - ADJOINING_ROOMS
            - AIR_CONDITIONING
            - ALARM_CLOCK
            - ALL_NEWS_CHANNEL
            - AM_FM_RADIO
            - BABY_LISTENING_DEVICE
            - BALCONY_LANAI_TERRACE
            - BARBEQUE_GRILLS
            - BATH_TUB_WITH_SPRAY_JETS
            - BATHROBE
            - BATHROOM_AMENITIES
            - BATHROOM_TELEPHONE
            - BATHTUB
            - BATHTUB_ONLY
            - BATHTUB_SHOWER_COMBINATION
            - BIDET
            - BOTTLED_WATER
            - CABLE_TELEVISION
            - COFFEE_TEA_MAKER
            - COLOR_TELEVISION
            - COMPUTER
            - CONNECTING_ROOMS
            - CONVERTERS_VOLTAGE_ADAPTORS
            - COPIER
            - CORDLESS_PHONE
            - CRIBS
            - DATA_PORT
            - DESK
            - DESK_WITH_LAMP
            - DINING_GUIDE
            - DIRECT_DIAL_PHONE_NUMBER
            - DISHWASHER
            - DOUBLE_BEDS
            - DUAL_VOLTAGE_OUTLET
            - ELECTRICAL_CURRENT_VOLTAGE
            - ERGONOMIC_CHAIR
            - EXTENDED_PHONE_CORD
            - FAX_MACHINE
            - FIRE_ALARM
            - FIRE_ALARM_WITH_LIGHT
            - FIREPLACE
            - FREE_TOLL_FREE_CALLS
            - FREE_CALLS
            - FREE_CREDIT_CARD_ACCESS_CALLS
            - FREE_LOCAL_CALLS
            - FREE_MOVIES_VIDEO
            - FULL_KITCHEN
            - GRAB_BARS_IN_BATHROOM
            - GRECIAN_TUB
            - HAIRDRYER
            - HIGH_SPEED_INTERNET_CONNECTION
            - INTERACTIVE_WEB_TV
            - INTERNATIONAL_DIRECT_DIALING
            - INTERNET_ACCESS
            - IRON
            - IRONING_BOARD
            - WHIRPOOL
            - KING_BED
            - KITCHEN
            - KITCHEN_SUPPLIES
            - KITCHENETTE
            - KNOCK_LIGHT
            - LAPTOP
            - LARGE_DESK
            - LARGE_WORK_AREA
            - LAUNDRY_BASKET_CLOTHES_HAMPER
            - LOFT
            - MICROWAVE
            - MINIBAR
            - MODEM
            - MODEM_JACK
            - MULTILINE_PHONE
            - NEWSPAPER
            - NONSMOKING
            - NOTEPADS
            - OFFICE_SUPPLIES
            - OVEN
            - PAY_PER_VIEW_MOVIES_ON_TV
            - PENS
            - PHONE_IN_BATHROOM
            - PLATES_AND_BOWLS
            - POTS_AND_PANS
            - PRAYER_MATS
            - PRINTER
            - PRIVATE_BATHROOM
            - QUEEN_BED
            - RECLINER
            - REFRIGERATOR
            - REFRIGERATOR_WITH_ICE_MAKER
            - REMOTE_CONTROL_TELEVISION
            - ROLLAWAY_BED
            - SAFE
            - SCANNER
            - SEPARATE_CLOSET
            - SEPARATE_MODEM_LINE_AVAILABLE
            - SHOE_POLISHER
            - SHOWER_ONLY
            - SILVERWARE_UTENSILS
            - SITTING_AREA
            - SMOKE_DETECTORS
            - SMOKING
            - SOFA_BED
            - SPEAKER_PHONE
            - STEREO
            - STOVE
            - TAPE_RECORDER
            - TELEPHONE
            - TELEPHONE_FOR_HEARING_IMPAIRED
            - TELEPHONES_WITH_MESSAGE_LIGHT
            - TOASTER_OVEN
            - TROUSER_PANT_PRESS
            - TURN_DOWN_SERVICE
            - TWIN_BED
            - VAULTED_CEILINGS
            - VCR_MOVIES
            - VCR_PLAYER
            - VIDEO_GAMES_AMENITY
            - VOICE_MAIL
            - WAKEUP_CALLS
            - WATER_CLOSET
            - WATER_PURIFICATION_SYSTEM
            - WET_BAR
            - WIRELESS_INTERNET_CONNECTION
            - WIRELESS_KEYBOARD
            - ADAPTOR_AVAILABLE_FOR_TELEPHONE_PC_USE
            - AIR_CONDITIONING_INDIVIDUALLY_CONTROLLED_IN_ROOM
            - BATHTUB_ANDWHIRLPOOL_SEPARATE
            - TELEPHONE_WITH_DATA_PORTS
            - CD_PLAYER
            - COMPLIMENTARY_LOCAL_CALLS_TIME_LIMIT
            - EXTRA_PERSON_CHARGE_FOR_ROLLAWAY_USE
            - DOWN_FEATHER_PILLOWS
            - DESK_WITH_ELECTRICAL_OUTLET
            - ESPN_AVAILABLE
            - FOAM_PILLOWS
            - HBO_AVAILABLE
            - HIGH_CEILINGS
            - MARBLE_BATHROOM
            - LIST_OF_MOVIE_CHANNELS_AVAILABLE
            - PETS_ALLOWED
            - OVERSIZED_BATHTUB
            - SHOWER
            - SINK_INROOM
            - SOUNDPROOFED_ROOM
            - STORAGE_SPACE
            - TABLES_AND_CHAIRS
            - TWOLINE_PHONE
            - WALKIN_CLOSET
            - WASHER_DRYER
            - WEIGHT_SCALE
            - WELCOME_GIFT
            - SPARE_ELECTRICAL_OUTLET_AVAILABLE_AT_DESK
            - NONREFUNDABLE_CHARGE_FOR_PETS
            - REFUNDABLE_DEPOSIT_FOR_PETS
            - SEPARATE_TUB_AND_SHOWER
            - ENTRANCE_TYPE_TO_GUEST_ROOM
            - CEILING_FAN
            - CNN_AVAILABLE
            - ELECTRICAL_ADAPTORS_AVAILABLE
            - BUFFET_BREAKFAST
            - ACCESSIBLE_ROOM
            - CLOSETS_IN_ROOM
            - DVD_PLAYER
            - MINIREFRIGERATOR
            - SEPARATE_LINE_BILLING_FOR_MULTILINE_PHONE
            - SELFCONTROLLED_HEATING_COOLING_SYSTEM
            - TOASTER
            - ANALOG_DATA_PORT
            - COLLECT_CALLS
            - INTERNATIONAL_CALLS
            - CARRIER_ACCESS
            - INTERSTATE_CALLS
            - INTRASTATE_CALLS
            - LOCAL_CALLS
            - LONG_DISTANCE_CALLS
            - OPERATORASSISTED_CALLS
            - CREDIT_CARD_ACCESS_CALLS
            - CALLING_CARD_CALLS
            - TOLL_FREE_CALLS
            - UNIVERSAL_AC_DC_ADAPTORS
            - BATHTUB_SEAT
            - CANOPY_POSTER_BED
            - CUPS_GLASSWARE
            - ENTERTAINMENT_CENTER
            - FAMILY_OVERSIZED_ROOM
            - HYPOALLERGENIC_BED
            - HYPOALLERGENIC_PILLOWS
            - LAMP
            - MEAL_INCLUDED_BREAKFAST
            - MEAL_INCLUDED_CONTINENTAL_BREAKFAST
            - MEAL_INCLUDED_DINNER
            - MEAL_INCLUDED_LUNCH
            - SHARED_BATHROOM
            - TELEPHONE_TDD_TEXTPHONE
            - WATER_BED
            - EXTRA_ADULT_CHARGE
            - EXTRA_CHILD_CHARGE
            - EXTRA_CHILD_CHARGE_FOR_ROLLAWAY_USE
            - MEAL_INCLUDED_FULL_AMERICAN_BREAKFAST
            - FUTON
            - MURPHY_BED
            - TATAMI_MATS
            - SINGLE_BED
            - ANNEX_ROOM
            - FREE_NEWSPAPER
            - HONEYMOON_SUITES
            - COMPLIMENTARY_HIGH_SPEED_INTERNET_IN_ROOM
            - MAID_SERVICE
            - PC_HOOKUP_IN_ROOM
            - SATELLITE_TELEVISION
            - VIP_ROOMS
            - CELL_PHONE_RECHARGER
            - DVR_PLAYER
            - IPOD_DOCKING_STATION
            - MEDIA_CENTER
            - PLUG_AND_PLAY_PANEL
            - SATELLITE_RADIO
            - VIDEO_ON_DEMAND
            - EXTERIOR_CORRIDORS
            - GULF_VIEW
            - ACCESSIBLE_ROOM_AMENITY
            - INTERIOR_CORRIDORS
            - MOUNTAIN_VIEW
            - OCEAN_VIEW
            - HIGH_SPEED_INTERNET_ACCESS_FEE
            - HIGH_SPEED_WIRELESS
            - PREMIUM_MOVIE_CHANNELS
            - SLIPPERS
            - FIRST_NIGHTERS_KIT
            - CHAIR_PROVIDED_WITH_DESK
            - PILLOW_TOP_MATTRESS
            - FEATHER_BED
            - DUVET
            - LUXURY_LINEN_TYPE
            - INTERNATIONAL_CHANNELS
            - PANTRY
            - DISHCLEANING_SUPPLIES
            - DOUBLE_VANITY
            - LIGHTED_MAKEUP_MIRROR
            - UPGRADED_BATHROOM_AMENITIES
            - VCR_PLAYER_AVAILABLE_AT_FRONT_DESK
            - INSTANT_HOT_WATER
            - OUTDOOR_SPACE
            - HINOKI_TUB
            - PRIVATE_POOL
            - HIGH_DEFINITION_HD_FLAT_PANEL_TELEVISION_32_INCHES_OR_GREATER
            - ROOM_WINDOWS_OPEN
            - BEDDING_TYPE_UNKNOWN_OR_UNSPECIFIED
            - FULL_BED
            - ROUND_BED
            - TV
            - CHILD_ROLLAWAY
            - DVD_PLAYER_AVAILABLE_AT_FRONT_DESK
            - VIDEO_GAME_PLAYER
            - VIDEO_GAME_PLAYER_AVAILABLE_AT_FRONT_DESK
            - DINING_ROOM_SEATS
            - FULL_SIZE_MIRROR
            - MOBILE_CELLULAR_PHONES
            - MOVIES
            - MULTIPLE_CLOSETS
            - PLATES_GLASSWARE
            - SAFE_LARGE_ENOUGH_TO_ACCOMMODATE_A_LAPTOP
            - BED_LINEN_THREAD_COUNT
            - BLACKOUT_CURTAIN
            - BLURAY_PLAYER
            - DEVICE_WITH_MP3
            - NO_ADULT_CHANNELS_OR_ADULT_CHANNEL_LOCK
            - NONALLERGENIC_ROOM
            - PILLOW_TYPE
            - SEATING_AREA_WITH_SOFA_CHAIR
            - SEPARATE_TOILET_AREA
            - WEB_ENABLED
            - WIDESCREEN_TV
            - OTHER_DATA_CONNECTION
            - PHONELINE_BILLED_SEPARATELY
            - SEPARATE_TUB_OR_SHOWER
            - VIDEO_GAMES
            - ROOF_VENTILATOR
            - CHILDRENS_PLAYPEN
            - PLUNGE_POOL
            - DVD_MOVIES
            - AIR_FILTRATION
          example: WEB_ENABLED
    HotelRoomMeal:
      type: object
      title: HotelRoomMeal
      description: Meal details for the room.
      required:
        - mealPlan
      properties:
        mealsIncluded:
          type: array
          items:
            $ref: '#/components/schemas/HotelRoomMealsIncluded'
        mealPlan:
          $ref: '#/components/schemas/HotelRoomMealType'
          description: Meal type added with the room booked.
    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
    HotelRoomMealsIncluded:
      type: string
      description: Meals included, (Breakfast/Lunch/Dinner)
      enum:
        - BREAKFAST
        - LUNCH
        - DINNER
      example: BREAKFAST
    HotelRsvpResponse:
      title: HotelRsvpResponse
      type: object
      description: Hotel rsvp response
      properties:
        notNeeded:
          type: boolean
          description: Whether hotel booking is needed by the traveler or not
          example: true
    HotelSpecialRequests:
      type: object
      title: HotelSpecialRequest
      description: Hotel special requests
      properties:
        roomLocations:
          type: array
          description: Room Location special request
          items:
            type: string
            enum:
              - HIGH_FLOOR
              - LOW_FLOOR
            example: HIGH_FLOOR
        roomFeatures:
          type: array
          description: Room Features List
          items:
            type: string
            enum:
              - CRIB
              - ROLLAWAY_BED
              - FEATHER_FREE_ROOM
              - ACCESSIBLE_ROOM
              - NEAR_ELEVATOR
            example: FEATHER_FREE_ROOM
        checkIn:
          type: string
          description: Early or Late Check-in
          enum:
            - EARLY_CHECK_IN
            - LATE_CHECK_IN
          example: LATE_CHECK_IN
        checkInTime:
          description: Requested time for check-in
          $ref: '#/components/schemas/TimeLocal'
        flightNumber:
          type: string
          description: Attach flight number
          example: AC1234
        additionalNote:
          type: string
          description: Free form text to describe special request
          example: Extra pillows and blankets for added comfort during the stay.
        accessibleFeatures:
          type: array
          description: Accessible Features List
          items:
            $ref: '#/components/schemas/HotelAccessibleFeatureType'
    HotelTravelerInfo:
      title: HotelTravelerInfo
      description: Hotel Traveler Info
      required:
        - travelerIdx
      properties:
        travelerIdx:
          type: integer
          description: Index of traveler in travelers list to which this info belongs
          format: int32
          example: 0
          minimum: 0
        userId:
          $ref: '#/components/schemas/UserId'
          description: User ID of traveler to which TravelerInfo belongs
        loyaltyInfos:
          type: array
          items:
            $ref: '#/components/schemas/LoyaltyInfo'
    IdInfo:
      type: object
      title: IdInfo
      description: Identity information of the buyer or seller
      required:
        - idType
        - value
      properties:
        idType:
          description: The type of Id.
          type: string
          enum:
            - TAX_ID
            - VAT_ID
          example: TAX_ID
        value:
          description: Value of the Id.
          type: string
          example: TXG239023092
    IdentityDocument:
      type: object
      title: IdentityDocument
      description: >
        Identity document details. Currently supported documents are passport,
        immigration document, 

        known traveler number, redress number and national document.
      oneOf:
        - $ref: '#/components/schemas/PassportWrapper'
        - $ref: '#/components/schemas/ImmigrationDocumentWrapper'
        - $ref: '#/components/schemas/RedressNumberWrapper'
        - $ref: '#/components/schemas/KnownTravelerNumberWrapper'
        - $ref: '#/components/schemas/NationalDocWrapper'
    Image:
      type: object
      title: Image
      description: >-
        An image with meta data. Either the `data` or `url` property must be
        supplied to load the image.
      properties:
        data:
          type: string
          format: byte
          example: 6935813e12584abda0e43d71cd2ea260
        dimensions:
          $ref: '#/components/schemas/Dimensions'
        url:
          type: string
          example: >-
            https://static.wixstatic.com/media/73f2e2_6935813e12584abda0e43d71cd2ea260~mv2.png/v1/fill/w_630,h_94,al_c,q_85,usm_0.66_1.00_0.01/Spotnana%403x.webp
    ImageGroup:
      type: object
      title: ImageGroup
      description: Contains different sizes of the same image.
      required:
        - images
      properties:
        caption:
          type: string
          description: Caption for the image.
          example: Exterior
        images:
          type: array
          description: List of images.
          items:
            $ref: '#/components/schemas/Image'
    ImmigrationDocument:
      type: object
      title: ImmigrationDocument
      description: Immigration document details.
      required:
        - docId
        - expiryDate
        - issueCountry
      properties:
        authorizedStayDuration:
          description: Duration of the stay authorized by the immigration document.
          $ref: '#/components/schemas/Duration'
        docId:
          type: string
          description: The ID of the immigration document.
          example: ImmigrationDocumentID
        expiryDate:
          description: The date on which the immigration document expires.
          $ref: '#/components/schemas/DateModel'
        issueCountry:
          type: string
          description: The country that issued the immigration document.
          example: IN
        issuedDate:
          description: The date on which the immigration document was issued.
          $ref: '#/components/schemas/DateModel'
        nationalityCountry:
          type: string
          example: IN
        reentryRequirementDuration:
          $ref: '#/components/schemas/Duration'
        type:
          type: string
          enum:
            - UNKNOWN
            - VISA
          example: VISA
    ImmigrationDocumentWrapper:
      type: object
      title: ImmigrationDocumentWrapper
      properties:
        immigrationDoc:
          $ref: '#/components/schemas/ImmigrationDocument'
    Int32Range:
      type: object
      properties:
        min:
          type: integer
          format: int32
          description: Minimum value - inclusive.
        max:
          type: integer
          format: int32
          description: Maximum value - inclusive.
    Int32RangeWrapper:
      type: object
      title: Int32RangeWrapper
      properties:
        iRange:
          $ref: '#/components/schemas/Int32Range'
    Int32Wrapper:
      type: object
      title: Int32Wrapper
      properties:
        i:
          type: integer
          format: int32
    Int64Wrapper:
      type: object
      title: Int64Wrapper
      properties:
        l:
          type: integer
          format: int64
    IntListWrapper:
      type: object
      title: IntListWrapper
      properties:
        iList:
          type: array
          items:
            type: integer
            format: int32
    Invoice:
      type: object
      title: Invoice
      description: Invoice Data for single invoice
      required:
        - invoiceNumber
        - invoiceId
        - data
      properties:
        invoiceNumber:
          description: The invoice number
          type: string
          example: SPOT-0001232
        invoiceId:
          description: The invoice ID
          type: string
          example: d694cf94-534e-410e-b66b-11ef970622bc
        data:
          description: The invoice content
          $ref: '#/components/schemas/InvoiceData'
    InvoiceData:
      type: object
      title: InvoiceData
      description: Actual Data
      required:
        - issuedDate
        - seller
        - buyer
        - items
        - payments
        - productId
        - productType
        - referenceIds
        - invoiceAmount
      properties:
        issuedDate:
          description: Date of invoice issue
          $ref: '#/components/schemas/DateModel'
        seller:
          description: Entity that sold the items mentioned in the invoice.
          $ref: '#/components/schemas/SellerInfo'
        buyer:
          description: Buyer of items mentioned in the invoice.
          $ref: '#/components/schemas/BuyerInfo'
        items:
          description: Items being invoiced.
          type: array
          items:
            $ref: '#/components/schemas/Item'
        payments:
          description: Information on how the items have been paid for.
          type: array
          items:
            $ref: '#/components/schemas/PaymentInformation'
        productId:
          description: ID of the product being invoiced
          type: string
          example: '123243223'
        productType:
          description: Type of product for which invoice is generated.
          $ref: '#/components/schemas/ProductType'
        invoiceAmount:
          description: Total invoice amount.
          $ref: '#/components/schemas/FareAmount'
        taxBreakdown:
          description: >-
            Tax breakdown for the invoice, this will be present for UK invoices
            with VAT
          $ref: '#/components/schemas/TaxBreakdown'
        referenceIds:
          description: >-
            Reference Numbers to be shown on the invoice, for ex, Trip ID, PNR
            ID etc.
          type: array
          items:
            $ref: '#/components/schemas/ReferenceId'
        regionCode:
          description: The region code for which the invoice is generated.
          $ref: '#/components/schemas/RegionCode'
          example: US
        documentType:
          description: Type of document
          type: string
          enum:
            - INVOICE
            - RECEIPT
            - NONE
          example: INVOICE
        footerText:
          description: >-
            Text shown at bottom of the PDF document. Nothing is shown if not
            set.
          type: string
          example: >-
            This document is proof of payment. If you require a tax invoice,
            please request one from the travel provider.
    InvoiceDataRequest:
      type: object
      title: InvoiceDataRequest
      description: Invoice Data Request
      required:
        - invoices
      properties:
        tmcId:
          deprecated: true
          description: >-
            TMC for which invoice is being requested. Deprecated in favor of
            invoiceIds.
          type: string
          example: 15c94ac1-f540-4916-9243-306a75fbd8a9
        invoiceNumbers:
          deprecated: true
          description: >-
            One or more invoice numbers being requested. Deprecated in favor of
            invoiceIds.
          type: array
          items:
            type: string
        invoiceIds:
          description: One or more Invoice IDs being requested
          type: array
          items:
            type: string
            format: uuid
            example: 15c94ac1-f540-4916-9243-306a75fbd8a9
    InvoiceDataResponse:
      type: object
      title: InvoiceDataResponse
      description: Invoice Data List
      required:
        - invoices
      properties:
        invoices:
          description: List of invoices which were requested.
          type: array
          items:
            $ref: '#/components/schemas/Invoice'
    InvoiceInfo:
      type: object
      title: InvoiceInfo
      required:
        - invoiceNumber
        - productType
        - invoiceId
      properties:
        invoiceNumber:
          type: string
          description: The invoice number for an invoice
          example: SPOT-0001
        productType:
          description: Type of product for which invoice is generated.
          $ref: '#/components/schemas/ProductType'
        invoiceId:
          type: string
          description: Unique ID of the invoice.
          example: 2a5c0a73-1306-47f2-8210-7dfc812f4d0e
    Item:
      type: object
      title: Item
      description: Item being invoiced.
      required:
        - name
        - identifier
        - type
        - amount
        - travelerName
        - purchaseType
      properties:
        name:
          description: Name of the item.
          type: string
          example: Air Ticket SFO-EWR
        identifier:
          description: >-
            Number identifying the item, for ex, the ticket number for air
            ticket.
          type: string
          example: '00129383829'
        purchaseType:
          description: Type of item, indicates what type of item is being sold
          type: string
          enum:
            - TRIP_FEE
            - FLIGHT
            - ANCILLARY
            - HOTEL
            - CAR
            - RAIL
          example: TRIP_FEE
        type:
          description: Type of item, indicates if the item was purchased vs refunded.
          type: string
          enum:
            - PURCHASE
            - REFUND
          example: PURCHASE
        amount:
          description: Amount of money.
          $ref: '#/components/schemas/FareAmount'
        travelerName:
          description: Name of the traveler.
          type: string
          example: John Doe
        taxBreakdown:
          description: >-
            Tax breakdown for the invoice, this will be present for UK invoices
            with VAT
          $ref: '#/components/schemas/TaxBreakdown'
        itemNameMetadata:
          description: Metadata for the item name.
          $ref: '#/components/schemas/ItemNameMetadata'
    ItemNameMetadata:
      title: ticketMetadata
      description: Metadata for the ticket.
      discriminator:
        propertyName: pnrType
        mapping:
          AIR: '#/components/schemas/AirItemNameMetadata'
          HOTEL: '#/components/schemas/HotelItemNameMetadata'
          RAIL: '#/components/schemas/RailItemNameMetadata'
      oneOf:
        - $ref: '#/components/schemas/AirItemNameMetadata'
        - $ref: '#/components/schemas/HotelItemNameMetadata'
        - $ref: '#/components/schemas/RailItemNameMetadata'
    KeyValue:
      title: KeyValue
      type: object
      description: A key-value structure.
      properties:
        key:
          type: string
          description: Header key.
        value:
          type: string
          description: Header value.
    KeywordWithReasonListWrapper:
      type: object
      title: KeywordWithReasonListWrapper
      properties:
        keywordWithReasonList:
          $ref: '#/components/schemas/KeywordsWithReasonList'
    KeywordsWithReasonList:
      type: object
      properties:
        keywords:
          type: array
          items:
            $ref: '#/components/schemas/RestrictedKeywordsWithReason'
    KnownTravelerNumber:
      type: object
      title: KnownTravelerNumber
      description: Information about the Known Traveler Number (KTN).
      required:
        - number
        - issueCountry
      properties:
        number:
          type: string
          example: '12345'
        issueCountry:
          type: string
          example: US
    KnownTravelerNumberWrapper:
      type: object
      title: KnownTravelerNumberWrapper
      properties:
        ktn:
          $ref: '#/components/schemas/KnownTravelerNumber'
    LLFPnrInfo:
      title: LLFPnrInfo
      description: Lowest logical fare info at pnr level
      required:
        - totalFare
      properties:
        totalFare:
          $ref: '#/components/schemas/Money'
    Latlng:
      title: Latlng
      description: Latitude and Longitude for a Location
      type: object
      required:
        - latitude
        - longitude
      properties:
        latitude:
          type: number
          description: Latitude of the Location
          format: double
          example: 77.1025
        longitude:
          type: number
          description: Longitude of the Location
          format: double
          example: 28.7041
    Leg:
      type: object
      title: FlightLeg
      description: Leg info
      required:
        - flights
      properties:
        flights:
          type: array
          description: List of flights in this leg
          items:
            $ref: '#/components/schemas/Flight'
          minItems: 1
        brandName:
          type: string
          description: Brand name
          example: BUSFLEX
        validatingAirlineCode:
          type: string
          description: 2 letter IATA airline code for validating airline
          example: AA
        legStatus:
          description: The leg status, which is supposed to be displayed to the end user.
          readOnly: true
          $ref: '#/components/schemas/UserFacingStatus'
        sortingPriority:
          type: integer
          format: int32
          readOnly: true
          description: >
            This field sets the sorting priority of the leg to determine its
            order of display on the

            trips page
          example: 1
        travelerRestrictions:
          type: array
          description: Per traveler list of restrictions such as loyalty, ktn edit etc.
          readOnly: true
          items:
            type: object
            title: TravelerRestrictions
            required:
              - userId
            properties:
              userId:
                $ref: '#/components/schemas/UserId'
                description: User ID of traveler to which this restriction applies
              restrictions:
                type: array
                items:
                  type: string
                  title: Restriction
                  description: Restrictions such as loyalty, KTN edit, etc.
                  enum:
                    - NONE
                    - SEAT_EDIT_NOT_ALLOWED
                    - LOYALTY_EDIT_NOT_ALLOWED
                    - KTN_EDIT_NOT_ALLOWED
                    - REDRESS_EDIT_NOT_ALLOWED
                    - SSR_EDIT_NOT_ALLOWED
                    - OSI_EDIT_NOT_ALLOWED
                    - SEAT_CHANGE_NOT_ALLOWED
                  example: KTN_EDIT_NOT_ALLOWED
        fareOffers:
          type: array
          description: Fare offers for this leg including baggage, cancellation policy, etc
          items:
            type: object
            title: FareOffers
            description: Fare offers for a traveler
            required:
              - userId
            properties:
              userId:
                $ref: '#/components/schemas/UserId'
                description: User ID of traveler to which this fare offer applies
              baggagePolicy:
                $ref: '#/components/schemas/BaggagePolicy'
              cancellationPolicy:
                $ref: '#/components/schemas/CancellationPolicy1'
              exchangePolicy:
                $ref: '#/components/schemas/ExchangePolicy'
        legId:
          type: string
          readOnly: true
          description: Identifier for leg
          example: '1'
        rateType:
          description: Type of fare booked for this leg
          $ref: '#/components/schemas/RateType'
        legUpdates:
          readOnly: true
          $ref: '#/components/schemas/LegUpdates'
        preferredTypes:
          type: array
          readOnly: true
          deprecated: true
          description: >-
            Preference types for a leg, like org preferred, spotters choice,
            etc.
          items:
            $ref: '#/components/schemas/PreferredType'
        preferences:
          type: array
          readOnly: true
          description: Preference info for a leg, like org preferred, spotters choice, etc.
          items:
            $ref: '#/components/schemas/Preference'
        scheduleChangeInfo:
          $ref: '#/components/schemas/ScheduleChangeInfo'
    LegMetadata:
      title: LegMetadata
      description: Leg metadata against which document is associated.
      type: object
      properties:
        legId:
          type: string
          description: Unique identifier of the leg.
          example: CgNTRk8SA0RFThoKNTQ1NzI5ODcxMQ==
    LegMetadataWrapper:
      type: object
      title: LegMetadataWrapper
      properties:
        legMetadata:
          $ref: '#/components/schemas/LegMetadata'
    LegUpdates:
      type: object
      title: LegUpdates
      description: Alerts like connection risk for a leg
      properties:
        connectionAlerts:
          type: array
          items:
            $ref: '#/components/schemas/ConnectionRiskAlert'
    LegalEntityId:
      type: object
      title: LegalEntityId
      description: The ID of the legal entity.
      required:
        - id
      properties:
        id:
          type: string
          example: fc1ccbce-8413-4fe9-b233-a324dfbe7421
    LegalEntityIdListWrapper:
      type: object
      title: LegalEntityIdListWrapper
      properties:
        legalEntityIdList:
          type: array
          items:
            $ref: '#/components/schemas/LegalEntityId'
    LegalEntityIdWrapper:
      type: object
      title: LegalEntityIdWrapper
      properties:
        legalEntityId:
          $ref: '#/components/schemas/LegalEntityId'
    Length:
      type: object
      title: Length
      description: Specifies the length or a distance.
      required:
        - length
        - unit
      properties:
        length:
          type: number
          description: Distance from search point.
          format: double
          example: 150
        unit:
          type: string
          description: Unit of measure being applied.
          enum:
            - UNKNOWN_UNIT
            - KM
            - MILE
          example: MILE
    LengthWrapper:
      type: object
      title: LengthWrapper
      properties:
        length:
          $ref: '#/components/schemas/Length'
    LimoInfo:
      title: LimoInfo
      description: Limo info
      required:
        - legs
        - limoDetails
        - rate
        - vendorConfirmationNumber
      properties:
        cancellationPolicy:
          $ref: '#/components/schemas/CancellationPolicy2'
          description: Limo cancellation policy.
        driver:
          type: object
          title: Driver
          description: Driver details of the limo.
          required:
            - name
            - phone
          properties:
            name:
              type: string
              description: Driver name.
              example: John Doe
            phone:
              $ref: '#/components/schemas/PhoneNumber'
              description: Driver phone number.
            driverInstructions:
              type: string
              description: Notes to inform driver about any special instructions.
        legs:
          type: array
          description: List of legs covered in the booking.
          items:
            type: object
            title: LimoLegInfo
            description: Leg info.
            required:
              - dropOffLocation
              - pickupDateTime
              - pickupLocation
            properties:
              dropOffDateTime:
                $ref: '#/components/schemas/DateTimeLocal'
                description: Drop off date and time.
              dropOffLocation:
                $ref: '#/components/schemas/CarLocation'
                description: Drop off location.
              dropOffNotes:
                type: string
                description: Drop off notes for the driver.
              pickupDateTime:
                $ref: '#/components/schemas/DateTimeLocal'
                description: Pick up date and time.
              pickupLocation:
                $ref: '#/components/schemas/CarLocation'
                description: Pick up location.
              pickupNotes:
                type: string
                description: Pick up notes for the driver.
              sortingPriority:
                type: integer
                format: int32
                description: Sorting priority of this leg
        limoDetails:
          type: object
          title: LimoDetails
          description: Limo details.
          required:
            - carType
            - electricVehicle
          properties:
            carType:
              type: string
              title: CarType
              description: Limo type.
              enum:
                - UNKNOWN_CAR_TYPE
                - STANDARD_CAR
                - EXECUTIVE_CAR
                - BUSINESS_VAN
                - FIRST_CLASS
                - SUV
                - SEDAN
                - EXECUTIVE_SEDAN
                - LUXURY_SEDAN
                - EXECUTIVE_VAN
                - BUSINESS_SEDAN
              example: STANDARD_CAR
            electricVehicle:
              $ref: '#/components/schemas/ElectricVehicle'
              description: Whether the limo is electric.
            vendorName:
              type: string
              description: Vendor name of the limo.
              example: NATIONAL
              deprecated: true
            limoVendorInfo:
              $ref: '#/components/schemas/LimoVendorInfo'
              description: Vendor details of the limo.
            bookingNotes:
              type: string
              description: >-
                Contains information about rate, cancellation policies and terms
                and conditions.
        paymentType:
          type: string
          description: Payment type.
          enum:
            - UNKNOWN_PAYMENT_TYPE
            - PAY_AT_VENDOR
            - PREPAID
          example: PREPAID
        pnrStatus:
          $ref: '#/components/schemas/PnrStatus'
          description: Pnr status.
        rate:
          $ref: '#/components/schemas/Cost'
          description: Limo rate.
        vendorConfirmationNumber:
          type: string
          description: Limo confirmation number.
          example: '2108528068'
        sourceStatus:
          type: string
          description: Source status code of the pnr
    LimoVendorInfo:
      type: object
      title: LimoVendorInfo
      description: Information about limo vendor.
      required:
        - name
      properties:
        code:
          type: string
          description: Vendor code
          example: ZE
        name:
          type: string
          description: Vendor name
          example: HERTZ
        email:
          type: string
          description: Vendor Email
          example: mail@mail.com
    ListOrganisationTripsRequest:
      title: ListOrganisationTripsRequest
      type: object
      description: >-
        Request for giving trips and associated Pnr's for a certain organisation
        that are updated after a certain time
      required:
        - organizationId
        - pnrType
      properties:
        organizationId:
          $ref: '#/components/schemas/OrganizationId'
        updatedAt:
          $ref: '#/components/schemas/DateTimeOffset'
        pnrType:
          type: string
          description: Type of PNR
          enum:
            - AIR
            - CAR
            - RAIL
            - HOTEL
            - LIMO
            - ALL
        customFieldIds:
          type: array
          description: List of custom field IDs to filter
          items:
            $ref: '#/components/schemas/CustomFieldId'
    ListOrganisationTripsResponse:
      title: ListOrganisationTripsResponse
      type: object
      description: >-
        Gives Trips and associated Pnr's for a certain organisation that are
        updated after a certain time
      properties:
        trips:
          type: array
          items:
            $ref: '#/components/schemas/OrgTripInfo'
    LocationContactInfo:
      type: object
      title: LocationContactInfo
      description: Contact info of the location
      properties:
        phone:
          type: array
          items:
            type: string
            description: Phone number of the location
            example: 123 456-7890
        fax:
          type: array
          items:
            type: string
            description: Fax contact for the location
            example: 123 456-7890
        email:
          type: array
          items:
            type: string
            description: Email address of the location
            example: user@business.com
    LocationOperatingSchedule:
      type: object
      title: LocationOperatingSchedule
      description: Operating schedule of vendor
      required:
        - interval
      properties:
        interval:
          type: array
          description: Operating schedule interval
          items:
            $ref: '#/components/schemas/DateTimeRange'
    LoyaltyDetails:
      description: Details about the traveler loyalty program and number.
      type: object
      properties:
        loyaltyProgram:
          type: string
        loyaltyNumber:
          type: string
    LoyaltyInfo:
      type: object
      title: LoyaltyInfo
      description: Loyalty Info details.
      required:
        - id
        - type
        - issuedBy
      properties:
        appliedTo:
          type: array
          items:
            type: string
            example: TAJ
        id:
          type: string
          example: firstId
        issuedBy:
          type: string
          example: firstIssuedBy
        type:
          type: string
          enum:
            - UNKNOWN_TYPE
            - AIR
            - HOTEL
            - CAR
            - RAIL
          example: AIR
    LuggageInfo:
      type: object
      title: Luggage
      description: Additional luggage info
      required:
        - weightKg
        - amount
      properties:
        legIdx:
          type: integer
          description: >-
            Index of leg to which this luggage belongs. If -1, belongs to all
            legs
          format: int32
          example: 0
          minimum: 0
        amount:
          $ref: '#/components/schemas/Money'
          description: Total price
        weightKg:
          type: integer
          format: int32
          description: Total weight in Kgs
          example: 40
          minimum: 0
        numBags:
          type: integer
          format: int32
          description: Number of bags.
          example: 2
          minimum: 0
        status:
          type: string
          description: Status of baggage
          enum:
            - UNKNOWN
            - CONFIRMED
            - PENDING
            - CANCELLED
          example: CONFIRMED
    ManualVerificationIntent:
      type: object
      title: ManualVerificationIntent
      description: >-
        Represents the intent for manual verification with a remark and a list
        of reasons.
      required:
        - reason
      properties:
        remark:
          type: string
          description: Additional remarks or notes about the verification.
          example: Verification provided after manual approval.
        reasons:
          type: array
          description: List of reasons for manual verification.
          items:
            $ref: '#/components/schemas/ManualVerificationReason'
    ManualVerificationIntentWrapper:
      type: object
      title: ManualVerificationIntentWrapper
      description: Wrapper object for ManualVerificationIntent.
      properties:
        manualVerificationIntent:
          $ref: '#/components/schemas/ManualVerificationIntent'
    ManualVerificationReason:
      type: string
      title: ManualVerificationReason
      description: Enumerates the possible reasons for manual verification.
      enum:
        - FARE_THRESHOLD_VERIFIED
        - FRAUD_CITY_VERIFIED
      example: FARE_THRESHOLD_VERIFIED
    MealPref:
      type: object
      title: MealPref
      description: Meal preferences.
      properties:
        exclMealPrefs:
          type: array
          items:
            $ref: '#/components/schemas/MealType'
        inclMealPrefs:
          type: array
          items:
            $ref: '#/components/schemas/MealType'
        specialMealDescription:
          type: string
          example: Veg only meal
    MealType:
      type: string
      title: MealType
      description: Type of the meal
      enum:
        - UNKNOWN_MEAL
        - AVML
        - BBML
        - BLML
        - CHML
        - DBML
        - FPML
        - GFML
        - HFML
        - HNML
        - KSML
        - LCML
        - LFML
        - LPML
        - LSML
        - MOML
        - NLML
        - NSML
        - ORML
        - PFML
        - RVML
        - SFML
        - SPML
        - VGML
        - VJML
        - VLML
        - VOML
      example: VGML
    MiscInfo:
      title: MiscInfo
      description: Misc info
      required:
        - description
        - endDateTime
        - rate
        - startDateTime
        - vendorConfirmationNumber
      properties:
        description:
          type: string
          description: Description of the miscellaneous segment.
          example: Any text info
        endDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
          description: End date and time.
        pnrStatus:
          $ref: '#/components/schemas/PnrStatus'
          description: Pnr status.
        rate:
          $ref: '#/components/schemas/Cost'
          description: Miscellaneous segment rate.
        startDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
          description: Start date and time.
        vendorConfirmationNumber:
          type: string
          description: Miscellaneous segment confirmation number.
          example: '2108528068'
        sortingPriority:
          type: integer
          format: int32
          description: Sorting priority of this pnr
          example: 10
        sourceStatus:
          type: string
          description: Source status code of the pnr
    Money:
      type: object
      title: Money
      description: >
        Money object containing details such as the amount, the currency code,
        and the converted amount.
      required:
        - amount
        - currencyCode
      properties:
        amount:
          type: number
          format: double
          description: The numeric value for the amount of money.
          example: 510
        currencyCode:
          type: string
          description: >-
            The 3-letter currency code for the money amount (defined using ISO
            4217 standard).
          example: GBP
        convertedAmount:
          type: number
          format: double
          description: >
            The converted currency and amount that has been converted (if a
            currency conversion has been requested).

            For example, if the call requests that money be sent in a specified
            currency (because the frontend requested

            the backend to send money in the user's preferred currency).
          example: 715.42
        convertedCurrency:
          type: string
          description: >-
            The 3-letter currency code for the converted currency (defined using
            ISO 4217 standard).
          example: USD
        otherCoinage:
          type: array
          title: OtherCoinage
          description: >-
            List of the dollar amount in other coinage systems like reward
            points, cryptocurrency etc.
          items:
            type: object
            properties:
              coinageCode:
                $ref: '#/components/schemas/PaymentMethod'
                description: Payment method
              amount:
                type: number
                format: double
                example: 1000
              conversionRate:
                type: number
                format: double
                description: 1 coin in this system equals to how many currency value
                example: 0.01
              preferredCurrencyConversionRate:
                type: number
                format: double
                description: 1 coin in this system equals to how many currency value
                example: 0.01
    MoneyWrapper:
      type: object
      title: MoneyWrapper
      properties:
        money:
          $ref: '#/components/schemas/Money'
    Name:
      type: object
      title: Name
      description: Full name containing first, middle, last (family) names, and suffix.
      required:
        - given
        - family1
      properties:
        family1:
          type: string
          description: Last (family) name.
          example: Gandas
        family2:
          type: string
          example: FamilyTwo
        given:
          type: string
          description: First (given) name.
          example: Vichitr
        middle:
          type: string
          description: Middle name.
          example: Kumar
        suffix:
          $ref: '#/components/schemas/NameSuffix'
          description: Suffix used with the name. For example SR or JR.
          example: SR
        preferred:
          type: string
          description: >-
            Informal preferred name added by traveler. This is not used on any
            PNR or tickets
          example: Don
    NameSuffix:
      title: NameSuffix
      description: Suffix for name
      type: string
      enum:
        - NAME_SUFFIX_UNKNOWN
        - SR
        - JR
        - MD
        - PHD
        - II
        - III
        - IV
        - DO
        - ATTY
      example: SR
    NationalDoc:
      type: object
      title: NationalDoc
      description: National Document Id details.
      required:
        - docId
        - issueCountry
      properties:
        docId:
          type: string
          description: Unique id identifying the national document.
          example: NationalDocId
        issueCountry:
          type: string
          description: IS0 2 letter country code of the country issuing this id.
          example: IN
        issuedDate:
          $ref: '#/components/schemas/DateModel'
        expiryDate:
          $ref: '#/components/schemas/DateModel'
        type:
          type: string
          enum:
            - DNI
            - NIE
          example: DNI
    NationalDocWrapper:
      type: object
      title: NationalDocWrapper
      properties:
        nationalDoc:
          $ref: '#/components/schemas/NationalDoc'
    NumStopsPref:
      type: object
      title: NumStopsPref
      description: Preferred number of stops.
      required:
        - numOfStops
      properties:
        numOfStops:
          type: integer
          format: int32
          example: 34
    OfferExpiryInfo:
      type: object
      title: OfferExpiryInfo
      description: >
        Date time in UTC till when this cancellation offer is valid. For example
        void window expiry.
      required:
        - dateTime
      properties:
        dateTime:
          $ref: '#/components/schemas/DateTimeOffset'
    Office:
      type: object
      title: Office
      description: Office details.
      required:
        - id
        - name
      properties:
        address:
          $ref: '#/components/schemas/PostalAddress'
        id:
          $ref: '#/components/schemas/OfficeId'
        name:
          type: string
          example: Office
        latlng:
          $ref: '#/components/schemas/Latlng'
        taxId:
          type: string
          example: '133232'
    OfficeId:
      type: object
      title: OfficeId
      description: The unique ID of the office.
      required:
        - id
      properties:
        id:
          type: string
          description: The value of the unique ID for the office.
          example: 531ccbce-8413-4fe9-b233-a324dfbe7421
    OfficeIdListWrapper:
      type: object
      title: OfficeIdListWrapper
      properties:
        officeIdList:
          type: array
          description: A list of office IDs.
          items:
            $ref: '#/components/schemas/OfficeId'
    OfficeIdWrapper:
      type: object
      title: OfficeIdWrapper
      properties:
        officeId:
          $ref: '#/components/schemas/OfficeId'
    Option:
      type: object
      title: Option
      description: Answer option for a question
      required:
        - displayCode
      properties:
        displayCode:
          type: string
          description: The code which is sent in answer response.
        displayValue:
          type: string
          description: The text to be displayed to the user beside this option.
    OptionInfo:
      type: object
      title: OptionInfo
      description: Options related information for the question.
      required:
        - source
      properties:
        source:
          $ref: '#/components/schemas/OptionSource'
          default: MANUAL
        sourceMetadata:
          $ref: '#/components/schemas/OptionSourceMetadata'
        totalNumOptions:
          type: integer
          description: Total number of options
        options:
          type: array
          description: >
            Available options for the question. This will contain only max 10
            options if only 

            summary is requested.
          items:
            $ref: '#/components/schemas/Option'
    OptionSource:
      type: string
      enum:
        - MANUAL
        - COMPANY_CONFIG
      description: Option source
      example: MANUAL
    OptionSourceMetadata:
      type: object
      title: OptionSourceMetadata
      description: Metadata information for the option source.
      oneOf:
        - $ref: '#/components/schemas/CompanyConfigSourceWrapper'
    OrgTripInfo:
      title: OrgTripInfo
      description: Trips and PNRs of a particular organistion
      type: object
      required:
        - tripId
        - pnrInfos
      properties:
        tripId:
          type: string
          description: Spotnana trip ID
          example: '6926658168'
        pnrInfos:
          type: array
          description: Pnr Info for the organisation trips
          items:
            $ref: '#/components/schemas/PnrInfo'
        tripName:
          type: string
          description: Trip Name
          example: SFO - DEL Meeting
        tripDescription:
          type: string
          description: Trip Description
          example: SFO-DEL 22-04-2022
        applicationId:
          type: string
          format: uuid
          description: Application used while creating trip.
    OrganizationAgencyId:
      type: object
      title: OrganizationAgencyId
      description: Agency id for the organization.
      deprecated: true
      required:
        - id
      properties:
        id:
          type: string
    OrganizationId:
      type: object
      title: OrganizationId
      description: Organization id for traveler.
      required:
        - id
      properties:
        id:
          type: string
    OtherAncillaryFare:
      type: object
      title: OtherAncillaryFare
      description: Other ancillary fare info
      required:
        - type
        - totalFare
      properties:
        type:
          $ref: '#/components/schemas/AncillaryType'
        totalFare:
          $ref: '#/components/schemas/FareAmount'
          description: Total fare for this ancillary
    OtherServiceInformationDetail:
      title: OtherServiceInformationDetail
      description: Other Service Information (OSI) details.
      properties:
        customText:
          type: string
          description: The special instruction is given in the form of text.
          example: Wheelchair access
        flightIndexes:
          type: array
          description: >-
            Index of flight mapping with the OSI, starts with 0. One OSI belong
            to one airline, so all the segments of an airline will have the same
            OSI.
          items:
            $ref: '#/components/schemas/FlightAndLegIndex'
    PassengerType:
      title: PassengerType
      description: Type of passenger
      type: string
      enum:
        - UNKNOWN_PASSENGER_TYPE
        - ADULT
        - CHILD
        - INFANT
        - INFANT_ON_LAP
        - YOUTH
        - SENIOR
        - TEEN
      example: ADULT
    Passport:
      type: object
      title: Passport
      description: Passport details.
      required:
        - docId
        - expiryDate
        - issueCountry
        - nationalityCountry
      properties:
        docId:
          type: string
          example: PassportID
        expiryDate:
          $ref: '#/components/schemas/DateModel'
        issueCountry:
          type: string
          example: IN
        issuedDate:
          $ref: '#/components/schemas/DateModel'
        nationalityCountry:
          type: string
          example: IN
        type:
          type: string
          enum:
            - UNKNOWN
            - REGULAR
          example: REGULAR
    PassportWrapper:
      type: object
      title: PassportWrapper
      properties:
        passport:
          $ref: '#/components/schemas/Passport'
    Payment:
      title: Payment
      description: >
        This will contain the total fare of goods along with other charges like
        service fee. The price

        break down of goods should be added in PNR details, like airPnr
      type: object
      required:
        - travelerIndices
        - paymentType
      properties:
        travelerIndices:
          type: array
          description: The list of traveler indices on which this payment applies.
          items:
            type: integer
            format: int32
          minItems: 1
          example:
            - 0
            - 1
        userIds:
          type: array
          description: The list of traveler user IDs on which this payment applies.
          items:
            $ref: '#/components/schemas/UserId'
        amount:
          description: Total amount
          $ref: '#/components/schemas/FareAmount'
        fop:
          $ref: '#/components/schemas/FormOfPayment'
        paymentReference:
          type: string
          description: Reference number for original payment made for this service
          example: HAH2618716871
        paymentType:
          type: string
          description: Service for which this payment is made
          enum:
            - UNKNOWN
            - FLIGHTS
            - SERVICE_FEE
            - MISCELLANEOUS
            - HOTELS
            - CARS
            - RAILS
            - LIMO
            - MISC
          example: FLIGHTS
        paymentThirdParty:
          type: string
          description: Third party who is processing the payment
          enum:
            - UNKNOWN_PARTY
            - STRIPE
            - TFPAY
            - TRAINLINE
            - BREX
            - OUTSIDE_OBT
            - RAZORPAY
          example: STRIPE
        paymentId:
          type: string
          description: The payment id for this transaction
        paymentGateway:
          type: string
          description: Third party payment gateway used to process the payment
          enum:
            - PAYMENT_GATEWAY_UNKNOWN
            - STRIPE
            - BREX
          example: STRIPE
        isRefunded:
          type: boolean
          description: Whether the payment is refunded to the customer
          example: false
        selectedPaymentSource:
          $ref: '#/components/schemas/SelectedPaymentSource'
        networkTransactionId:
          type: string
          description: >-
            Network transaction id provided by the card network. Applicable only
            for cards.
          example: '721107212171711'
    PaymentInfo:
      type: object
      title: PaymentInfo
      description: Payment information.
      required:
        - card
      properties:
        applicableTo:
          type: array
          items:
            type: string
            enum:
              - UNKNOWN_APPLICABLE_TO
              - AIR
              - HOTEL
              - RAIL
              - CAR
              - SERVICE_FEE
            example: HOTEL
        card:
          $ref: '#/components/schemas/Card'
        accessType:
          $ref: '#/components/schemas/CreditCardAccessType'
        access:
          $ref: '#/components/schemas/CreditCardAccess'
    PaymentInformation:
      type: object
      title: PaymentInformation
      description: Information on how the items have been paid for.
      required:
        - amount
        - paymentMode
        - paymentInstrumentIdentifier
      properties:
        id:
          description: Payment reference ID.
          type: string
          example: sdkljhafisudlls
        transactionTime:
          description: Transaction timestamp.
          $ref: '#/components/schemas/DateTimeOffset'
        amount:
          description: Amount paid.
          $ref: '#/components/schemas/Money'
        paymentMode:
          description: Mode of Payment shown on invoice.
          type: string
          enum:
            - CREDIT_CARD
            - ON_ACCOUNT
            - DIRECT
            - EXCHANGE
            - BREX_POINTS
            - CASH
            - QANTAS_POINTS
            - VENDOR_PROGRAM_PAYMENT
            - AMADEUS_CHECKOUT
            - PREVIOUS_BOOKING_VALUE
            - FLIGHT_CREDITS
            - QANTAS_TRAVEL_FUND
          example: CREDIT_CARD
        paymentInstrumentIdentifier:
          description: >-
            An identifier for the payment instrument used. For example, last
            four credit card number digits in case a credit card was used.
          type: string
          example: '**2343'
        actualPayment:
          description: Details of how payment was done
          $ref: '#/components/schemas/ActualPayment'
        exchangePayment:
          description: Details of how payment was done
          $ref: '#/components/schemas/ExchangePayment'
    PaymentInstruction:
      type: object
      title: PaymentInstruction
      description: Payment instruction
      required:
        - id
        - displayText
        - checkoutText
      properties:
        id:
          type: string
          format: uuid
          description: Id corresponding to the payment instruction
          example: f49d00fe-1eda-4304-ba79-a980f565281d
        displayText:
          type: string
          description: Display text corresponding to the payment instruction
          example: Room and tax only
        checkoutText:
          type: string
          description: Payment instruction text to display during checkout workflow
          example: Room and tax only
    PaymentMetadata:
      title: PaymentMetadata
      description: Payment metadata related to form of payment
      type: object
      properties:
        customPaymentMethodMetadata:
          type: object
          description: Metadata related to custom payment method
          properties:
            brexBudgetMetadata:
              type: object
              description: Metadata for Brex Budget
              properties:
                budgetName:
                  type: string
                  description: Name of the budget
                  example: Travel budget
                paidByPersonalCard:
                  type: boolean
                  description: Whether it was paid by budget card or personal card
                  example: false
        vendorProgramPaymentMetadata:
          $ref: '#/components/schemas/VendorProgramPaymentMetadata2'
        virtualCardMetadata:
          $ref: '#/components/schemas/VirtualCardPaymentMetadata'
        cardMetadata:
          $ref: '#/components/schemas/CardMetadata2'
    PaymentMethod:
      type: string
      description: Payment method
      enum:
        - PAYMENT_METHOD_UNKNOWN
        - CREDIT_CARD
        - BREX_POINTS
        - CASH
        - QANTAS_POINTS
        - VENDOR_PROGRAM_PAYMENT
        - DELAYED_INVOICING
        - FLIGHT_CREDITS
        - QANTAS_TRAVEL_FUND
      example: BREX_POINTS
    PaymentSourceMetadata:
      type: object
      title: PaymentSourceMetadata
      description: Metadata corresponding to the payment source.
      oneOf:
        - $ref: '#/components/schemas/CardMetadataWrapper'
        - $ref: '#/components/schemas/VirtualCardMetadataWrapper'
        - $ref: '#/components/schemas/RewardsProgramMetadataWrapper'
        - $ref: '#/components/schemas/CustomPaymentMethodMetadataWrapper'
        - $ref: '#/components/schemas/VendorProgramPaymentDescriptorWrapper'
    PaymentSourceType:
      type: string
      description: Type of Payment Source
      enum:
        - CARD
        - VIRTUAL_CARD
        - REWARDS_PROGRAM
        - DELAYED_INVOICING
        - CUSTOM_PAYMENT_METHOD
        - VENDOR_PROGRAM_PAYMENT
        - UNUSED_CREDIT
        - CASH
    PaymentTransactionInfo:
      title: PaymentTransactionInfo
      type: object
      description: Payment transaction information
      properties:
        paymentReference:
          type: string
          description: Payment transaction reference
          example: pi_2PAlaAIE$aaaaAaA0bLqk9AI
        networkTransactionId:
          type: string
          description: >-
            Network transaction id provided by the card network. Applicable only
            for cards.
          example: '721107212171711'
        gatewayInfo:
          $ref: '#/components/schemas/GatewayInfo'
        failureReason:
          $ref: '#/components/schemas/FailureReason'
    PercentageWrapper:
      type: object
      title: PercentageWrapper
      properties:
        percentage:
          type: number
          format: double
    Persona:
      type: string
      title: Persona
      description: Persona of the user
      enum:
        - UNKNOWN_PERSONA
        - EMPLOYEE
        - GUEST
        - PERSONAL
        - RELATIVE
        - ADHOC
      example: EMPLOYEE
    PersonaListWrapper:
      type: object
      title: PersonaListWrapper
      properties:
        personaList:
          type: array
          items:
            $ref: '#/components/schemas/Persona'
    PersonaWrapper:
      type: object
      title: PersonaWrapper
      properties:
        persona:
          $ref: '#/components/schemas/Persona'
    PhoneNumber:
      type: object
      title: PhoneNumber
      description: Properly formatted phone number.
      properties:
        countryCode:
          type: integer
          format: int32
          description: two digit country code
          example: 91
        countryCodeSource:
          type: string
          enum:
            - UNSPECIFIED
            - FROM_NUMBER_WITH_PLUS_SIGN
            - FROM_NUMBER_WITH_IDD
            - FROM_NUMBER_WITHOUT_PLUS_SIGN
            - FROM_DEFAULT_COUNTRY
          example: FROM_NUMBER_WITH_PLUS_SIGN
        extension:
          description: phone number extension
          type: string
          example: '222'
        isoCountryCode:
          description: ISO alpha-2 code
          type: string
          example: IN
        italianLeadingZero:
          type: boolean
          default: false
          example: true
        nationalNumber:
          type: integer
          format: int64
          example: 8150
        numberOfLeadingZeros:
          type: integer
          format: int32
          default: 0
          example: 1
        preferredDomesticCarrierCode:
          type: string
          example: '7'
        rawInput:
          type: string
          example: '77777'
        type:
          type: string
          enum:
            - UNKNOWN_TYPE
            - MOBILE
            - LANDLINE
          example: MOBILE
    PnrBookingStatus:
      type: string
      description: User facing status for this booking
      enum:
        - PENDING
        - CONFIRMED
        - ACTIVE
        - COMPLETED
        - CANCELLED
        - REFUNDED
        - VOIDED
        - PROCESSING
        - UNCONFIRMED
        - AIRLINE_CONTROL
        - PAYMENT_DECLINED
        - SCHEDULE_CHANGE
        - UNKNOWN
        - HOLD
        - APPROVAL_REQUESTED
        - APPROVAL_DENIED
        - CANCELLATION_IN_PROGRESS
        - INOPERATIVE_STATUS
        - FLIGHT_UNCONFIRMED_STATUS
      example: CONFIRMED
    PnrCancelRequest:
      title: PnrCancelRequest
      type: object
      description: Request to cancel a PNR or part of PNR object.
      required:
        - cancelType
        - cancelDetails
      properties:
        cancellationType:
          type: string
          enum:
            - NO_REFUND
            - FULL_REFUND
            - PARTIAL_REFUND
            - FULL_CREDIT
          description: >
            Type of cancellation to be performed. For the NO_REFUND, FULL_REFUND
            and

            FULL_CREDIT cancellation types, if no cancellationDetails are
            provided, we assume the

            entire PNR is being canceled. If the cancellation type is
            FULL_CREDIT, we will also

            assume the credits created will have 0 penalty and an expiry date of
            1 year from the

            issue date of the ticket.
          example: FULL_REFUND
        cancellationDetails:
          type: array
          description: List of object to be cancelled and their associated refund details.
          items:
            $ref: '#/components/schemas/CancelDetail'
        bookingEmailInfo:
          type: object
          description: >-
            Information passed to the Spotnana email system that processes
            booking updates.
          properties:
            disableEmail:
              type: boolean
              description: Whether an email should be sent to travelers.
              example: true
    PnrCancellationDetails:
      type: object
      title: PnrCancellationDetails
      description: Cancellation details for a booking.
      required:
        - pnrId
        - tripId
      properties:
        pnrId:
          type: string
          description: PNR ID for the booking.
          example: '1234567890'
        tripId:
          type: string
          description: Trip ID for the booking.
          example: '2345678901'
        cancellationDetails:
          description: Cancellation details for this booking.
          $ref: '#/components/schemas/CancellationDetails'
    PnrCreationDetails:
      title: PnrCreationDetails
      type: object
      description: Information about pnr creation
      properties:
        requestedByDetails:
          $ref: '#/components/schemas/RequestedByDetails'
    PnrData:
      title: PnrData
      type: object
      description: >
        Pnr data with all information about a single booking containing one of
        Air, Hotel,

        Car, Rail, Limo or Miscellaneous PNR.
      properties:
        version:
          type: integer
          format: int32
          description: >
            Current PNR version. This field is used for handling conflicts in
            case of concurrent 

            updates. This should be sent unmodified in update request.
          example: 1
        createdVia:
          $ref: '#/components/schemas/CreatedVia'
        initialVersionCreatedVia:
          $ref: '#/components/schemas/CreatedVia'
        sourceInfo:
          $ref: '#/components/schemas/SourceInfo'
        invoiceDelayedBooking:
          type: boolean
          description: True if the billing is delayed
          example: false
        travelers:
          type: array
          deprecated: true
          items:
            $ref: '#/components/schemas/Traveler'
          minItems: 1
        pnrTravelers:
          description: >-
            List of travelers on this pnr and their information. This is a
            required field.
          type: array
          items:
            $ref: '#/components/schemas/PnrTraveler'
          minItems: 1
        costOfGoodsSold:
          $ref: '#/components/schemas/COGS'
        costToCustomer:
          $ref: '#/components/schemas/CTC'
        isFinalized:
          type: boolean
          readOnly: true
          description: Indicates if finalize action has been performed on the pnr.
          example: false
        policyInfo:
          description: Policy related info for this booking
          $ref: '#/components/schemas/PolicyInfo'
        airPnr:
          $ref: '#/components/schemas/Air'
          description: Air booking information
        hotelPnr:
          $ref: '#/components/schemas/Hotel'
          description: Hotel booking information
        carPnr:
          $ref: '#/components/schemas/Car'
          description: Car booking information
        railPnr:
          $ref: '#/components/schemas/Rail'
          description: Rail booking information
        limoPnr:
          $ref: '#/components/schemas/LimoInfo'
          description: Limo booking information
        miscPnr:
          $ref: '#/components/schemas/MiscInfo'
          description: Miscellaneous booking information
        additionalMetadata:
          type: object
          description: Any addtional metadata associated with the booking
          properties:
            airportInfo:
              type: array
              readOnly: true
              items:
                $ref: '#/components/schemas/AirportInfo'
            airlineInfo:
              type: array
              readOnly: true
              items:
                $ref: '#/components/schemas/AirlineInfo'
        preBookAnswers:
          description: The per booking answers collected from the traveler during checkout.
          $ref: '#/components/schemas/PreBookAnswers'
        customFields:
          type: array
          description: List of all the Custom Fields associated with this Pnr
          items:
            $ref: '#/components/schemas/CustomField'
        bookingHistory:
          type: array
          description: Change Log associated with a PNR/Booking
          readOnly: true
          items:
            $ref: '#/components/schemas/BookingHistory'
        totalFare:
          description: >
            The total fare of the PNR inclusive of various components, for
            example: Flights, Seats, 

            Service fee for an Air Pnr; Hotel rooms, Hotel fee, Service for a
            Hotel PNR. Service fee is included only when show trip fee to
            traveler is enabled in service fee settings.
          readOnly: true
          $ref: '#/components/schemas/Money'
        serviceFees:
          type: array
          description: The service fees associated with this pnr.
          readOnly: true
          items:
            $ref: '#/components/schemas/ServiceFee'
        paymentInfo:
          type: array
          description: FOP fare breakup for all payments
          readOnly: true
          items:
            type: object
            title: PaymentInfo
            required:
              - fop
              - totalCharge
            properties:
              fop:
                description: Form of payment
                $ref: '#/components/schemas/FormOfPayment'
              totalCharge:
                description: Total charge for this FOP
                $ref: '#/components/schemas/Money'
              totalRefund:
                description: Total refund for this FOP
                $ref: '#/components/schemas/Money'
              netCharge:
                description: Total charge - total refund
                $ref: '#/components/schemas/Money'
        bookingStatus:
          readOnly: true
          description: User facing status for this booking.
          $ref: '#/components/schemas/UserFacingStatus'
        contactSupport:
          type: boolean
          readOnly: true
          description: >
            Set to true if there might be an issue in the PNR for which the user
            should be warned to

            contact TMC support.
          example: false
        travelerPnrVisibilityStatus:
          type: string
          description: >-
            Represents the PNR visibility status, if marked as HIDDEN should not
            be displayed to the traveler
          enum:
            - VISIBLE
            - HIDDEN
        shellPnrInfo:
          $ref: '#/components/schemas/ShellPnrInfo'
        pnrCreationDetails:
          $ref: '#/components/schemas/PnrCreationDetails'
        approvalInfo:
          type: array
          description: Approval related information for the PNR
          items:
            $ref: '#/components/schemas/ApprovalInfo'
        cancellationRequestStatus:
          $ref: '#/components/schemas/CancellationRequestStatus'
        externalInfo:
          type: object
          description: PNR related external information
          properties:
            externalPnrId:
              type: string
              description: External Pnr ID
              example: A2345
            externalPnrVersion:
              type: integer
              description: External Pnr Version
              example: 1
            externalUrlMetadata:
              type: string
              description: External url information to be attached for pnr
              example: exchange=a,cancel=b
        tripId:
          type: string
          description: Spotnana trip ID to which the PNR belongs to
          example: '123456789'
        documents:
          type: array
          readOnly: true
          items:
            $ref: '#/components/schemas/Document'
        freshnessInfo:
          readOnly: true
          $ref: '#/components/schemas/FreshnessInfo'
        bookingEmailInfo:
          type: object
          description: >-
            Information passed to the Spotnana email system that processes
            booking updates.
          properties:
            disableEmail:
              type: boolean
              description: Whether an email should be sent to travelers.
              example: true
        llfPnrInfo:
          $ref: '#/components/schemas/LLFPnrInfo'
        pnrId:
          type: string
          description: Spotnana PNR ID
          example: '123456789'
        invoiceInfos:
          type: array
          description: Invoice related information for the PNR
          items:
            $ref: '#/components/schemas/InvoiceInfo'
        totalFareAmount:
          description: >-
            Total fare amount of the PNR comprising components such as base fare
            and taxes. This field does not include any Service fees.
          $ref: '#/components/schemas/FareAmount'
        dkNumber:
          type: string
          description: DK number attached to the PNR.
          example: '123456789'
        savingsFare:
          deprecated: true
          $ref: '#/components/schemas/SavingsFare'
        tripUsageMetadata:
          $ref: '#/components/schemas/TripUsageMetadata'
    PnrDetailsResponseWithId:
      title: PnrDetailsResponseWithId
      type: object
      properties:
        pnrId:
          type: string
          description: Unique PNR ID
          example: '6926658168'
        data:
          $ref: '#/components/schemas/PnrData'
    PnrInfo:
      title: PnrInfo
      description: Pnr Level info
      type: object
      required:
        - pnrId
      properties:
        pnrId:
          type: string
          description: Pnr ID
          example: '6789533589'
        customFields:
          type: array
          items:
            $ref: '#/components/schemas/CustomField'
    PnrMetadata:
      title: PnrMetadata
      description: Metadata when document is associated to pnr entity.
      type: object
      oneOf:
        - $ref: '#/components/schemas/FlightMetadataWrapper'
        - $ref: '#/components/schemas/LegMetadataWrapper'
    PnrMetadataWrapper:
      type: object
      title: PnrMetadataWrapper
      required:
        - travelType
      properties:
        pnrMetadata:
          $ref: '#/components/schemas/PnrMetadata'
        invoiceMetadata:
          type: object
          title: InvoiceMetadata
          description: Metadata associated with an invoice document.
          required:
            - invoiceNumber
          properties:
            invoiceNumber:
              type: string
              example: SPOT-0001
        travelType:
          $ref: '#/components/schemas/TravelType'
    PnrPolicyId:
      title: PnrPolicyId
      description: Pnr Policy id
      type: object
      required:
        - id
        - version
      properties:
        id:
          type: string
          description: Policy id
        version:
          type: string
          description: version of the policy
        policyName:
          type: string
          description: Name of the policy applied.
        approvalType:
          type: string
          enum:
            - HARD_APPROVAL
            - SOFT_APPROVAL
            - PASSIVE_APPROVAL
          example: SOFT_APPROVAL
        policyType:
          type: string
          enum:
            - GLOBAL
            - DEFAULT
            - GROUP
          example: GLOBAL
    PnrPolicyInfo:
      title: PnrPolicyInfo
      description: Policy Info applicable for the associated itinerary
      type: object
      properties:
        policies:
          type: array
          description: List of policies applied to the itinerary.
          items:
            $ref: '#/components/schemas/PnrPolicyId'
        ruleResultInfos:
          type: array
          items:
            $ref: '#/components/schemas/PolicyRuleResultInfo'
    PnrResponseOnExternalId:
      required:
        - pnrId
        - tripId
      properties:
        pnrId:
          type: string
          description: Spotnana PNR Id mapped with external Id
          example: '1234567890'
        tripId:
          type: string
          description: Spotnana trip Id mapped with external Id
          example: '1234567890'
    PnrStatus:
      title: PnrStatus
      type: string
      enum:
        - UNKNOWN
        - INITIATED
        - CANCELLED
        - CONFIRMED
        - GROUP_BOOKING_ON_REQUEST
        - WAITLISTED
        - PENDING
        - AIRLINE_UPGRADE
        - WAITLIST_CONFIRMED
        - BOOKING_DENIED_CONTACT_SUPPORT
        - NO_SHOW
        - CONTACT_SUPPORT
        - STATUS_CHANGED_CONTACT_SUPPORT
        - SCHEDULE_CHANGE
        - SEGMENT_REQUEST
        - SCHEDULE_CHANGE_WAITLISTED_BOOKING
        - REQUEST_PENDING
        - WAITLISTED_NOT_CONFIRMED
        - SCHEDULE_CHANGE_NOT_CONFIRMED
        - SCHEDULE_CHANGE_PENDING_STATUS
        - MIS_CONNECTION
        - REQUESTED
        - TICKETED
        - VOIDED
        - CANCELLED_BY_VENDOR
        - CANCELLATION_IN_PROGRESS
        - REINSTATED
        - BOOKING_ON_HOLD
        - AIRLINE_CONTROL
        - MODIFIED
        - PAYMENT_DECLINED
        - INOPERATIVE
        - UNCONFIRMED
      description: Status of PNR
      example: CONFIRMED
    PnrTaxBreakdown:
      type: object
      description: Tax breakdown information for this ticket
      required:
        - tax
      properties:
        tax:
          type: array
          description: List of taxes for this ticket
          items:
            type: object
            title: Tax
            required:
              - amount
              - taxCode
            properties:
              amount:
                $ref: '#/components/schemas/Money'
                description: Tax amount
              taxCode:
                type: string
                description: Tax code
    PnrTraveler:
      type: object
      title: PnrTraveler
      required:
        - userId
      properties:
        userId:
          $ref: '#/components/schemas/UserId'
          description: User ID for this traveler
        travelerInfo:
          $ref: '#/components/schemas/TravelerInfoResponse'
          description: Traveler info for this traveler
        personalInfo:
          $ref: '#/components/schemas/UserPersonalInfo'
          description: Personal info like name, email for this traveler
        loyalties:
          type: array
          items:
            $ref: '#/components/schemas/LoyaltyInfo'
        persona:
          $ref: '#/components/schemas/Persona'
        businessInfo:
          $ref: '#/components/schemas/TravelerBusinessInfo'
    PointsBalance:
      type: object
      title: PointsBalance
      description: Point type and balance
      required:
        - amount
        - pointType
      properties:
        amount:
          type: number
          format: double
          description: Points balance
          example: 10
        pointType:
          type: string
          description: Point type. Valid type is BREX_POINT_TYPE
          example: BREX_POINT_TYPE
    PolicyAction:
      type: object
      description: Action that is required / done for policy.
      oneOf:
        - $ref: '#/components/schemas/PolicyFlagActionWrapper'
        - $ref: '#/components/schemas/PolicyHideActionWrapper'
        - $ref: '#/components/schemas/PolicyAlertOnSelectionActionWrapper'
        - $ref: '#/components/schemas/PolicyTakeApprovalActionWrapper'
        - $ref: '#/components/schemas/PolicyPreventBookingActionWrapper'
    PolicyAlertOnSelectionAction:
      type: object
      title: PolicyAlertOnSelectionAction
      properties:
        message:
          type: string
    PolicyAlertOnSelectionActionWrapper:
      type: object
      title: PolicyAlertOnSelectionActionWrapper
      properties:
        alertOnSelection:
          $ref: '#/components/schemas/PolicyAlertOnSelectionAction'
    PolicyConstValue:
      type: object
      oneOf:
        - $ref: '#/components/schemas/Int32Wrapper'
        - $ref: '#/components/schemas/Int64Wrapper'
        - $ref: '#/components/schemas/StringWrapper'
        - $ref: '#/components/schemas/DoubleWrapper'
        - $ref: '#/components/schemas/BoolWrapper'
        - $ref: '#/components/schemas/IntListWrapper'
        - $ref: '#/components/schemas/DoubleListWrapper'
        - $ref: '#/components/schemas/StringListWrapper'
        - $ref: '#/components/schemas/MoneyWrapper'
        - $ref: '#/components/schemas/LengthWrapper'
        - $ref: '#/components/schemas/PostalAddressWrapper'
        - $ref: '#/components/schemas/UserOrgIdWrapper'
        - $ref: '#/components/schemas/LegalEntityIdWrapper'
        - $ref: '#/components/schemas/OfficeIdWrapper'
        - $ref: '#/components/schemas/UserOrgIdListWrapper'
        - $ref: '#/components/schemas/LegalEntityIdListWrapper'
        - $ref: '#/components/schemas/OfficeIdListWrapper'
        - $ref: '#/components/schemas/RatingWrapper'
        - $ref: '#/components/schemas/PercentageWrapper'
        - $ref: '#/components/schemas/Int32RangeWrapper'
        - $ref: '#/components/schemas/DoubleRangeWrapper'
        - $ref: '#/components/schemas/PersonaWrapper'
        - $ref: '#/components/schemas/PersonaListWrapper'
        - $ref: '#/components/schemas/TravelClassHierarchyWrapper'
        - $ref: '#/components/schemas/KeywordWithReasonListWrapper'
        - $ref: '#/components/schemas/WorkerTypeWrapper'
        - $ref: '#/components/schemas/WorkerTypeListWrapper'
    PolicyFlagAction:
      type: object
      title: PolicyFlagAction
      properties:
        message:
          type: string
    PolicyFlagActionWrapper:
      type: object
      title: PolicyFlagActionWrapper
      properties:
        flag:
          $ref: '#/components/schemas/PolicyFlagAction'
    PolicyHideActionWrapper:
      type: object
      title: PolicyHideActionWrapper
      properties:
        hide:
          type: boolean
    PolicyInfo:
      type: object
      title: PolicyInfo
      description: Policy related info for this booking
      required:
        - outOfPolicy
      properties:
        outOfPolicy:
          type: boolean
          description: True if the booking is out of policy, else false
          example: false
        approverName:
          description: The name of the approver. Required if out of policy is true
          $ref: '#/components/schemas/Name'
        reasonCode:
          description: Reason code for booking out of policy
          $ref: '#/components/schemas/PreDefinedAnswers'
        reason:
          type: string
          description: Free form text if selected reason code is OTHER
          example: Business class cheaper than economy
        appliedPolicyInfo:
          description: >
            Information related to policies and results of those evaluation on
            this pnr
          $ref: '#/components/schemas/PnrPolicyInfo'
    PolicyPredicate:
      type: string
      description: This contains the enum mentioning the policy rule which was violated.
      enum:
        - UNKNOWN_PREDICATE_STRING
        - MAX_FARE_PER_TRAVELLER_VIOLATION
        - FARE_MORE_THAN_MINIMUM
        - FARE_MORE_THAN_MEDIAN
        - FARE_LESS_THAN_MEDIAN
        - FARE_MORE_THAN_LLF
        - MAX_FARE_PER_TRAVELLER_VIOLATION_INCLUDING_TAX
        - MAX_FARE_PER_TRAVELLER_VIOLATION_EXCLUDING_TAX
        - HOTEL_PAYMENT_OPTIONS_VIOLATION
        - RAIL_BOOKING_WINDOW_GAP_VIOLATION
        - RAIL_TRAVEL_CLASS_VIOLATION
        - RAIL_TICKET_REFUNDABLE_VIOLATION
        - RAIL_MAX_BOOKING_PRICE_VIOLATION_INCLUDING_TAX
        - RAIL_MAX_BOOKING_PRICE_VIOLATION_EXCLUDING_TAX
        - AIR_MAX_PRICE_MORE_THAN_LLF_VIOLATION_INCLUDING_TAX
        - AIR_MAX_PRICE_MORE_THAN_LLF_VIOLATION_EXCLUDING_TAX
        - HOTEL_RESTRICTED_KEYWORDS_VIOLATION
        - RESTRICTED_LOCATION_VIOLATION
        - FLIGHT_ADVANCE_BOOKING_WINDOW_DOMESTIC_VIOLATION
        - FLIGHT_ADVANCE_BOOKING_WINDOW_INTERNATIONAL_VIOLATION
        - FLIGHT_ADVANCE_BOOKING_WINDOW_VIOLATION
        - ITINERARY_WITHIN_EVENT_TRAVEL_WINDOW
        - HOTEL_IN_ALLOWED_HOTEL_LIST
        - PAYMENT_ACCESS_VIOLATION
        - AIRPORT_IN_ALLOWED_AIRPORT_LIST
        - ITINERARY_TYPE_IS_NOT_IN_ALLOWED_BOOKING_TYPES
        - PAYMENT_AIR_ADDON_VIOLATION
        - MAX_HOTEL_BOOKING_PRICE_INCLUDING_TAX
        - MAX_HOTEL_BOOKING_PRICE_EXCLUDING_TAX
        - AIR_NUM_TRAVELERS_ALLOWED
        - PREFERRED_VENDOR_VIOLATION
        - SEAT_ADDON_VIOLATION
        - BAGGAGE_ADDON_VIOLATION
        - EARLY_BIRD_ADDON_VIOLATION
        - WIFI_ADDON_VIOLATION
        - RESTRICTED_BOOKING_VIOLATION
        - HIGHEST_ALLOWED_CABIN_VIOLATION
    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.
    PolicyPreventBookingActionWrapper:
      type: object
      title: PolicyPreventBookingActionWrapper
      properties:
        preventBooking:
          $ref: '#/components/schemas/PolicyPreventBookingAction'
    PolicyRuleResultInfo:
      type: object
      properties:
        violationInfos:
          type: array
          items:
            $ref: '#/components/schemas/PolicyViolationInfo'
        subViolationInfos:
          type: array
          description: >
            In case of complex rules this will contain extra information as to
            how the rule was 

            calculated.
          items:
            $ref: '#/components/schemas/PolicyViolationInfo'
        actions:
          type: array
          description: Followed actions if rule was satisfied else violated actions.
          items:
            $ref: '#/components/schemas/PolicyAction'
    PolicyTakeApprovalAction:
      type: object
      title: PolicyTakeApprovalAction
      properties:
        numHierarchyLevels:
          type: integer
          format: int32
          description: >
            How many levels of hierarchy should approval be taken? If it's just
            immediate manager, 

            this value would be 1. If it's manager and their manager, this would
            ge 2 and so on.
        positionTitles:
          type: array
          description: >
            What position in the cost center or department. For eg, any business
            class upgrade 

            might require VP approval.
          items:
            type: string
        userOrgIds:
          type: array
          description: >
            The specific users from whom to take approval. For eg, say for a
            company, all approvals

            go through Adam.
          items:
            $ref: '#/components/schemas/UserOrgId'
        allRequired:
          type: boolean
          description: >
            This tells whether all the people above needs to approve or if any
            of these approve, 

            it is sufficient.
        hardApprovalRequired:
          type: boolean
          description: Whether to take soft approval (false) or hard approval (true).
    PolicyTakeApprovalActionWrapper:
      type: object
      title: PolicyTakeApprovalActionWrapper
      properties:
        takeApproval:
          $ref: '#/components/schemas/PolicyTakeApprovalAction'
    PolicyViolationInfo:
      type: object
      description: Policy Violation info.
      title: PolicyViolationInfo
      properties:
        predicateString:
          type: string
        predicate:
          $ref: '#/components/schemas/PolicyPredicate'
        expectedValue:
          $ref: '#/components/schemas/PolicyConstValue'
        actualValue:
          $ref: '#/components/schemas/PolicyConstValue'
    PostalAddress:
      title: PostalAddress
      description: Postal Address Details
      type: object
      required:
        - addressLines
        - regionCode
      properties:
        addressLines:
          description: Address lines
          type: array
          items:
            type: string
            example: Golden Gate Bridge
        administrativeArea:
          type: string
          description: >
            Code of administrative area. For example: DL for Delhi, India.

            Highest administrative subdivision which is used for postal

            addresses of a country or region.

            For example, this can be a state, a province, an oblast, or a
            prefecture.

            Specifically, for Spain this is the province and not the autonomous

            community (e.g. "Barcelona" and not "Catalonia").

            Many countries don't use an administrative area in postal addresses.
            E.g.

            in Switzerland this should be left unpopulated.
          example: CA
        administrativeAreaName:
          type: string
          description: >
            Name of administrative area. This is full name corresponding to
            administrativeArea. 

            Like Delhi for DL area code. For some places, code and name maybe
            same as well like Tokyo.
          example: California
        description:
          description: Address description
          type: string
          example: San Francisco Home
        isDefault:
          description: >-
            Whether this address is default address in case multiple addresses
            are specified.
          type: boolean
          example: true
        languageCode:
          description: >
            BCP-47 language code of the contents of this address (if known).
            This is often the UI 

            language of the input form or is expected to match one of the
            languages used in the 

            address' country/region, or their transliterated equivalents.

            This can affect formatting in certain countries, but is not critical
            to the correctness 

            of the data and will never affect any validation or other
            non-formatting related operations.

            Examples: "zh-Hant", "ja", "ja-Latn", "en".
          type: string
          example: en
        locality:
          description: Generally refers to the city/town portion of the address.
          type: string
          example: San Francisco
        locationCode:
          description: >-
            IATA 3-letter location code. See
            https://www.iata.org/en/services/codes.
          type: string
          example: LAX
        organization:
          description: The name of the organization at the address.
          type: string
          example: Spotnana
        postalCode:
          description: >-
            Postal code of the address. This is a required field when setting
            for a user/legal entity/company etc.
          type: string
          example: '94130'
        continentCode:
          description: 2 letter continent code of the continent this address falls in.
          type: string
          example: AF
        recipients:
          description: The recipient at the address.
          type: array
          items:
            type: string
        regionCode:
          description: Region code of the country/region of the address.
          type: string
          example: US
        regionName:
          description: Region name of the country/region of the address.
          type: string
          example: America
        revision:
          type: integer
          format: int32
          example: 1
        sortingCode:
          description: >
            Additional, country-specific, sorting code. This is not used

            in most regions. Where it is used, the value is either a string like

            "CEDEX", optionally followed by a number (e.g. "CEDEX 7"), or just a
            number

            alone, representing the "sector code" (Jamaica), "delivery area
            indicator"

            (Malawi) or "post office indicator" (e.g. Côte d'Ivoire).
          type: string
          example: Jamaica
        sublocality:
          description: >-
            Sublocality of the address. This can be neighborhoods, boroughs,
            districts.
          type: string
        timezone:
          description: Time zone of the address.
          type: string
          example: America/Los_Angeles
        coordinates:
          description: Map coordinates of the address.
          $ref: '#/components/schemas/Latlng'
    PostalAddressWrapper:
      type: object
      title: PostalAddressWrapper
      properties:
        postalAddress:
          $ref: '#/components/schemas/PostalAddress'
    PreBookAnswers:
      type: object
      properties:
        answers:
          type: array
          items:
            $ref: '#/components/schemas/EntityAnswer'
        preBookQuestionResponseId:
          type: string
          description: The unique id sent back in the pre book questions API response
    PreCheckoutQuestionType:
      type: string
      enum:
        - UNKNOWN_CHECKOUT_QUESTION_TYPE
        - USER_DEFINED_QUESTION
        - OOP_REASON_CODE
      description: >
        Types of pre-checkout questions.

        USER_DEFINED_QUESTION the default question type for all pre checkout
        questions which have been created from UI.

        OOP_REASON_CODE is kept separate so that existing OOP flow doesn't
        break.
      example: OOP_REASON_CODE
    PreDefinedAnswers:
      type: string
      enum:
        - UNKNOWN_CHECKOUT_ANSWER_TYPE
        - OTHER
        - TIMING_OR_SCHEDULING
        - AIRLINE_PREFERENCE
        - AIRPORT_PREFERENCE
        - MILEAGE_OR_PROGRAM_UPGRADE
        - NO_OTHER_OPTION_AVAILABLE
        - FASTER_OPTION
        - NO_ANSWER
        - NOT_AVAILABLE
      description: Predefined answers to pre search/pre checkout questions
      example: TIMING_OR_SCHEDULING
    PreSearchQuestionType:
      type: string
      enum:
        - UNKNOWN_SEARCH_QUESTION_TYPE
        - PURPOSE_OF_TRIP
      description: >
        Types of pre-search questions.

        PURPOSE_OF_TRIP required to ask purpose of the trip user is going to.
        For example: meeting, training, interview.
      example: PURPOSE_OF_TRIP
    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.
    PreferredAirport:
      type: object
      title: PreferredAirport
      description: Airport preferred by traveler.
      required:
        - airportCode
        - label
      properties:
        airportName:
          type: string
          description: Airport name.
          example: San Francisco International Airport
        airportCode:
          type: string
          description: IATA airport code.
          example: SFO
        label:
          $ref: '#/components/schemas/PreferredLocationLabel'
    PreferredLocationLabel:
      type: string
      title: PreferredLocationLabel
      description: The label of preferred airport or rail station.
      enum:
        - HOME
        - WORK
        - OTHER
      example: HOME
    PreferredPronoun:
      title: PreferredPronoun
      type: string
      enum:
        - SHE_HER_HERS
        - HE_HIM_HIS
        - THEY_THEM_THEIRS
      example: SHE_HER_HERS
    PreferredRailStation:
      type: object
      title: PreferredRailStation
      description: Rail station preferred by traveler.
      required:
        - stationCode
        - label
      properties:
        stationName:
          type: string
          description: Rail station name.
          example: Chicago Union Station
        stationCode:
          type: string
          description: Rail station code.
          example: CHI
        cityName:
          type: string
          description: Name of city where the rail station is located.
          example: Chicago
        countryCode:
          type: string
          description: Alpha-2 country code where the rail station is located.
        label:
          $ref: '#/components/schemas/PreferredLocationLabel'
    PreferredType:
      title: PreferredType
      type: string
      description: Preference type.
      enum:
        - NOT_PREFERRED
        - COMPANY_PREFERRED
        - SPOTTERS_CHOICE
        - COMPANY_BLOCKED
        - TMC_PREFERRED
    PrimaryServiceProviderTmc:
      type: object
      title: PrimaryServiceProviderTmc
      description: Primary service provider TMC info
      required:
        - tmcId
      properties:
        tmcId:
          $ref: '#/components/schemas/CompanyId'
          description: Id of the service provider TMC.
    ProcessPnrApprovalRequest:
      type: object
      title: ProcessPnrApprovalRequest
      description: Process Approval request for a PNR.
      required:
        - approvalType
      properties:
        approvalId:
          type: string
          description: Serialised Id containing approval related info
          example: test-approval-id
        approvalType:
          type: string
          description: Approval response APPROVED or DECLINED
          enum:
            - APPROVED
            - DECLINED
          example: APPROVED
    ProductType:
      description: Type of product being invoiced
      type: string
      enum:
        - PNR
        - SERVICE_FEE
      example: PNR
    ProfileOwner:
      type: object
      title: ProfileOwner
      description: Basic information about the owner of the ad-hoc user.
      required:
        - userId
      properties:
        userId:
          $ref: '#/components/schemas/UserId'
    ProgramDetails:
      type: object
      title: ProgramDetails
      description: Descriptor for programs details.
      required:
        - uscId
        - tourCode
        - snapCode
      properties:
        uscId:
          type: string
          description: Contract Id between vendor and the client.
        tourCode:
          type: string
          description: >-
            Tracking code to know which company has booked the ticket, it is
            added to the price quote and ticket.
        snapCode:
          type: string
          description: Discount code.
    QantasTravelFundMetadata:
      type: object
      title: QantasTravelFundMetadata
      description: Metadata for Qantas Travel Fund payment source.
      required:
        - label
        - fundBalance
      properties:
        label:
          type: string
          example: QANTAS_TRAVEL_FUND
          description: Label for the Qantas Travel Fund.
        fundBalance:
          $ref: '#/components/schemas/Money'
          description: Balance of the travel fund wallet.
    QantasTravelFundMetadataWrapper:
      type: object
      title: QantasTravelFundMetadataWrapper
      description: Wrapper for QantasTravelFundMetadata
      required:
        - qantasTravelFundMetadata
      properties:
        qantasTravelFundMetadata:
          $ref: '#/components/schemas/QantasTravelFundMetadata'
    QcFinalizationWrapper:
      type: object
      title: QcFinalizationWrapper
      description: Wrapper for QcFinalization.
      properties:
        qcFinalizeData:
          $ref: '#/components/schemas/QcFinalizeData'
    QcFinalizeData:
      title: QcFinalizeData
      type: object
      description: >-
        Request Object to indicate that all qc tasks have been resolved and
        current pnr is qc compliant
      required:
        - pnrId
      properties:
        pnrId:
          type: string
          example: '0111234567890'
    Question:
      type: object
      title: Question
      description: >-
        The message defines the format of a question which can be asked to a
        user in any kind of workflows.
      required:
        - id
        - name
        - isRequired
        - isDisabled
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          description: >-
            Question display name that the user will see. For eg, 'Choose the
            purpose of your trip'.
        questionFormat:
          $ref: '#/components/schemas/QuestionFormat'
        optionInfo:
          $ref: '#/components/schemas/OptionInfo'
        isRequired:
          type: boolean
          description: Whether its compulsory to answer the question or not.
          default: false
          example: true
        isDisabled:
          type: boolean
          description: >-
            Whether the question is disabled or not. If true, this should not be
            asked.
          default: true
          example: true
        includeInItinerary:
          type: boolean
          description: Whether to include this question in the itinerary related emails.
          default: false
          example: true
          deprecated: true
        customFieldLocations:
          type: array
          items:
            $ref: '#/components/schemas/CustomFieldLocation'
        matchConditions:
          $ref: '#/components/schemas/CustomFieldMatchConditions'
        questionType:
          $ref: '#/components/schemas/QuestionType'
    QuestionFormat:
      type: string
      enum:
        - INPUT_BOX
        - RADIO_BUTTON
        - CHECKBOX
        - CHECKBOX_WITH_PERCENTAGE
      description: >
        Question types. INPUT_BOX will make user enter a free flowing text.

        RADIO_BUTTON will have multiple options, user can select only one.

        CHECKBOX questions contain the possible set of options, from which the
        user can choose multiple options.

        CHECKBOX_WITH_PERCENTAGE is similar to checkbox, with the difference
        being that each option having an additional input field whose values
        must add up to 100.
      example: CHECKBOX
    QuestionType:
      type: object
      title: QuestionType
      description: Question type.
      properties:
        preSearchQuestionType:
          $ref: '#/components/schemas/PreSearchQuestionType'
        preCheckoutQuestionType:
          $ref: '#/components/schemas/PreCheckoutQuestionType'
    Rail:
      title: Rail
      description: Rail PNR information
      required:
        - legInfos
        - outwardJourney
        - rate
        - ticketDetails
        - type
        - vendorConfirmationNumber
      properties:
        inwardJourney:
          $ref: '#/components/schemas/RailPnrJourneyInfo'
          description: Inward Journey.
        legInfos:
          type: array
          description: List of legs covered in the booking.
          items:
            $ref: '#/components/schemas/RailPnrLegInfo'
        outwardJourney:
          $ref: '#/components/schemas/RailPnrJourneyInfo'
          description: Outward Journey.
        rate:
          $ref: '#/components/schemas/Cost'
          description: Rate information of the journey.
        rateMetadata:
          $ref: '#/components/schemas/RateMetadata'
          description: Price Metadata.
        paymentMode:
          type: string
          enum:
            - PRE_PAID
            - PAID_AT_STATION
          example: PRE_PAID
        sections:
          type: array
          description: List of sections covered in the booking.
          items:
            $ref: '#/components/schemas/RailPnrSectionInfo'
        tickets:
          type: array
          description: List of rail tickets.
          items:
            $ref: '#/components/schemas/RailPnrTicket'
        ticketDetails:
          type: array
          items:
            $ref: '#/components/schemas/RailPnrTicketDetail'
        type:
          $ref: '#/components/schemas/RailSearchType'
          description: Journey type.
        vendorConfirmationNumber:
          type: string
          description: Rail confirmation number
          example: ABQTEJ
          deprecated: true
        itineraryId:
          type: string
          description: Itinerary ID
          example: abcde
        ancillaries:
          type: array
          description: Details of the selected ancillaries for the booking.
          items:
            $ref: '#/components/schemas/RailAncillary'
        termsAndConditions:
          $ref: '#/components/schemas/TermsAndConditions'
        exchangeInfo:
          description: Exchange information for rail booking.
          $ref: '#/components/schemas/RailPnrExchangeInfo'
          readOnly: true
        previousItinerary:
          description: Previous itinerary information for rail booking.
          $ref: '#/components/schemas/RailPnrPreviousItinerary'
          readOnly: true
    RailAmenityType:
      type: string
      description: Rail amenity type
      enum:
        - WIFI
        - LUGGAGE_INCLUDED
        - ELECTRICAL_SOCKET
        - CAFE
        - SEAT_DISPLAY
        - NEWSPAPER
        - MEAL
        - QUIET_CAR
        - SEAT_SELECTION
        - LOCAL_TRANSPORT
        - LOUNGE
        - LEATHER_SEATS
        - BICYCLE
        - PET
        - FIRST_CLASS_COMFORT
        - BUSINESS_PREMIER
        - PERSONALIZED_SERVICE
        - BOARDING
        - WHEELCHAIR_ACCESS
        - NURSERY_SPACE
      example: WIFI
    RailAncillary:
      type: object
      title: RailAncillary
      description: Ancillaries for rail.
      required:
        - type
      properties:
        travelCard:
          description: Details of the travel cards.
          $ref: '#/components/schemas/RailTravelCard'
        type:
          description: Type of the ancillary
          type: string
          enum:
            - TRAVEL_CARD
          example: TRAVEL_CARD
    RailBookingGuideline:
      title: RailBookingGuideline
      description: Rail related guidelines
      type: object
      required:
        - arrivalBookingWindow
        - departureBookingWindow
      properties:
        arrivalBookingWindow:
          description: Booking window for rail-in-event.
          $ref: '#/components/schemas/EventBookingWindow'
        departureBookingWindow:
          description: Booking window for rail-out-event.
          $ref: '#/components/schemas/EventBookingWindow'
    RailBookingGuidelineWrapper:
      type: object
      title: RailBookingGuidelineWrapper
      description: Wrapper for RailBookingGuideline
      properties:
        railBookingGuideLine:
          $ref: '#/components/schemas/RailBookingGuideline'
    RailCancellationDetails:
      type: object
      title: RailCancellationDetails
      description: Cancellation details for rail booking.
      properties:
        refundOptions:
          type: array
          description: Refund options for this booking.
          items:
            $ref: '#/components/schemas/RailRefundOption'
    RailCancellationDetailsWrapper:
      type: object
      title: RailCancellationDetailsWrapper
      description: Wrapper for RailCancellationDetails
      properties:
        rail:
          $ref: '#/components/schemas/RailCancellationDetails'
    RailCard:
      type: object
      title: RailCard
      description: Rail card
      required:
        - name
        - spotnanaCode
        - vendor
      properties:
        cardNumber:
          type: string
          description: Number of card
        expiryDate:
          description: Expiry date of the Rail Card.
          $ref: '#/components/schemas/DateModel'
        name:
          type: string
          description: Name of the Rail Card.
          example: Veterans Railcard
        spotnanaCode:
          description: Unique Spotnana code/identifier for Rail Card.
          type: string
          example: VET
        vendor:
          type: string
          description: Vendor Name.
          example: ATOC
    RailCo2EmissionDetails:
      type: object
      title: RailCo2EmissionDetails
      description: CO2 emission info for rail
      required:
        - co2EmissionKilograms
      properties:
        co2EmissionKilograms:
          type: number
          format: double
          description: >-
            CO2 emission for the outward/inward leg in kilograms for a single
            passenger.
          example: 10
        isApproximate:
          type: boolean
          description: Indicates whether the emissions value is approximate or not.
          example: true
    RailDeliveryOption:
      description: Delivery options available.
      type: string
      enum:
        - ELECTRONIC_TICKET
        - KIOSK
      example: ELECTRONIC_TICKET
    RailExchangeType:
      description: Exchange type
      type: string
      enum:
        - AMEND_RESERVATION
        - PAY_THE_DIFFERENCE
        - REBOOK_AND_REFUND
      example: AMEND_RESERVATION
    RailFareComposition:
      type: string
      description: Rail Fare Composition
      enum:
        - THROUGH
        - DIRECT_SPLIT
        - INTERCHANGE_SPLIT
      example: DIRECT_SPLIT
    RailFareDetail:
      type: object
      title: RailFareDetail
      description: Details about this fare.
      required:
        - description
        - name
      properties:
        description:
          type: string
          description: Description about this fare.
          example: >-
            Your journey must be on the date, or the day after the date,
            specified on the ticket.
        name:
          type: string
          description: Name of the Attribute.
          example: VALIDITY
    RailFareType:
      type: object
      title: RailFareType
      description: Type of fare.
      required:
        - description
      properties:
        description:
          type: string
          description: Description of this fare type.
          example: Anytime Return (1st Class)
        fareDetails:
          type: array
          items:
            $ref: '#/components/schemas/RailFareDetail'
        fareSummary:
          type: string
          description: Summary of the fare
          example: Any time of day, return within 1 month.
    RailItemNameMetadata:
      title: RailItemNameMetadata
      type: object
      description: RailItemNameMetadata information.
      required:
        - pnrType
      properties:
        railNameInvoiceMetadata:
          description: RailNameInvoiceMetadata information.
          type: array
          items:
            $ref: '#/components/schemas/RailNameInvoiceMetadata'
        pnrType:
          type: string
          example: RAIL
    RailNameInvoiceMetadata:
      title: RailNameInvoiceMetadata
      type: object
      description: RailMetadata information.
      properties:
        vendor:
          description: Name of the rail.
          type: string
          example: Amtrak
        trainTableId:
          description: Train number.
          type: string
          example: A123
        origin:
          description: Origin of the train.
          type: string
          example: Washington Union Station
        destination:
          description: Destination of the train.
          type: string
          example: South Station
        date:
          description: Date of the journey.
          $ref: '#/components/schemas/DateModel'
        travelClass:
          description: Travel class.
          $ref: '#/components/schemas/RailTravelClass'
          example: FIRST
    RailPnrAmenity:
      type: object
      title: RailPnrAmenity
      description: Amenities for rail.
      required:
        - name
      properties:
        description:
          type: string
          description: Amenity description
          example: Seat Reservation
        name:
          type: string
          description: Amenity name
          example: Seat Reservation
        price:
          description: Price of the amenity
          $ref: '#/components/schemas/Money'
        quantity:
          type: integer
          format: int32
          description: Available/Selected quantity
          example: 1
        type:
          description: Rail Amenity type
          $ref: '#/components/schemas/RailAmenityType'
    RailPnrETicketMetadata:
      type: object
      title: RailPnrETicketMetadata
      description: For ELECTRONIC_TICKET, it contains e-ticket file info.
      required:
        - eticketData
        - type
      properties:
        description:
          type: string
          description: E-ticket file name.
          example: Rail e-ticket
        eticketData:
          type: string
          description: E-ticket data as bytes.
          format: byte
        type:
          $ref: '#/components/schemas/RailTicketType'
          description: Type of ticket.
    RailPnrExchangeInfo:
      type: object
      title: RailPnrExchangeInfo
      description: Exchange information for rail PNR.
      required:
        - exchangeType
      properties:
        exchangeType:
          description: Exchange type.
          $ref: '#/components/schemas/RailExchangeType'
        relatedSectionInfo:
          description: Related section information for the exchanged itinerary.
          $ref: '#/components/schemas/RailPnrRelatedSectionInfo'
    RailPnrFareInfo:
      type: object
      title: RailPnrFareInfo
      description: Information about the rail fare.
      required:
        - fareType
        - fareLegs
      properties:
        destinationInfo:
          description: Fare destination station info.
          $ref: '#/components/schemas/RailStationInfo'
        fareLegs:
          type: array
          items:
            $ref: '#/components/schemas/RailPnrFareLegInfo'
        fareType:
          description: Fare details for this fare.
          $ref: '#/components/schemas/RailFareType'
        originInfo:
          description: Fare origin station info.
          $ref: '#/components/schemas/RailStationInfo'
        rate:
          description: Rate Information of the fare.
          $ref: '#/components/schemas/Cost'
        routeRestriction:
          type: string
          description: Route restrictions for the fare.
          example: Travel is allowed via any permitted route.
    RailPnrFareLegInfo:
      type: object
      title: FarePnrLegInfo
      description: Information about the leg this fare represents.
      required:
        - legIndex
        - travelClass
      properties:
        legIndex:
          type: integer
          format: int32
          description: Index of leg in journey.
          example: 1
        travelClass:
          $ref: '#/components/schemas/RailTravelClass'
          example: FIRST
    RailPnrJourneyInfo:
      type: object
      title: RailPnrJourneyInfo
      description: Journey info
      required:
        - legs
      properties:
        journeyStatus:
          $ref: '#/components/schemas/PnrStatus'
          description: Status of journey.
        legs:
          type: array
          description: List of indexes of legs covered in the journey.
          items:
            type: integer
            format: int32
            example: 0
            minimum: 0
        co2EmissionDetails:
          description: This sets the CO2 emission info for rail.
          $ref: '#/components/schemas/RailCo2EmissionDetails'
        sortingPriority:
          type: integer
          description: Sort order of the rail journey on the trips page
          example: 0
        fareComposition:
          description: Indicates whether the fare is through or split.
          $ref: '#/components/schemas/RailFareComposition'
        userFacingStatus:
          description: User facing status of the journey.
          readOnly: true
          $ref: '#/components/schemas/UserFacingStatus'
    RailPnrLegInfo:
      type: object
      title: RailPnrLegInfo
      description: Leg info
      required:
        - destination
        - fareType
        - origin
        - vehicle
      properties:
        allocatedSpaces:
          type: array
          description: Space allocated for each passenger.
          items:
            type: object
            title: RailAllocatedSpace
            description: Space allocated for a passenger in the rail.
            required:
              - coachNumber
              - travelerIdx
              - seatNumber
            properties:
              coachNumber:
                type: string
                description: Coach Number.
                example: B
              travelerIdx:
                type: integer
                description: Traveler for which the seat belongs.
                format: int32
                example: 0
                minimum: 0
              userId:
                $ref: '#/components/schemas/UserId'
                description: User ID of traveler to which this seat belongs.
              seatNumber:
                type: string
                description: Seat Number.
                example: '32'
              additionalProperties:
                type: array
                description: Additional Properties of allocated seat.
                items:
                  type: string
                  example: Window
        travelerRailInfo:
          type: array
          items:
            $ref: '#/components/schemas/TravelerRailInfo'
        amenities:
          type: array
          description: List of amenities available for the leg.
          items:
            $ref: '#/components/schemas/RailPnrAmenity'
        arriveAt:
          $ref: '#/components/schemas/DateTimeOffset'
          description: Date and time of arrival of the leg.
          deprecated: true
        departAt:
          $ref: '#/components/schemas/DateTimeOffset'
          description: Date and time of departure of the leg.
          deprecated: true
        arriveAtLocal:
          $ref: '#/components/schemas/DateTimeLocal'
          description: >-
            Date and time of arrival of the leg in local time of the arrival
            station.
        departAtLocal:
          $ref: '#/components/schemas/DateTimeLocal'
          description: >-
            Date and time of departure of the leg in local time of the departure
            station.
        destination:
          type: string
          description: Destination station name of the leg.
          example: Liverpool Lime Street
          deprecated: true
        distance:
          description: Distance covered by the leg.
          $ref: '#/components/schemas/Length'
        duration:
          description: Duration of the leg.
          $ref: '#/components/schemas/Duration'
        fareType:
          type: string
          description: Details of fare for this leg.
          example: Anytime Return
        origin:
          description: Originating station name of the leg.
          type: string
          example: London Euston
          deprecated: true
        travelClass:
          $ref: '#/components/schemas/RailTravelClass'
          description: Travel class for the leg.
        vehicle:
          $ref: '#/components/schemas/RailVehicle'
          description: Vehicle used in the leg.
        originInfo:
          description: Information about origin station.
          $ref: '#/components/schemas/RailStationInfo'
        destinationInfo:
          description: Information about destination station.
          $ref: '#/components/schemas/RailStationInfo'
        railFareType:
          description: Captures Cancellation policy and Fair Rules
          $ref: '#/components/schemas/RailFareType'
        ticketNumber:
          type: string
          description: ticket number
          example: '345675333'
        carrierConfirmationNumber:
          type: string
          description: carrier confirmation number for a segment
          example: QP123AF
        seatPreferenceSelection:
          description: Selected Seat Preferences for the leg.
          $ref: '#/components/schemas/RailSeatPreferenceSelection'
        legId:
          description: Leg Id.
          type: string
          example: 9a766905-b5e9-43f7-b985-0738ff692324
        vendorName:
          type: string
          description: Name of the vendor for which current leg is reserved
          example: ATOC
        co2EmissionGramsPerPassenger:
          type: integer
          format: int32
          description: CO2 emission for the current leg in gram for a single passenger.
          example: 10903
    RailPnrPreviousItinerary:
      type: object
      title: RailPnrPreviousItinerary
      description: Previous itinerary information for rail PNR.
      required:
        - type
        - outwardJourney
        - legInfos
        - sections
        - deliveryOption
        - sourceReference
        - rate
      properties:
        type:
          description: Search type of the itinerary.
          $ref: '#/components/schemas/RailSearchType'
        outwardJourney:
          description: Outward journey details.
          $ref: '#/components/schemas/RailPnrJourneyInfo'
        inwardJourney:
          description: Inward journey details.
          $ref: '#/components/schemas/RailPnrJourneyInfo'
        legInfos:
          description: List of legs covered in the booking.
          type: array
          items:
            $ref: '#/components/schemas/RailPnrLegInfo'
        sections:
          description: List of sections covered in the itinerary.
          type: array
          items:
            $ref: '#/components/schemas/RailPnrSectionInfo'
        deliveryOption:
          description: Delivery option of the itinerary.
          $ref: '#/components/schemas/RailDeliveryOption'
        sourceReference:
          description: Source reference of the itinerary.
          type: string
        rate:
          $ref: '#/components/schemas/Cost'
          description: Rate information of the previous itinerary.
    RailPnrRelatedSectionInfo:
      type: object
      title: RailPnrRelatedSectionInfo
      description: Related section information for the exchanged itinerary.
      properties:
        newSectionIndexes:
          type: array
          description: Section indexes of the exchanged itinerary.
          items:
            type: integer
            format: int32
            example: 0
        oldSectionIndexes:
          type: array
          description: Section indexes of the previous itinerary.
          items:
            type: integer
            format: int32
            example: 0
    RailPnrSectionInfo:
      type: object
      title: RailPnrSectionInfo
      description: Information about the rail section.
      required:
        - fares
        - vendorName
      properties:
        fares:
          type: array
          description: List of all fares in this section.
          items:
            $ref: '#/components/schemas/RailPnrFareInfo'
        rate:
          description: Rate information about the section.
          $ref: '#/components/schemas/Cost'
        sectionStatus:
          type: string
          description: Status of the section.
          enum:
            - INITIATED
            - CONFIRMED
            - CANCELLED
            - REQUESTED
          example: CONFIRMED
        vendorConfirmations:
          type: array
          description: List of vendor confirmation numbers for this section.
          items:
            $ref: '#/components/schemas/RailPnrVendorConfirmation'
        vendorName:
          type: string
          description: Name of the vendor for this section.
          example: ATOC
        userFacingStatus:
          description: User facing status of the section.
          readOnly: true
          $ref: '#/components/schemas/UserFacingStatus'
    RailPnrTicket:
      type: object
      title: RailPnrTicket
      description: Rail ticket.
      required:
        - ticketNumber
        - legs
        - passengerRefs
      properties:
        issuedDateTime:
          description: Ticket issued date time.
          $ref: '#/components/schemas/DateTimeOffset'
        ticketNumber:
          type: string
          description: Ticket number.
          example: '0840010000072'
        legs:
          type: array
          description: List of legs covered by this ticket.
          items:
            type: integer
            format: int32
            example: 1
        passengerRefs:
          type: array
          description: List of passenger for this ticket.
          items:
            type: integer
            format: int32
            example: 1
    RailPnrTicketDetail:
      type: object
      title: RailPnrTicketDetail
      description: Ticket details of the travelers.
      required:
        - deliveryOption
      properties:
        deliveryOption:
          $ref: '#/components/schemas/RailDeliveryOption'
          description: Delivery option selected for the section.
        eticketMetadata:
          $ref: '#/components/schemas/RailPnrETicketMetadata'
          description: E-ticket metadata.
        reference:
          type: string
          description: >
            For KIOSK, it contains the reference number of the ticket.

            For ELECTRONIC_TICKET, it contains the path where the actual content
            of the ticket is.
    RailPnrVendorConfirmation:
      type: object
      title: RailPnrVendorConfirmation
      description: Vendor Confirmation details
      required:
        - vendorConfirmationId
      properties:
        passengerRefs:
          type: array
          description: List of passengers.
          items:
            type: integer
            format: int32
            example: 1
        vendorConfirmationId:
          type: string
          description: Vendor confirmation id.
          example: XY179358
    RailPref:
      type: object
      title: RailPref
      description: Travel preferences related to rail station.
      properties:
        preferredRailStations:
          type: array
          description: A list of user preferred rail stations.
          items:
            $ref: '#/components/schemas/PreferredRailStation'
        seatPreference:
          $ref: '#/components/schemas/SeatPref'
        travelClasses:
          type: array
          description: A list of class of service for rail.
          items:
            $ref: '#/components/schemas/RailTravelClass'
        coachPreferences:
          type: array
          description: A list of coach preference for rail.
          items:
            $ref: '#/components/schemas/CoachPref'
        conditionalRates:
          type: array
          description: A list of conditional rates for rail.
          items:
            $ref: '#/components/schemas/ConditionalRate'
    RailRateInfo:
      type: object
      title: RailRateInfo
      description: Rate for the itinerary.
      required:
        - base
        - fees
        - total
      properties:
        base:
          description: Base Amount.
          $ref: '#/components/schemas/Money'
        fees:
          description: Fees and Taxes.
          $ref: '#/components/schemas/Money'
        railCardDiscount:
          description: Rail Card Discount Amount
          $ref: '#/components/schemas/Money'
        total:
          description: Total Amount.
          $ref: '#/components/schemas/Money'
        refund:
          description: Total Refund Amount.
          $ref: '#/components/schemas/Money'
        refundVoucher:
          description: Refund voucher details.
          $ref: '#/components/schemas/Voucher'
        rateDifference:
          description: Base rate difference during exchange.
          $ref: '#/components/schemas/Money'
        totalRateDifference:
          description: Total rate difference during exchange.
          $ref: '#/components/schemas/Money'
        includesCommission:
          type: boolean
          description: Whether the rate includes commission
          example: false
    RailRefundOption:
      type: object
      title: RailRefundOption
      description: Refund options for this rail booking.
      required:
        - refundId
        - refundRateInfo
      properties:
        refundId:
          type: string
          description: Refund option id.
          example: '1234567890'
        refundRateInfo:
          description: Rail refund fare info.
          $ref: '#/components/schemas/RailRefundRateInfo'
        legs:
          type: array
          description: List of leg indices for the refund option.
          items:
            type: integer
            format: int32
            example: 1
    RailRefundRateInfo:
      type: object
      title: RailRefundRateInfo
      description: Rate information for this refund option.
      required:
        - totalFare
      properties:
        totalFare:
          description: Total fare.
          $ref: '#/components/schemas/FareAmount'
        nonRefundableFare:
          description: Non refundable fare.
          $ref: '#/components/schemas/FareAmount'
        cancellationFee:
          description: Cancellation fee.
          $ref: '#/components/schemas/Money'
        refund:
          description: Total refund amount.
          $ref: '#/components/schemas/Money'
        voucher:
          description: Refund voucher details
          $ref: '#/components/schemas/RailRefundVoucher'
    RailRefundVoucher:
      type: object
      title: RailRefundVoucher
      description: Refund voucher information for this refund option.
      required:
        - amount
      properties:
        amount:
          description: Amount refunded as voucher.
          $ref: '#/components/schemas/Money'
    RailRsvpResponse:
      title: RailRsvpResponse
      type: object
      description: Rail rsvp response
      properties:
        notNeeded:
          type: boolean
          description: Whether rail booking is needed by the traveler or not
          example: true
    RailSearchType:
      type: string
      description: Enum representing what kind of journey it is.
      enum:
        - ONE_WAY
        - RETURN
        - OPEN_RETURN
      example: RETURN
    RailSeatPreferenceSelection:
      type: object
      title: RailSeatPreferenceSelection
      description: Selected Seat Preferences for the itinerary.
      properties:
        carriageType:
          description: Seat Carriage Type
          type: string
          example: Quiet
        deckType:
          description: Seat Carriage Type
          type: string
          example: Upstairs
        direction:
          description: Seat Direction.
          type: string
          example: Backward facing
        facilities:
          type: array
          description: Seat Facilities.
          items:
            type: string
            example: Near luggage rack
        positionType:
          description: Seat Position Type.
          type: string
          example: Window
        seatLocationType:
          description: Seat Location Type.
          type: string
          example: Sit close to
        seatType:
          description: Seat Type.
          type: string
          example: Family
    RailStationInfo:
      type: object
      description: Details of the station.
      title: RailStationInfo
      required:
        - name
      properties:
        name:
          type: string
          description: Name of the station
        code:
          type: string
          description: Unique code of the station.
        cityCode:
          type: string
          description: City Code for the Railway Station
          example: LON
        timeZone:
          type: string
          description: TimeZone of the Railway Station
          example: Europe/London
        countryCode:
          type: string
          description: Unique Code of the Country of Railway Station
          example: GB
        latLong:
          $ref: '#/components/schemas/Latlng'
          description: Coordinates of the Railway Station.
        localCode:
          type: string
          description: Local code of the station.
          example: EUS1444
        sourceRefInfos:
          type: array
          items:
            $ref: '#/components/schemas/RailStationSourceRefInfo'
          description: Source Reference Info
        stationType:
          type: string
          description: Status of the journey.
          enum:
            - INDIVIDUAL
            - STATION_GROUP
            - METRO
            - BUS_STOP
            - FERRY_TERMINAL
          example: METRO
        cityName:
          type: string
          description: City Name of the Railway Station
          example: LONDON
        stateCode:
          type: string
          description: State code for the Railway Station
          example: MA
        continentCode:
          type: string
          description: Unique Code of the Railway Station's Continent
          example: EU
    RailStationSourceRefInfo:
      type: object
      description: Source Reference Information
      title: RailStationSourceRefInfo
      required:
        - stationReferenceId
        - inventoryName
      properties:
        stationReferenceId:
          type: string
          description: Reference Id of the Station
          example: >-
            https://et2-trainlineapi.ttlnonprod.com/stations/op~U~6e6165d9-1be0-4a52-b461-57f18d756c4c
        inventoryName:
          type: string
          description: Inventory Name
          example: Atoc
    RailTicketAsset:
      type: object
      title: RailTicketAsset
      description: Details of tickets.
      required:
        - description
        - reference
        - type
      properties:
        description:
          description: Provide some details on what the given asset contains.
          type: string
        reference:
          description: >
            For ticket type collection number, it contains the reference number
            of the ticket.

            For others, it contains the path where the actual content of the
            ticket is.
          type: string
        type:
          description: Provide details on what type of the ticket is.
          $ref: '#/components/schemas/RailTicketType'
    RailTicketType:
      description: Ticket asset type.
      type: string
      enum:
        - PDF
        - PNG
        - APPLE_PK_PASS
        - HTML
        - COLLECTION_NUMBER
      example: PDF
    RailTravelCard:
      type: object
      title: RailTravelCard
      description: Travel card to select.
      required:
        - travelCardKey
        - vendorName
      properties:
        fareType:
          description: Fare details of the card.
          $ref: '#/components/schemas/RailFareType'
        rateInfo:
          description: Price details of the card.
          $ref: '#/components/schemas/RailRateInfo'
        travelCardKey:
          description: Base64 encoded string to uniquely identify the card.
          type: string
          example: >-
            CilvcH5VfmZmMjU0MjVhLTQ1ZGYtNDRlZi1iYjFmLWRhZTYxMDFkMDhiORIkYjJiMTdkZmYtNDgwNy00YzgyLWI2YWEtMWM5Yjc0ZTEzOWZi
        vendorName:
          description: Vendor which provides the card.
          type: string
          example: ATOC
        zoneValidity:
          description: Zones in which travel card is valid.
          type: string
          example: London Travelcard Zones 1-4
    RailTravelClass:
      description: Travel class
      type: string
      enum:
        - FIRST
        - STANDARD
        - BUSINESS
        - SLEEPER
        - STANDARD_PREMIUM
        - BUSINESS_PREMIUM
        - COACH
        - ROOM
        - EXECUTIVE
      example: FIRST
    RailVehicle:
      type: object
      description: Information regarding the vehicle and operator.
      title: RailVehicle
      required:
        - carrierName
        - timetableId
        - type
      properties:
        carrierName:
          description: Name of the carrier.
          type: string
          example: Deutsche Bahn
        timetableId:
          description: Timetable ID
          type: string
          example: ICE 373
        transportName:
          description: Name of the transport.
          type: string
          example: TGV
        type:
          type: string
          description: Type of vehicle.
          enum:
            - TRAIN
            - BUS
            - FERRY
            - WALK
            - TAXI
            - TRAM
            - METRO
            - TUBE
          example: TRAIN
    RateMetadata:
      type: object
      description: Price Summary
      properties:
        negotiatedRateType:
          type: string
          enum:
            - NONE
            - CORPORATE_RATE
            - AGENCY_RATE
          example: CORPORATE_RATE
        publishedRate:
          $ref: '#/components/schemas/FareAmount'
          description: the non negotiated rate or the market rate.
    RateType:
      type: string
      title: RateType
      description: Type of booked fare
      enum:
        - RATE_TYPE_UNKNOWN
        - PUBLISHED
        - TMC_NEGOTIATED
        - COMPANY_NEGOTIATED
      example: PUBLISHED
    RatingWrapper:
      type: object
      title: RatingWrapper
      properties:
        rating:
          type: number
          format: double
    RawPaymentSourceDetails:
      type: object
      title: RawPaymentSourceDetails
      description: Raw Details of the Payment Source
      discriminator:
        propertyName: type
        mapping:
          DPAN: '#/components/schemas/Dpan'
          CREDIT: '#/components/schemas/Credit'
      oneOf:
        - $ref: '#/components/schemas/Dpan'
        - $ref: '#/components/schemas/Credit'
    RebookReference:
      title: RebookReference
      type: object
      description: >-
        Rate Assurance Rebooking information along with pnr references and
        savings
      properties:
        cancelledPnrIds:
          type: array
          description: Backward reference to the cancelled PNRs (if any) after rebooking.
          items:
            type: string
            example: '1234567890'
        rebookedPnrId:
          type: string
          description: Forward reference to the rebooked PNR (if any) after cancellation.
          example: '1234567890'
        hotelRateAssuranceMetadata:
          $ref: '#/components/schemas/HotelRateAssuranceMetadata'
        rebookType:
          type: string
          description: Indicates the reason for rebooking.
          enum:
            - RATE_ASSURANCE
            - MODIFY
          example: RATE_ASSURANCE
    RedressNumber:
      type: object
      title: RedressNumber
      description: Redress details
      required:
        - number
        - issueCountry
      properties:
        number:
          type: string
          example: '12345'
        issueCountry:
          type: string
          example: US
    RedressNumberWrapper:
      type: object
      title: RedressNumberWrapper
      properties:
        redress:
          $ref: '#/components/schemas/RedressNumber'
    Reference:
      type: object
      title: Reference object containing uuid and name of the entity.
      description: Reference of an entity
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
    ReferenceId:
      type: object
      title: ReferenceId
      description: Reference number to be shown on the invoice.
      required:
        - label
        - value
      properties:
        label:
          description: Label for the reference ID on invoice.
          type: string
          enum:
            - TRIP_ID
            - PNR_ID
            - AGENCY_REFERENCE
          example: AGENCY_REFERENCE
        value:
          description: The reference ID.
          type: string
          example: '122332432'
    RefreshType:
      title: RefreshType
      type: string
      enum:
        - REFRESH_TYPE_BLOCKING
        - REFRESH_TYPE_ASYNC
        - REFRESH_TYPE_DISABLED
      example: REFRESH_TYPE_BLOCKING
      description: |
        Refresh Type:
         * REFRESH_TYPE_BLOCKING - Block the read call, till the PNRs are refreshed.
         * REFRESH_TYPE_ASYNC - Refresh the PNRs asynchronously and return the previous PNR versions.
         * REFRESH_TYPE_DISABLED - Disable trip refresh for the read call.
    RefundInfoDetail:
      title: RefundInfoDetail
      description: Describe the refund info associated with cancel object.
      type: object
      properties:
        refundType:
          type: string
          enum:
            - REFUND
            - CREDIT
          description: Type of refund.
          example: CREDIT
        amount:
          $ref: '#/components/schemas/FareAmount'
        fop:
          $ref: '#/components/schemas/FormOfPayment'
        expiryDate:
          $ref: '#/components/schemas/DateModel'
          description: >
            Expiration for a CREDIT refund. This field will be ignored for all
            cases where the

            refund_type is not CREDIT. If not set, we assume the credit will
            expire one year from

            ticket issue date.
    RegionCode:
      description: >-
        The region code for which the following invoicing information is
        applicable.
      type: string
      enum:
        - US
        - UK
        - NL
        - SG
        - CA
        - MX
        - DO
        - AR
        - BR
        - CO
        - GT
        - PE
        - CR
        - IL
        - NOR
        - AE
        - SE
        - TR
        - PL
        - SA
        - ZA
        - AU
        - CN
        - HK
        - IN
        - ID
        - JP
        - KR
        - MY
        - NZ
        - PH
        - TH
        - VN
      example: US
    RequestedByDetails:
      title: RequestedByDetails
      type: object
      description: Information about the requester of the trip.
      required:
        - pnrRequestedBy
      properties:
        pnrRequestedBy:
          type: string
          description: Name of the requester
          example: Peter
        requestedByUserOrgId:
          $ref: '#/components/schemas/UserOrgId'
    RestrictedKeywordsWithReason:
      type: object
      properties:
        keyword:
          type: string
          description: Restricted keyword
          example: Test Keyword
        reason:
          type: string
          description: Reason for restriction
          example: Test Reason
    RewardsProgramMetadata:
      type: object
      title: RewardsProgramMetadata
      description: Metadata for Rewards Program payment source.
      required:
        - type
      properties:
        type:
          $ref: '#/components/schemas/RewardsProgramType'
        pointsBalance:
          $ref: '#/components/schemas/PointsBalance'
    RewardsProgramMetadataWrapper:
      type: object
      title: RewardsProgramMetadataWrapper
      description: Wrapper for RewardsProgramMetadata
      properties:
        rewardsProgramMetadata:
          $ref: '#/components/schemas/RewardsProgramMetadata'
    RewardsProgramType:
      type: string
      title: RewardsProgramType
      description: Type of Rewards Program
      enum:
        - BREX_POINTS
        - QANTAS_POINTS
    Room:
      type: object
      title: Room
      description: Room info
      required:
        - bedCount
        - bedType
        - cancellationPolicy
        - rateInfo
      properties:
        bedCount:
          type: integer
          description: Number of rooms.
          format: int32
          example: 1
        bedType:
          $ref: '#/components/schemas/BedType'
          description: Bed type.
        cancellationPolicy:
          $ref: '#/components/schemas/CancellationPolicy2'
          description: Room cancellation policy.
        rateInfo:
          type: object
          title: RateInfo
          description: Rate info for the booking
          required:
            - nightlyRate
            - totalRate
          properties:
            nightlyRate:
              $ref: '#/components/schemas/Money'
              description: Nightly rate for the booking.
            totalRate:
              $ref: '#/components/schemas/Cost'
              description: Total rate for the booking.
            overallPenaltyCharged:
              $ref: '#/components/schemas/Money'
              description: Overall Penalty charged for the booking.
            publishedRate:
              $ref: '#/components/schemas/Cost'
              description: Published rate for the room, at the time of booking.
            publishedNightlyRate:
              $ref: '#/components/schemas/Cost'
              description: Published nightly rate for the room, at the time of booking.
            prepaidRate:
              $ref: '#/components/schemas/Cost'
              description: Prepaid component for the rate.
            postpaidRate:
              $ref: '#/components/schemas/Cost'
              description: Pay at property component for the rate.
            rateCode:
              type: string
              description: Rate Code used for the booking
              example: SIG
            isModifiable:
              type: boolean
              description: Flag to indicate if the rate is modifiable
              readOnly: true
              example: false
            isFopModifiable:
              type: boolean
              description: Flag to indicate if the form of payment is modifiable
              readOnly: true
              example: true
        roomName:
          type: string
          description: Name of the room.
          example: Standard Twin Room (City View)
        imageSets:
          type: array
          items:
            $ref: '#/components/schemas/HotelImageSet'
        meals:
          $ref: '#/components/schemas/HotelRoomMeal'
          description: Details of Meal plan available with the room.
        roomAmenities:
          type: array
          deprecated: true
          items:
            $ref: '#/components/schemas/RoomAmenitiy'
        amenities:
          type: array
          items:
            $ref: '#/components/schemas/HotelRoomAmenity'
        additionalAmenities:
          type: array
          items:
            type: string
        guaranteeType:
          description: Guarantee type for the booking.
          type: string
          enum:
            - GUARANTEE
            - DEPOSIT
        additionalDetails:
          type: array
          items:
            $ref: '#/components/schemas/HotelAdditionalDetail'
            description: List of Additional Details for the room
        roomInfo:
          type: object
          properties:
            roomType:
              $ref: '#/components/schemas/RoomType'
            typeClassDescription:
              type: string
            roomView:
              type: object
              properties:
                type:
                  $ref: '#/components/schemas/RoomView'
                roomClass:
                  type: array
                  items:
                    $ref: '#/components/schemas/RoomClass'
            roomTypeCode:
              type: string
              description: Room type code.
              example: 1QN
        co2EmissionDetail:
          description: The co2 emission detail for the room.
          $ref: '#/components/schemas/HotelCo2EmissionDetail'
        savingsInfo:
          type: object
          title: SavingsInfo
          description: Savings information for the rate option.
          properties:
            tmcNegotiatedRate:
              $ref: '#/components/schemas/Cost'
              description: TMC negotiated rate for the room, at the time of booking.
            corporateNegotiatedRate:
              $ref: '#/components/schemas/Cost'
              description: Corporate negotiated rate for the room, at the time of booking.
    RoomAmenitiy:
      type: object
      title: RoomAmenities
      description: Room amenities
      required:
        - roomAmenityType
      properties:
        additionalInfo:
          type: string
          description: Extra information about the room amenity
        isComplimentary:
          type: boolean
          description: Is amenity complimentary
          example: true
        roomAmenityType:
          type: string
          description: Room amenity type
          enum:
            - UNKNOWN
            - ADJOINING_ROOMS
            - AIR_CONDITIONING
            - ALARM_CLOCK
            - ALL_NEWS_CHANNEL
            - AM_FM_RADIO
            - BABY_LISTENING_DEVICE
            - BALCONY_LANAI_TERRACE
            - BARBEQUE_GRILLS
            - BATH_TUB_WITH_SPRAY_JETS
            - BATHROBE
            - BATHROOM_AMENITIES
            - BATHROOM_TELEPHONE
            - BATHTUB
            - BATHTUB_ONLY
            - BATHTUB_SHOWER_COMBINATION
            - BIDET
            - BOTTLED_WATER
            - CABLE_TELEVISION
            - COFFEE_TEA_MAKER
            - COLOR_TELEVISION
            - COMPUTER
            - CONNECTING_ROOMS
            - CONVERTERS_VOLTAGE_ADAPTORS
            - COPIER
            - CORDLESS_PHONE
            - CRIBS
            - DATA_PORT
            - DESK
            - DESK_WITH_LAMP
            - DINING_GUIDE
            - DIRECT_DIAL_PHONE_NUMBER
            - DISHWASHER
            - DOUBLE_BEDS
            - DUAL_VOLTAGE_OUTLET
            - ELECTRICAL_CURRENT_VOLTAGE
            - ERGONOMIC_CHAIR
            - EXTENDED_PHONE_CORD
            - FAX_MACHINE
            - FIRE_ALARM
            - FIRE_ALARM_WITH_LIGHT
            - FIREPLACE
            - FREE_TOLL_FREE_CALLS
            - FREE_CALLS
            - FREE_CREDIT_CARD_ACCESS_CALLS
            - FREE_LOCAL_CALLS
            - FREE_MOVIES_VIDEO
            - FULL_KITCHEN
            - GRAB_BARS_IN_BATHROOM
            - GRECIAN_TUB
            - HAIRDRYER
            - HIGH_SPEED_INTERNET_CONNECTION
            - INTERACTIVE_WEB_TV
            - INTERNATIONAL_DIRECT_DIALING
            - INTERNET_ACCESS
            - IRON
            - IRONING_BOARD
            - WHIRPOOL
            - KING_BED
            - KITCHEN
            - KITCHEN_SUPPLIES
            - KITCHENETTE
            - KNOCK_LIGHT
            - LAPTOP
            - LARGE_DESK
            - LARGE_WORK_AREA
            - LAUNDRY_BASKET_CLOTHES_HAMPER
            - LOFT
            - MICROWAVE
            - MINIBAR
            - MODEM
            - MODEM_JACK
            - MULTILINE_PHONE
            - NEWSPAPER
            - NONSMOKING
            - NOTEPADS
            - OFFICE_SUPPLIES
            - OVEN
            - PAY_PER_VIEW_MOVIES_ON_TV
            - PENS
            - PHONE_IN_BATHROOM
            - PLATES_AND_BOWLS
            - POTS_AND_PANS
            - PRAYER_MATS
            - PRINTER
            - PRIVATE_BATHROOM
            - QUEEN_BED
            - RECLINER
            - REFRIGERATOR
            - REFRIGERATOR_WITH_ICE_MAKER
            - REMOTE_CONTROL_TELEVISION
            - ROLLAWAY_BED
            - SAFE
            - SCANNER
            - SEPARATE_CLOSET
            - SEPARATE_MODEM_LINE_AVAILABLE
            - SHOE_POLISHER
            - SHOWER_ONLY
            - SILVERWARE_UTENSILS
            - SITTING_AREA
            - SMOKE_DETECTORS
            - SMOKING
            - SOFA_BED
            - SPEAKER_PHONE
            - STEREO
            - STOVE
            - TAPE_RECORDER
            - TELEPHONE
            - TELEPHONE_FOR_HEARING_IMPAIRED
            - TELEPHONES_WITH_MESSAGE_LIGHT
            - TOASTER_OVEN
            - TROUSER_PANT_PRESS
            - TURN_DOWN_SERVICE
            - TWIN_BED
            - VAULTED_CEILINGS
            - VCR_MOVIES
            - VCR_PLAYER
            - VIDEO_GAMES_AMENITY
            - VOICE_MAIL
            - WAKEUP_CALLS
            - WATER_CLOSET
            - WATER_PURIFICATION_SYSTEM
            - WET_BAR
            - WIRELESS_INTERNET_CONNECTION
            - WIRELESS_KEYBOARD
            - ADAPTOR_AVAILABLE_FOR_TELEPHONE_PC_USE
            - AIR_CONDITIONING_INDIVIDUALLY_CONTROLLED_IN_ROOM
            - BATHTUB_ANDWHIRLPOOL_SEPARATE
            - TELEPHONE_WITH_DATA_PORTS
            - CD_PLAYER
            - COMPLIMENTARY_LOCAL_CALLS_TIME_LIMIT
            - EXTRA_PERSON_CHARGE_FOR_ROLLAWAY_USE
            - DOWN_FEATHER_PILLOWS
            - DESK_WITH_ELECTRICAL_OUTLET
            - ESPN_AVAILABLE
            - FOAM_PILLOWS
            - HBO_AVAILABLE
            - HIGH_CEILINGS
            - MARBLE_BATHROOM
            - LIST_OF_MOVIE_CHANNELS_AVAILABLE
            - PETS_ALLOWED
            - OVERSIZED_BATHTUB
            - SHOWER
            - SINK_INROOM
            - SOUNDPROOFED_ROOM
            - STORAGE_SPACE
            - TABLES_AND_CHAIRS
            - TWOLINE_PHONE
            - WALKIN_CLOSET
            - WASHER_DRYER
            - WEIGHT_SCALE
            - WELCOME_GIFT
            - SPARE_ELECTRICAL_OUTLET_AVAILABLE_AT_DESK
            - NONREFUNDABLE_CHARGE_FOR_PETS
            - REFUNDABLE_DEPOSIT_FOR_PETS
            - SEPARATE_TUB_AND_SHOWER
            - ENTRANCE_TYPE_TO_GUEST_ROOM
            - CEILING_FAN
            - CNN_AVAILABLE
            - ELECTRICAL_ADAPTORS_AVAILABLE
            - BUFFET_BREAKFAST
            - ACCESSIBLE_ROOM
            - CLOSETS_IN_ROOM
            - DVD_PLAYER
            - MINIREFRIGERATOR
            - SEPARATE_LINE_BILLING_FOR_MULTILINE_PHONE
            - SELFCONTROLLED_HEATING_COOLING_SYSTEM
            - TOASTER
            - ANALOG_DATA_PORT
            - COLLECT_CALLS
            - INTERNATIONAL_CALLS
            - CARRIER_ACCESS
            - INTERSTATE_CALLS
            - INTRASTATE_CALLS
            - LOCAL_CALLS
            - LONG_DISTANCE_CALLS
            - OPERATORASSISTED_CALLS
            - CREDIT_CARD_ACCESS_CALLS
            - CALLING_CARD_CALLS
            - TOLL_FREE_CALLS
            - UNIVERSAL_AC_DC_ADAPTORS
            - BATHTUB_SEAT
            - CANOPY_POSTER_BED
            - CUPS_GLASSWARE
            - ENTERTAINMENT_CENTER
            - FAMILY_OVERSIZED_ROOM
            - HYPOALLERGENIC_BED
            - HYPOALLERGENIC_PILLOWS
            - LAMP
            - MEAL_INCLUDED_BREAKFAST
            - MEAL_INCLUDED_CONTINENTAL_BREAKFAST
            - MEAL_INCLUDED_DINNER
            - MEAL_INCLUDED_LUNCH
            - SHARED_BATHROOM
            - TELEPHONE_TDD_TEXTPHONE
            - WATER_BED
            - EXTRA_ADULT_CHARGE
            - EXTRA_CHILD_CHARGE
            - EXTRA_CHILD_CHARGE_FOR_ROLLAWAY_USE
            - MEAL_INCLUDED_FULL_AMERICAN_BREAKFAST
            - FUTON
            - MURPHY_BED
            - TATAMI_MATS
            - SINGLE_BED
            - ANNEX_ROOM
            - FREE_NEWSPAPER
            - HONEYMOON_SUITES
            - COMPLIMENTARY_HIGH_SPEED_INTERNET_IN_ROOM
            - MAID_SERVICE
            - PC_HOOKUP_IN_ROOM
            - SATELLITE_TELEVISION
            - VIP_ROOMS
            - CELL_PHONE_RECHARGER
            - DVR_PLAYER
            - IPOD_DOCKING_STATION
            - MEDIA_CENTER
            - PLUG_AND_PLAY_PANEL
            - SATELLITE_RADIO
            - VIDEO_ON_DEMAND
            - EXTERIOR_CORRIDORS
            - GULF_VIEW
            - ACCESSIBLE_ROOM_AMENITY
            - INTERIOR_CORRIDORS
            - MOUNTAIN_VIEW
            - OCEAN_VIEW
            - HIGH_SPEED_INTERNET_ACCESS_FEE
            - HIGH_SPEED_WIRELESS
            - PREMIUM_MOVIE_CHANNELS
            - SLIPPERS
            - FIRST_NIGHTERS_KIT
            - CHAIR_PROVIDED_WITH_DESK
            - PILLOW_TOP_MATTRESS
            - FEATHER_BED
            - DUVET
            - LUXURY_LINEN_TYPE
            - INTERNATIONAL_CHANNELS
            - PANTRY
            - DISHCLEANING_SUPPLIES
            - DOUBLE_VANITY
            - LIGHTED_MAKEUP_MIRROR
            - UPGRADED_BATHROOM_AMENITIES
            - VCR_PLAYER_AVAILABLE_AT_FRONT_DESK
            - INSTANT_HOT_WATER
            - OUTDOOR_SPACE
            - HINOKI_TUB
            - PRIVATE_POOL
            - HIGH_DEFINITION_HD_FLAT_PANEL_TELEVISION_32_INCHES_OR_GREATER
            - ROOM_WINDOWS_OPEN
            - BEDDING_TYPE_UNKNOWN_OR_UNSPECIFIED
            - FULL_BED
            - ROUND_BED
            - TV
            - CHILD_ROLLAWAY
            - DVD_PLAYER_AVAILABLE_AT_FRONT_DESK
            - VIDEO_GAME_PLAYER
            - VIDEO_GAME_PLAYER_AVAILABLE_AT_FRONT_DESK
            - DINING_ROOM_SEATS
            - FULL_SIZE_MIRROR
            - MOBILE_CELLULAR_PHONES
            - MOVIES
            - MULTIPLE_CLOSETS
            - PLATES_GLASSWARE
            - SAFE_LARGE_ENOUGH_TO_ACCOMMODATE_A_LAPTOP
            - BED_LINEN_THREAD_COUNT
            - BLACKOUT_CURTAIN
            - BLURAY_PLAYER
            - DEVICE_WITH_MP3
            - NO_ADULT_CHANNELS_OR_ADULT_CHANNEL_LOCK
            - NONALLERGENIC_ROOM
            - PILLOW_TYPE
            - SEATING_AREA_WITH_SOFA_CHAIR
            - SEPARATE_TOILET_AREA
            - WEB_ENABLED
            - WIDESCREEN_TV
            - OTHER_DATA_CONNECTION
            - PHONELINE_BILLED_SEPARATELY
            - SEPARATE_TUB_OR_SHOWER
            - VIDEO_GAMES
            - ROOF_VENTILATOR
            - CHILDRENS_PLAYPEN
            - PLUNGE_POOL
            - DVD_MOVIES
            - AIR_FILTRATION
          example: WEB_ENABLED
    RoomClass:
      type: string
      description: Room Class
      enum:
        - STANDARD
        - PREMIUM
        - DELUXE
        - BUSINESS
        - PRESIDENTIAL
        - SUPERIOR
        - JUNIOR
        - CLUB
        - UNKNOWN
      example: PRESIDENTIAL
    RoomPreference:
      type: object
      title: RoomPreference
      description: Room options and stay preference.
      properties:
        isMobilityAccessible:
          type: boolean
          description: Whether or not mobility accessible room, tub.
          default: false
          example: false
        bedCount:
          type: string
          description: The number of bed in the room.
          enum:
            - ONE_BED
            - TWO_BEDS
          example: ONE_BED
        roomType:
          type: string
          description: Single selection of type of room.
          enum:
            - SMOKING
            - NON_SMOKING
          example: SMOKING
        mostImportantFact:
          type: string
          description: Single selection of the most import fact.
          enum:
            - ROOM_TYPE
            - BED_COUNT
            - ROOM_LOCATION
          example: BED_COUNT
        roomLocation:
          type: string
          description: Location of the hotel room
          enum:
            - HIGH_FLOOR
            - LOW_FLOOR
            - NEAR_ELEVATOR
          example: HIGH_FLOOR
        pillowType:
          type: string
          description: The type of pillow in hotel room.
          enum:
            - FOAM
            - EXTRA_FOAM
            - EXTRA_FEATHER
          example: FOAM
        roomAmenityPrefs:
          type: array
          items:
            type: string
            description: Amenity preference of the room.
            enum:
              - FEATHER_FREE_ROOM
              - EXTRA_TOWELS
              - REFRIGERATOR
            example: EXTRA_TOWELS
    RoomType:
      type: string
      description: Room Type
      enum:
        - ROOM
        - SUITE
        - VILLA
        - APARTMENT
        - COTTAGE
        - STUDIO
        - UNKNOWN_ROOM
      example: ROOM
    RoomView:
      type: string
      enum:
        - UNKNOWN
        - AIRPORT
        - BAY
        - CITY
        - COURTYARD
        - GOLF
        - HARBOR
        - INTERCOASTAL
        - LAKE
        - MARINA
        - MOUNTAIN
        - OCEAN
        - POOL
        - RIVER
        - WATER
        - BEACH
        - GARDEN
        - PARK
        - FOREST
        - RAIN_FOREST
        - VARIOUS
        - LIMITED
        - SLOPE
        - STRIP
        - COUNTRYSIDE
        - SEA
        - GULF
    SabrePnrRemark:
      type: object
      title: SabrePnrRemark
      description: Sabre Remark
      properties:
        type:
          $ref: '#/components/schemas/SabrePnrRemarkType'
        text:
          type: string
          description: ThirdPartyPnrRemark
          example: PREF ALLIANCES 1-ONE WORLD/AA
        legIndex:
          type: integer
          description: >-
            Index referencing the flight leg for which the remark should be
            added. Currently required only for OSI Remarks. Should be used in
            conjunction with the flight Index.
          example: 1
        flightIndex:
          type: integer
          description: >-
            Index referencing the flight for which the remark should be added.
            Currently required only for OSI Remarks. Should be used in
            conjunction with the leg Index.
          example: 0
    SabrePnrRemarkType:
      type: string
      description: Type of remark, for eg, General, Invoice, etc.
      enum:
        - ALPHA_CODED
        - CLIENT_ADDRESS
        - CORPORATE
        - DELIVERY_ADDRESS
        - GENERAL
        - GROUP_NAME
        - HIDDEN
        - HISTORICAL
        - INVOICE
        - ITINERARY
        - OSI
      example: GENERAL
    SabrePnrRemarkWrapper:
      type: object
      title: SabrePnrRemarkWrapper
      description: Wrapper for SabrePnrRemark
      properties:
        sabre:
          $ref: '#/components/schemas/SabrePnrRemark'
    SavingsFare:
      title: SavingsFare
      description: Total savings present.
      required:
        - fareAmount
      properties:
        fareAmount:
          $ref: '#/components/schemas/FareAmount'
          description: Amount saved with base and tax breakup.
        isTaxIncluded:
          type: boolean
          default: false
    ScheduleChangeInfo:
      type: object
      title: ScheduleChangeInfo
      description: Schedule change information for the leg.
      properties:
        flightIndices:
          type: array
          description: List of flight indices in this leg which has schedule changes.
          items:
            type: integer
            description: Flight index in the leg
            example: 1
        disruptedFlightIndices:
          type: array
          description: >-
            List of flight indices in the disrupted flights list in the air pnr
            which has schedule changes.
          items:
            type: integer
            description: Flight index in the disrupted flights list.
            example: 1
    ScheduleChangeRefundInfo:
      type: object
      title: ScheduleChangeRefundInfo
      description: Refund information if applicable for this ticket
      properties:
        isRefundAllowed:
          type: boolean
          description: >-
            Whether refund is allowed if user denies schedule change/cancels the
            flight
        refundWaiverCode:
          type: string
          description: Waiver code for refund if applicable
        exchangeWaiverCode:
          type: string
          description: Waiver code for exchange if available
    SearchParams:
      title: SearchParams
      type: object
      description: Search Parameter including location and datetime for a given search.
      required:
        - location
        - datetime
      properties:
        location:
          $ref: '#/components/schemas/CarSearchLocationParam'
        datetime:
          $ref: '#/components/schemas/DateTimeLocal'
        searchQuery:
          type: string
          description: Search query provided for the search.
          example: London
    SeatAmenityPref:
      type: object
      title: SeatAmenityPref
      description: Seat amenity preference.
      required:
        - seatAmenityTypes
      properties:
        seatAmenityTypes:
          type: array
          items:
            type: string
            enum:
              - UNKNOWN_AIR_SEAT_AMENITY_TYPE
              - FLAT_BED
              - WIFI
              - IN_SEAT_POWER
            example: WIFI
    SeatLocationPref:
      type: object
      title: SeatLocationPref
      description: Seat location preference.
      properties:
        cabins:
          type: array
          items:
            type: string
            enum:
              - UNKNOWN_CABIN
              - ECONOMY
              - PREMIUM_ECONOMY
              - BUSINESS
              - FIRST
            example: FIRST
        isBulkHeadPref:
          type: boolean
          example: false
        maxFlightDurationInHours:
          type: integer
          format: int32
          example: 3
        position:
          type: string
          enum:
            - UNKNOWN_POSITION
            - AISLE
            - WINDOW
            - AISLE_OR_WINDOW
          example: WINDOW
    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'
    SeatPrefDirection:
      type: string
      description: The direction of seat of the rail.
      enum:
        - FORWARD
        - BACKWARD
      example: FORWARD
    SeatPrefLocation:
      type: string
      description: The location of seat of the rail.
      enum:
        - AISLE
        - WINDOW
        - SOLO
      example: AISLE
    SeatPrefType:
      type: string
      description: The type of seat of the rail.
      enum:
        - SLEEPER_BED
        - NORMAL
        - TABLE_SEAT
      example: NORMAL
    SecondaryServiceProviderTmc:
      type: object
      title: SecondaryServiceProviderTmc
      description: Secondary service provider TMC info
      required:
        - tmcId
        - supplier
        - travelType
      properties:
        tmcId:
          $ref: '#/components/schemas/CompanyId'
          description: Id of the service provider TMC.
        supplier:
          $ref: '#/components/schemas/SupplierType'
          description: Supplier for which this service provider should be used.
        travelType:
          $ref: '#/components/schemas/TravelType'
          description: Travel type for which this service provider should be used.
    SelectedPaymentSource:
      type: object
      description: Describes the selected payment source for the booking.
      properties:
        paymentSourceId:
          type: string
          format: uuid
          description: Unique identifier identifying this payment source.
          example: f49d00fe-1eda-4304-ba79-a980f565281d
        rawPaymentSource:
          $ref: '#/components/schemas/RawPaymentSourceDetails'
        postPaymentRedirectionUrl:
          type: string
          description: >-
            Url for post payment redirection if payment source navigates user to
            a third party url
          example: >-
            https://mycompany.com/checkout?paymentSourceId=f49d00fe-1eda-4304-ba79-a980f565281d
        cvv:
          type: string
          description: CVV associated with associated payment source, if any.
        amount:
          description: Total amount to be charged for specified payment items.
          $ref: '#/components/schemas/Money'
    SellerInfo:
      type: object
      title: SellerInfo
      description: Entity that sold the items mentioned in the invoice.
      required:
        - name
        - address
      properties:
        name:
          description: Name of seller, usually a TMC Legal Entity.
          type: string
          example: Spotnana India Pvt. Ltd.
        address:
          description: Address of seller.
          type: string
          example: |-
            115 Broadway Suite 04-101,
            New York, NY 10006
        taxId:
          description: Tax number for the seller, for ex GSTN in India
          type: string
          example: TXG239023092
          deprecated: true
        idInfo:
          type: array
          description: The seller ID information.
          items:
            $ref: '#/components/schemas/IdInfo'
    ServiceFee:
      title: ServiceFee
      description: Service Fee on the booking
      type: object
      required:
        - fare
        - ticketNumber
        - status
      properties:
        fare:
          $ref: '#/components/schemas/FareAmount'
          description: Amount charged for the service fee
        taxes:
          type: array
          description: List of applicable taxes
          items:
            $ref: '#/components/schemas/TaxAmount'
        ticketNumber:
          type: string
          description: Ticket Number
        status:
          type: string
          description: Status for the associated ticket
          enum:
            - ISSUED
            - VOIDED
            - PENDING
            - DELAYED_INVOICE
            - FAILED
            - NO_CHARGE
            - UNKNOWN
          example: ISSUED
        fop:
          $ref: '#/components/schemas/FormOfPayment'
          description: Form of payment for the above amount
        visibleToTraveler:
          type: boolean
          description: Show/hide service fee to traveler
          example: true
        paymentTransactionInfo:
          $ref: '#/components/schemas/PaymentTransactionInfo'
        tags:
          type: array
          description: >-
            List of key-value pairs for storing some tags related to
            service-fee.
          items:
            $ref: '#/components/schemas/KeyValue'
    ShellPnrInfo:
      title: ShellPnrInfo
      type: object
      description: Information about shell pnr
      properties:
        shellPnrCreateReasonType:
          type: string
          description: Reason for creating the shell pnr
          example: CONTENT_NOT_AVAILABLE
        createShellPnrReason:
          type: string
          description: >
            If the reason for creating the shell pnr is chosen as OTHER or
            CONTENT_NOT_AVAILABLE, 

            we expect the agent to explain the reason using this free text
          example: Flight Missing
        pnrType:
          type: string
          description: It will contain the PNR type for different shell PNRs
          example: AIR
    SimpleAirPnrInfo:
      type: object
      description: >
        Air specific basic information related to PNRs that were not
        successfully 

        mapped into Spotnana PNR protos.
      required:
        - legs
      properties:
        legs:
          type: array
          items:
            $ref: '#/components/schemas/SimpleLegInfo'
    SimpleAirportInfo:
      type: object
      description: Details related to an airport.
      required:
        - airportCode
        - airportName
        - cityName
      properties:
        airportCode:
          type: string
          description: The airport code.
          example: WRA
        airportName:
          type: string
          description: The airport name.
          example: Warder Airport
        cityName:
          type: string
          description: The city name.
          example: Werder
    SimpleCarPnrInfo:
      type: object
      description: >
        Car specific basic information related to PNRs that were not
        successfully

        mapped into Spotnana PNR protos.
      required:
        - vendorConfirmationId
        - vendorName
        - address
        - pickUpDateTime
        - dropOffDateTime
      properties:
        vendorConfirmationId:
          type: string
          description: The confirmation ID in the vendor system.
        vendorName:
          type: string
          description: The vendor name.
        address:
          description: The address of the car rental.
          $ref: '#/components/schemas/PostalAddress'
        pickUpDateTime:
          description: The pick-up date and time.
          $ref: '#/components/schemas/DateTimeLocal'
        dropOffDateTime:
          description: The drop-off date and time.
          $ref: '#/components/schemas/DateTimeLocal'
        sortingPriority:
          type: integer
          format: int32
          description: >
            This field sets the sorting priority of the car to determine its
            order of display on 

            the trips page.
          example: 0
    SimpleFlightInfo:
      type: object
      description: The basic flight information.
      required:
        - vendorConfirmationId
        - flightNumber
        - airlineCode
        - departureAirportInfo
        - arrivalAirportInfo
        - departureDateTime
        - arrivalDatetime
      properties:
        vendorConfirmationId:
          type: string
          description: The confirmation ID in the vendor system.
        flightNumber:
          type: string
          description: The flight number.
        airlineCode:
          type: string
          description: The operating airline code.
        departureAirportInfo:
          description: The departure airport code.
          $ref: '#/components/schemas/SimpleAirportInfo'
        arrivalAirportInfo:
          description: The arrival airport code.
          $ref: '#/components/schemas/SimpleAirportInfo'
        departureDatetime:
          description: The departure date and time for the flight.
          $ref: '#/components/schemas/DateTimeLocal'
        arrivalDateTime:
          description: The arrival date and time for the flight.
          $ref: '#/components/schemas/DateTimeLocal'
    SimpleHotelPnrInfo:
      type: object
      description: >
        Hotel specific basic information related to PNRs that were not
        successfully

        mapped into Spotnana PNR protos.
      required:
        - vendorConfirmationId
        - hotelName
        - address
        - checkInDateTime
        - checkOutDateTime
      properties:
        vendorConfirmationId:
          type: string
          description: The confirmation ID in the vendor system.
        hotelName:
          type: string
          description: The hotel name.
        address:
          description: The address for the hotel.
          $ref: '#/components/schemas/PostalAddress'
        checkInDateTime:
          description: The check-in date and time for the hotel.
          $ref: '#/components/schemas/DateTimeLocal'
        checkOutDatetime:
          description: The check-out date and time for the hotel.
          $ref: '#/components/schemas/DateTimeLocal'
        sortingPriority:
          type: integer
          format: int32
          description: >
            This field sets the sorting priority of the hotel to determine its
            order of display

            on the trips page.
          example: 0
    SimpleLegInfo:
      type: object
      description: The information related to a leg.
      required:
        - flights
      properties:
        flights:
          type: array
          items:
            $ref: '#/components/schemas/SimpleFlightInfo'
        sortingPriority:
          type: integer
          format: int32
          description: >
            This field sets the sorting priority of the simple leg to determine
            its order of display

            on the trips page.
          example: 0
    SimpleMoney:
      type: object
      title: SimpleMoney
      description: Money object containing just amount and currency code.
      required:
        - amount
        - currencyCode
      properties:
        amount:
          type: number
          format: double
          description: Amount
          example: 510
        currencyCode:
          type: string
          description: The 3-letter currency code defined in ISO 4217.
          example: GBP
    SimplePnr:
      type: object
      description: >
        Basic information related to PNRs that were not successfully mapped into
        Spotnana PNR 

        protos. This basic information can be used to power a basic card for a
        traveler.
      required:
        - pnrId
        - sourcePnrId
        - source
      properties:
        pnrId:
          type: string
          description: Spotnana PNR Id
          example: '1234567890'
        sourcePnrId:
          type: string
          description: The source PNR reference (Sabre PNR, NDC booking reference etc.)
          example: AEDAVF
        source:
          $ref: '#/components/schemas/ThirdPartySource'
          description: Source of the booking e.g. Sabre, NDC etc.
        air:
          description: Air PNR specific information.
          $ref: '#/components/schemas/SimpleAirPnrInfo'
        hotel:
          description: Hotel PNR specific information.
          $ref: '#/components/schemas/SimpleHotelPnrInfo'
        car:
          description: Car PNR specific information.
          $ref: '#/components/schemas/SimpleCarPnrInfo'
        rail:
          description: Rail PNR specific information.
          $ref: '#/components/schemas/SimpleRailPnrInfo'
        pnrStatus:
          description: Pnr status for this booking.
          $ref: '#/components/schemas/PnrStatus'
        userFacingStatus:
          description: User facing status for this booking.
          $ref: '#/components/schemas/UserFacingStatus'
    SimpleRailLegInfo:
      type: object
      description: The List of legs in the section.
      required:
        - originStationInfo
        - destinationStationInfo
        - departureDatetime
        - arrivalDateTime
        - carrierName
      properties:
        originStationInfo:
          description: The originating station info of the Leg.
          $ref: '#/components/schemas/SimpleRailStationInfo'
        destinationStationInfo:
          description: The destination station info of the Leg.
          $ref: '#/components/schemas/SimpleRailStationInfo'
        departureDatetime:
          description: The departure date and time for the flight.
          $ref: '#/components/schemas/DateTimeLocal'
        arrivalDateTime:
          description: The arrival date and time for the flight.
          $ref: '#/components/schemas/DateTimeLocal'
        carrierName:
          type: string
          description: The name of the carrier.
        sortingPriority:
          type: integer
          format: int32
          description: >
            This field sets the sorting priority of the rail leg to determine
            its order of display

            on the trips page.
          example: 0
    SimpleRailPnrInfo:
      type: object
      description: >
        Rail specific basic information related to PNRs that were not
        successfully

        mapped into Spotnana PNR protos.
      required:
        - sections
        - ticketReferences
      properties:
        sections:
          type: array
          description: The List of sections covered in the itinerary.
          items:
            $ref: '#/components/schemas/SimpleSectionInfo'
        ticketReferences:
          type: array
          description: >
            Containing details about the content and how to get the ticket. e.g.
            for eticket, it will

            contain details of the path where pdf/apple pk pass is stored. For
            collection ticket, 

            it will contain the reference number of the ticket.
          items:
            $ref: '#/components/schemas/RailTicketAsset'
    SimpleRailStationInfo:
      type: object
      description: The information related to the rail station.
      required:
        - name
        - code
      properties:
        name:
          type: string
          description: Name of the station.
        code:
          type: string
          description: Unique code of the station.
    SimpleSectionInfo:
      type: object
      description: The List of sections covered in the itinerary.
      required:
        - vendorConfirmationId
        - legs
      properties:
        vendorConfirmationId:
          type: string
          description: The confirmation ID in the vendor system.
        legs:
          type: array
          description: The information related to the legs in a section.
          items:
            $ref: '#/components/schemas/SimpleRailLegInfo'
    SizeInfo:
      type: object
      description: Information about the baggage size.
      properties:
        length:
          description: The weight limit of a baggage option.
          type: number
          example: 32
        unit:
          description: The unit of measurement for the bag size.
          type: string
          enum:
            - CENTIMETER
            - METER
    SourceInfo:
      title: SourceInfo
      description: Information about the source of booking
      type: object
      required:
        - bookingSource
      properties:
        sourcePnrId:
          type: string
          description: The source PNR ID
          example: AEDAVF
        bookingSource:
          type: string
          description: The source of booking
          example: United.com
        thirdParty:
          type: string
          description: The known third party source of the booking.
          example: United.com
          readOnly: true
        bookingDateTime:
          description: Booking date time of the PNR
          $ref: '#/components/schemas/DateTimeOffset'
        posDescriptor:
          type: string
          description: Point of sale descriptor for this pnr from source
          example: LA5K
        iataNumber:
          type: string
          description: IATA number associated with this pnr
          example: '426666'
    SpecialServiceRequestInfoDetail:
      type: object
      title: SpecialServiceRequestInfo
      description: Special Service Request (SSR) Info.
      properties:
        code:
          type: string
          description: 4 letter Special Service Request code.
        customText:
          type: string
          description: Free text string for special request.
        flightIndex:
          type: integer
          description: >-
            Index of flight mapping with the special service request, starts
            with 0.
        legIndex:
          type: integer
          description: >-
            Index of leg mapping with the special service request, starts with
            0.
        status:
          type: string
          description: Status of the Special Service Request.
          enum:
            - SPECIAL_SERVICE_REQUEST_STATUS_UNKNOWN
            - CONFIRMED
            - REQUESTED
            - UNABLE_TO_CONFIRM
            - DENIED
    SplitOptionByCardCompany:
      type: object
      title: SplitOptionByCardCompany
      required:
        - cardCompanyCode
      description: Split option details when using a card from a specific card company
      properties:
        cardCompanyCode:
          type: string
          description: Card company code which allows splitting the payment
          example: VI, TP
        splitWithCardCompanyCodes:
          type: array
          items:
            type: string
            description: >-
              Card company codes payment can be split with. Empty value will
              indicate that payment cannot be split with cards of any company.
    StatisticsItem:
      type: object
      required:
        - statisticType
        - totalFare
      properties:
        statisticType:
          type: string
          enum:
            - MINIMUM
            - MEDIAN
            - MAXIMUM
        totalFare:
          $ref: '#/components/schemas/FareAmount'
    StringListWrapper:
      type: object
      title: StringListWrapper
      properties:
        sList:
          type: array
          items:
            type: string
    StringWrapper:
      type: object
      title: StringWrapper
      properties:
        s:
          type: string
    StripeInfo:
      title: StripeInfo
      type: object
      description: Stripe payment gateway information
      properties:
        accountId:
          type: string
          description: Stripe account id
          example: acct_1OAbc3AB5abcdDdA
        accountDisplayName:
          type: string
          description: Stripe account display name as seen on the stripe dashboard
          example: Abc Travel
        platformAccountGatewayId:
          type: string
          description: >-
            Gateway-id of platform account when this gateway is a connected
            account
          example: connect-platform:#
    StripeInfoWrapper:
      type: object
      title: StripeInfoWrapper
      description: Wrapper for StripeInfo
      required:
        - stripeInfo
      properties:
        stripeInfo:
          $ref: '#/components/schemas/StripeInfo'
    SupplierType:
      type: string
      description: Supplier type like Sabre, TravelFusion etc.
      enum:
        - SABRE
        - AMADEUS
        - TRAVEL_FUSION
        - FARELOGIX_NDC
        - ATPCO_NDC
        - TRAINLINE
        - AVIA
        - QBR
        - BCD
        - QANTAS_HOTELS
        - SOUTHWEST
        - EXPEDIA
        - HOTEL_HUB
        - NDC
        - MARRIOTT
        - CLEARTRIP
        - KYTE
      example: SABRE
    SuspendRequest:
      title: SuspendRequest
      type: object
      description: Request object to suspend a Pnr.
      required:
        - reason
      properties:
        reason:
          type: string
          description: Reason for suspending the pnr
          enum:
            - AIR_PRICE_OPTIMIZATION
            - EXCHANGE
          example: AIR_PRICE_OPTIMIZATION
    Tax:
      type: object
      title: Tax
      description: Tax details
      required:
        - amount
      properties:
        amount:
          $ref: '#/components/schemas/Money'
          description: Tax amount
        taxCode:
          type: string
          description: Tax code
          example: VAT
    TaxAmount:
      type: object
      title: Tax
      description: Tax
      required:
        - amount
        - taxCode
        - description
      properties:
        amount:
          $ref: '#/components/schemas/Money'
        taxCode:
          type: string
          description: Tax code
          example: VAT
        description:
          type: string
          description: Tax code
        percentage:
          type: number
          format: double
          description: Amount
          example: 10
    TaxBreakdown:
      type: array
      items:
        $ref: '#/components/schemas/Tax'
    TermsAndConditions:
      type: object
      title: TermsAndConditions
      description: Terms and conditions.
      properties:
        conditions:
          type: array
          description: List of conditions
          items:
            $ref: '#/components/schemas/Condition'
    ThirdPartyHotelCode:
      title: ThirdPartyHotelCode
      type: object
      required:
        - hotelCode
        - hotelCodeType
      properties:
        hotelCode:
          type: string
          description: Third party hotel code.
        hotelCodeType:
          type: string
          description: Type of the third party.
          enum:
            - SABRE_CSL
            - SABRE_TN
            - EXPEDIA_RAPID
            - MARRIOTT
            - GIATA
    ThirdPartyPnrRemark:
      title: ThirdPartyPnrRemark
      description: Third party remarks to the given PNR
      oneOf:
        - $ref: '#/components/schemas/SabrePnrRemarkWrapper'
    ThirdPartySource:
      type: string
      enum:
        - UNKNOWN_SOURCE
        - SABRE
        - TRAVEL_FUSION
        - AVIA
        - NDC
        - TRAINLINE
        - ATPCO_NDC
        - FARELOGIX_NDC
        - OFFLINE
        - CONNEXUS
        - ROUTEHAPPY
        - AMADEUS
        - GIATA
        - QBR
        - BCD
        - QANTAS_HOTELS
        - SOUTHWEST
        - EXPEDIA
        - HOTEL_HUB
        - MARRIOTT
        - CLEARTRIP
        - KYTE
      example: SABRE
    Ticket:
      title: Ticket
      description: Air ticket info
      type: object
      required:
        - ticketNumber
      properties:
        ticketNumber:
          type: string
          description: Ticket number
          example: '0017574214321'
        ticketType:
          type: string
          description: Ticket type
          enum:
            - UNKNOWN_TICKET_TYPE
            - FLIGHT
            - ANCILLARY
            - MIXED
        issuedDateTime:
          description: Date time when the ticket was issued
          $ref: '#/components/schemas/DateTimeLocal'
        status:
          type: string
          description: Ticket status
          enum:
            - UNKNOWN
            - ISSUED
            - VOIDED
            - REFUNDED
            - EXCHANGED
          example: ISSUED
        amount:
          $ref: '#/components/schemas/FareAmount'
          description: Total amount of ticket
        flightCoupons:
          type: array
          description: List of flight coupons in this ticket
          items:
            type: object
            title: FlightCoupon
            properties:
              legIdx:
                type: integer
                description: Index of leg to which this coupon belongs
                format: int32
                example: 0
                minimum: 0
              flightIdx:
                type: integer
                description: Index of flight in it's leg to which this coupon belongs
                format: int32
                example: 0
                minimum: 0
              status:
                type: string
                description: Flight status
                enum:
                  - UNKNOWN
                  - AIRPORT_CONTROL
                  - LIFTED
                  - CHECKED_IN
                  - EXCHANGED
                  - FLOWN
                  - NOT_FLOWN
                  - REFUNDED
                  - VOIDED
                  - PRINTED
                  - IRREGULAR_OPERATIONS
                  - PRINT_EXCHANGE
                  - PAPER_TICKET
                  - SUSPENDED
                example: FLOWN
        ancillaries:
          type: array
          description: List of ancillaries in this ticket
          items:
            type: object
            title: TicketAncillary
            required:
              - legIndex
              - flightIndex
              - ancillaryType
              - totalFare
            properties:
              ancillaryType:
                type: string
                description: Type of ancillary
                enum:
                  - UNKNOWN
                  - SEAT
                  - LUGGAGE
                  - EARLY_BIRD
                  - WIFI
                  - CARBON_OFFSET
                example: SEAT
              totalFare:
                $ref: '#/components/schemas/FareAmount'
                description: Total fare of this ancillary
              legIndex:
                type: integer
                description: >-
                  Index of leg to which this ancillary belongs. If an ancillary
                  belongs to all legs, this index should be set to -1
                format: int32
                example: 0
                minimum: -1
              flightIndex:
                type: integer
                description: >-
                  Index of flight in it's leg to which this ancillary belongs.
                  If an ancillary belongs to all flights, this index should be
                  set to -1
                format: int32
                example: 0
                minimum: -1
        validatingAirlineCode:
          type: string
          description: 2 letter IATA airline code for the validating/ticketing airline
          example: AA
        exchangePolicy:
          type: object
          title: TicketExchangePolicy
          description: Ticket exchange policy
          properties:
            exchangePenalty:
              $ref: '#/components/schemas/Money'
              description: Exchange penalty if exchangeable
            isExchangeable:
              type: boolean
              description: Is ticket exchangeable or not
              example: true
            isCat16:
              type: boolean
              description: Is source cat16
              example: true
            isConditional:
              type: boolean
              description: Is conditional
              example: true
        exchangeInfo:
          type: object
          title: ExchangeInfo
          description: Ticket exchange info
          required:
            - originalTicketNumber
          properties:
            originalTicketNumber:
              type: string
              description: >-
                If the ticket was created as part of an exchange, the original
                ticket that was exchanged to create this ticket.
              example: '0017574214321'
            penalty:
              $ref: '#/components/schemas/Money'
              description: Exchange penalty
            addCollectAmount:
              $ref: '#/components/schemas/FareAmount'
              description: >-
                Extra amount the client was charged if the ticket was created as
                part of an exchange.
        refundPolicy:
          type: object
          title: TicketRefundPolicy
          description: Ticket refund policy
          properties:
            refundPenalty:
              $ref: '#/components/schemas/Money'
              description: Refund penalty if refundable
            isRefundable:
              type: boolean
              description: Is ticket refundable or not
              example: true
            isRefundableByObt:
              type: boolean
              description: Is ticket refundable or not in OBT
              example: true
            isCat16:
              type: boolean
              description: Is source cat16
              example: true
            isConditional:
              type: boolean
              description: Is conditional
              example: true
        refundInfo:
          type: object
          title: RefundInfo
          description: Ticket refund info
          required:
            - refundAmount
          properties:
            refundAmount:
              $ref: '#/components/schemas/FareAmount'
              description: >-
                The amount refunded back to the client if the ticket was
                refunded
            refundDate:
              $ref: '#/components/schemas/DateModel'
              description: The date when the refund was issued
            penalty:
              $ref: '#/components/schemas/FareAmount'
              description: Refund penalty
            refundTaxBreakdown:
              $ref: '#/components/schemas/PnrTaxBreakdown'
              description: Tax breakdown for the refund amount
        llfInfo:
          type: object
          title: LLFInfo
          description: Information about lowest logical fare for this ticket
          required:
            - llf
            - reason_code
          properties:
            llf:
              $ref: '#/components/schemas/Money'
              description: Lowest logical fare
            reasonCode:
              $ref: '#/components/schemas/PreDefinedAnswers'
              description: Reason code for selecting higher price than llf
            reason:
              type: string
              description: Free form text if selected reason code is OTHER
              example: Want a stop in London
        taxBreakdown:
          description: Tax breakdown information for this ticket
          $ref: '#/components/schemas/PnrTaxBreakdown'
        commission:
          type: object
          title: Commission
          description: Ticket commission info
          properties:
            amount:
              $ref: '#/components/schemas/Money'
              description: The commission amount we are getting from the vendor
            percent:
              type: number
              format: double
              description: >-
                The percentage of the base amount that we are getting as
                commission
              example: 10
        iataNumber:
          type: string
          description: Iata number
        fareCalculation:
          type: string
          description: Fare calculation line
        updateDateTime:
          description: >-
            Date time when the ticket was updated (voided, refunded or
            exchanged)
          $ref: '#/components/schemas/DateTimeLocal'
        paymentDetails:
          type: array
          description: List of payment details for this ticket
          items:
            type: object
            title: PaymentDetails
            required:
              - fop
            properties:
              amount:
                $ref: '#/components/schemas/FareAmount'
                description: The amount paid for this ticket
              fop:
                $ref: '#/components/schemas/FormOfPayment'
                description: Form of payment for the above amount
              isRefunded:
                type: boolean
                description: >-
                  Whether the above amount is issued or refunded to the
                  customer.
                example: false
        ticketSettlement:
          type: string
          description: Ticket settlement
          enum:
            - UNKNOWN_TICKET_SETTLEMENT
            - ARC_TICKET
            - BSP_TICKET
            - NON_ARC_BSP_TICKET
          example: ARC_TICKET
        ticketCtc:
          type: object
          title: ItemCTC
          description: The cost to customer for this ticket
          required:
            - cost
          properties:
            cost:
              type: array
              items:
                type: object
                title: Cost
                required:
                  - paymentId
                  - amount
                properties:
                  paymentId:
                    type: string
                    description: The payment id for this transaction as present in PNR CTC
                  amount:
                    $ref: '#/components/schemas/FareAmount'
                    description: >-
                      Total amount of the ticket paid as part of this
                      transaction
                  isRefunded:
                    type: boolean
                    description: >-
                      Indicates whether this amount was charged or refunded to
                      the customer
        publishedFare:
          description: >
            Published fare for this ticket. This field can be used to find
            savings

            in case of corporate / private fare bookings.
          $ref: '#/components/schemas/FareAmount'
        merchantFee:
          description: Merchant fee charged on this ticket
          $ref: '#/components/schemas/Money'
        airlineFee:
          description: Card or sevice fee charged by airline
          $ref: '#/components/schemas/Money'
        vendorCancellationId:
          type: string
          description: Cancellation id sent by the supplier.
          example: '2108528068'
        conjunctionTicketSuffix:
          description: >-
            List of ticket suffix in case of multiple coupons in a single ticket
            from GDS
          type: array
          items:
            type: string
            description: Ticket suffix for a conjunction ticket
            example: '37'
        createdUnusedCredit:
          readOnly: true
          description: Unused credit that was created by cancelling this ticket.
          $ref: '#/components/schemas/UnusedCreditInfo'
        ticketScheduleChangeInformation:
          $ref: '#/components/schemas/TicketScheduleChangeInformation'
        pcc:
          type: string
          description: The ticketing PCC for this ticket.
          example: ABCD
        savingsFare:
          deprecated: true
          description: Savings Fare
          $ref: '#/components/schemas/SavingsFare'
        preBookAnswers:
          deprecated: true
          description: The pre booking answer.
          $ref: '#/components/schemas/PreBookAnswers'
    TicketCancellationInfo:
      type: object
      title: TicketCancellationInfo
      description: >
        Cancellation information for ticket. For non-ticketed PNRs, this
        represents the ticket that

        is in pending state.
      required:
        - ticketType
        - ticketFare
        - cancellationState
      properties:
        ticketNumber:
          type: string
          description: >-
            Ticket number. For non-ticketed PNRs, this field will not be
            present.
          example: '0111234567890'
        ticketType:
          type: string
          title: TicketType
          description: Type of ticket.
          example: FLIGHT
          enum:
            - FLIGHT
            - ANCILLARY
        ticketFare:
          description: >
            Fare of this ticket. For tickets created via exchange, it will be
            equal to add collect
          $ref: '#/components/schemas/FareAmount'
        cancellationState:
          description: Current cancellation state for this ticket.
          $ref: '#/components/schemas/AirCancellationState'
        cancellationOptions:
          type: array
          description: >
            Cancellation options for this ticket. A ticket can have multiple
            options, like refunding

            ticket, converting ticket to flight credits.
          minItems: 1
          items:
            $ref: '#/components/schemas/AirCancellationOption'
        cancellationNotSupportedReasons:
          type: array
          description: Reasons why cancellation is not supported via OBT.
          minItems: 1
          items:
            $ref: '#/components/schemas/AirCancellationNotSupportedReason'
        isNonRefundableAndNonExchangeable:
          type: boolean
          description: If true, the ticket is not refundable and not exchangeable.
          readOnly: true
    TicketScheduleChangeInformation:
      type: object
      title: TicketScheduleChangeInformation
      description: Schedule change information for this ticket
      properties:
        possibleActions:
          type: array
          items:
            description: >-
              Actions allowed for the user on the schedule change for this
              ticket
            type: string
            enum:
              - ACCEPT_BOOKING
              - CANCEL_BOOKING
              - MODIFY_BOOKING
              - CONTACT_AGENT
            example: ACCEPT_BOOKING
        refundInfo:
          $ref: '#/components/schemas/ScheduleChangeRefundInfo'
    TicketStatus:
      description: Status of the ticket.
      type: string
      enum:
        - UNKNOWN
        - ISSUED
        - VOIDED
        - REFUNDED_EXCHANGED
        - EXCHANGED
      example: ISSUED
    Tier:
      type: string
      title: Tier
      description: Tier of User
      enum:
        - BASIC
        - SEAT1A
      x-enum-varnames:
        - BASIC
        - SEAT1A
      example: SEAT1A
      default: BASIC
    TimeLocal:
      title: TimeLocal
      description: ISO8601 Local Time
      type: object
      required:
        - iso8601
      properties:
        iso8601:
          type: string
          pattern: ^([01][0-9]|2[0-4]):([0-5][0-9])(:([0-5][0-9]))?$
          example: '17:32'
    TmcBasicInfo:
      type: object
      title: TmcBasicInfo
      description: TMC related basic information.
      required:
        - contractingTmc
        - bookingTmc
      properties:
        contractingTmc:
          $ref: '#/components/schemas/CompanyRef'
          description: Contracting TMC is the TMC the user/organization contracted.
        bookingTmc:
          $ref: '#/components/schemas/CompanyRef'
          description: >-
            Booking TMC is the TMC used for the bookings for the
            user/organization.
    TmcInfo:
      type: object
      title: TmcInfo
      description: TMC config information.
      required:
        - id
        - primaryServiceProviderTmc
      properties:
        id:
          $ref: '#/components/schemas/CompanyId'
          description: TMC id.
        primaryServiceProviderTmc:
          $ref: '#/components/schemas/PrimaryServiceProviderTmc'
          description: Primary service provider TMC for the TMC.
        secondaryServiceProviderTmcs:
          type: array
          description: Secondary service provider TMCs for the TMC.
          items:
            $ref: '#/components/schemas/SecondaryServiceProviderTmc'
        partnerTmcId:
          $ref: '#/components/schemas/CompanyId'
          description: Useful to identify the clients onboarded by a PARTNER_TMC
    TokenizedExpiry:
      title: TokenizedExpiry
      type: object
      description: Contains the tokenized expiry of a Card.
      required:
        - expiryMonth
        - expiryYear
      properties:
        expiryMonth:
          type: string
          description: Tokenized Expiry month
          example: KvAuPANQWCpjwRQxcC8EXg==
        expiryYear:
          type: string
          description: Tokenized Expiry year
          example: fPBm0OWrKwPyIrCVcbg4cA==
    TokenizedExpiryWrapper:
      type: object
      title: TokenizedExpiryWrapper
      properties:
        tokenizedExpiry:
          $ref: '#/components/schemas/TokenizedExpiry'
    Transmission:
      type: string
      title: Transmission
      description: Transmission types.
      enum:
        - UNKNOWN_TRANSMISSION
        - MANUAL_UNSPECIFIED_DRIVE
        - MANUAL_4WD
        - MANUAL_AWD
        - AUTO_UNSPECIFIED_DRIVE
        - AUTO_4WD
        - AUTO_AWD
      x-enum-varnames:
        - UNKNOWN_TRANSMISSION
        - MANUAL_UNSPECIFIED_DRIVE
        - MANUAL_4WD
        - MANUAL_AWD
        - AUTO_UNSPECIFIED_DRIVE
        - AUTO_4WD
        - AUTO_AWD
      example: MANUAL_4WD
    TransmissionSearchFilter:
      type: string
      description: Transmission type for Filters
      title: TransmissionSearchFilter
      enum:
        - MANUAL
        - AUTOMATIC
      example: AUTOMATIC
    TravelClassHierarchy:
      type: string
      description: >
        Rail Travel classes in hierarchy numbering higher to keep scope for
        future additions in 

        between.
      enum:
        - UNKNOWN
        - STANDARD
        - COACH
        - STANDARD_PREMIUM
        - BUSINESS
        - BUSINESS_PREMIUM
        - FIRST
        - SLEEPER
      example: STANDARD
    TravelClassHierarchyWrapper:
      type: object
      title: TravelClassHierarchyWrapper
      properties:
        railTravelClass:
          $ref: '#/components/schemas/TravelClassHierarchy'
    TravelPref:
      type: object
      title: TravelPref
      description: Travel preferences.
      properties:
        airPref:
          $ref: '#/components/schemas/AirPref'
        preferredCurrency:
          type: string
          example: USD
        railCards:
          type: array
          items:
            $ref: '#/components/schemas/RailCard'
        railPref:
          $ref: '#/components/schemas/RailPref'
        carPref:
          $ref: '#/components/schemas/CarPref'
        hotelPref:
          $ref: '#/components/schemas/HotelPref'
    TravelRegionType:
      type: string
      title: TravelRegionType
      description: Travel region Type
      enum:
        - DOMESTIC
        - INTERNATIONAL
      example: DOMESTIC
    TravelType:
      type: string
      title: TravelType
      description: Travel Type
      enum:
        - AIR
        - HOTEL
        - CAR
        - RAIL
        - LIMO
        - MISC
        - ALL
      example: AIR
    Traveler:
      type: object
      title: Traveler
      description: Traveler details.
      deprecated: true
      properties:
        travelerPersonalInfo:
          $ref: '#/components/schemas/TravelerPersonalInfo'
        user:
          $ref: '#/components/schemas/User'
        userBusinessInfo:
          $ref: '#/components/schemas/UserBusinessInfo'
        userOrgId:
          $ref: '#/components/schemas/UserOrgId'
        persona:
          $ref: '#/components/schemas/Persona'
        isActive:
          type: boolean
          description: A boolean flag to show if traveler is active.
          example: true
        tier:
          $ref: '#/components/schemas/Tier'
        adhocUserInfo:
          $ref: '#/components/schemas/AdhocUserInfo'
        externalId:
          type: string
          description: External id of this user.
    TravelerBusinessInfo:
      type: object
      title: TravelerBusinessInfo
      description: Business information of the traveler
      properties:
        legalEntity:
          $ref: '#/components/schemas/TravelerLegalEntity'
        companyId:
          $ref: '#/components/schemas/CompanyId'
          deprecated: true
        companyInfo:
          $ref: '#/components/schemas/TravelerCompanyInfo'
        workerType:
          $ref: '#/components/schemas/WorkerType'
        employeeId:
          type: string
          description: Employee id of the user
          example: '1234'
        companySpecifiedAttributes:
          type: array
          items:
            $ref: '#/components/schemas/CompanySpecifiedAttribute'
        userCostCenter:
          $ref: '#/components/schemas/CostCenter'
        grade:
          $ref: '#/components/schemas/Grade'
        office:
          $ref: '#/components/schemas/Office'
        department:
          $ref: '#/components/schemas/DepartmentV2'
        accountingCode:
          type: string
          description: Code used for accounting.
          example: '123'
    TravelerCompanyInfo:
      type: object
      title: TravelerCompanyInfo
      description: Company information of the traveler
      properties:
        id:
          $ref: '#/components/schemas/CompanyId'
        name:
          type: string
          description: Name of the company
          example: Spotnana
        externalId:
          type: string
          description: External Id of the company
          example: abcd
    TravelerEventSummary:
      title: TravelerEventSummary
      type: object
      description: Event summary for a traveler
      required:
        - id
      properties:
        id:
          type: string
          description: Event ID
          example: '12345'
        name:
          type: string
          description: Name of the event
          example: My event
        description:
          type: string
          description: Description of the event
          example: This is an event description
        startDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
        endDateTime:
          $ref: '#/components/schemas/DateTimeLocal'
        location:
          $ref: '#/components/schemas/EventLocation'
        contacts:
          type: array
          description: Event contacts for the traveler
          items:
            $ref: '#/components/schemas/UserId'
          deprecated: true
        documents:
          type: array
          description: List of documents associated with this event for the traveler
          items:
            $ref: '#/components/schemas/Document'
        bookingGuidelines:
          description: Booking details allowed for the event for the traveler
          type: array
          items:
            $ref: '#/components/schemas/EventBookingGuideline'
        allowedBookingTypes:
          type: array
          description: Allowed booking types for the event for the traveler
          items:
            $ref: '#/components/schemas/EventAllowedBookingType'
        eventUserRsvp:
          $ref: '#/components/schemas/EventUserRsvp'
        contactInfoList:
          type: array
          description: Event contacts for the traveler
          items:
            $ref: '#/components/schemas/EventUserInfo'
        companyId:
          $ref: '#/components/schemas/EntityId'
        runningStatus:
          $ref: '#/components/schemas/EventRunningStatus'
        status:
          $ref: '#/components/schemas/EventStatus'
        isRemovedParticipant:
          type: boolean
          description: Whether the traveler is part of the event.
    TravelerInfo:
      title: TravelerInfo
      type: object
      description: Traveler air booking info
      required:
        - travelerIdx
        - booking
      properties:
        airVendorCancellationInfo:
          $ref: '#/components/schemas/AirVendorCancellationInfo'
        travelerIdx:
          type: integer
          description: Index of traveler in travelers list to which this info belongs
          format: int32
          example: 0
          minimum: 0
        userId:
          $ref: '#/components/schemas/UserId'
          description: User ID of traveler to which this TravelerInfo object belongs
        paxType:
          $ref: '#/components/schemas/PassengerType'
        tickets:
          type: array
          description: Tickets belonging to this traveler
          items:
            $ref: '#/components/schemas/Ticket'
        boardingPass:
          type: array
          description: Boarding pass details.
          items:
            $ref: '#/components/schemas/BoardingPass'
        booking:
          description: Info about items booked for this traveler eg. flights, seats, etc.
          $ref: '#/components/schemas/Booking'
        appliedCredits:
          type: array
          description: Information about credit redeemed in booking.
          items:
            $ref: '#/components/schemas/AppliedCreditInfo'
        specialServiceRequestInfos:
          type: array
          description: >-
            List of all the Special Service Requests associated with the
            traveler.
          items:
            $ref: '#/components/schemas/SpecialServiceRequestInfoDetail'
    TravelerInfoResponse:
      title: TravelerInfoResponse
      description: >
        The traveler identifiers. These can be either the Spotnana user IDs of
        the travelers or information regarding

        the adhoc travelers.
      type: object
      oneOf:
        - $ref: '#/components/schemas/UserIdWrapper'
        - $ref: '#/components/schemas/AdhocTravelerInfoWrapper'
    TravelerLegalEntity:
      type: object
      title: TravelerLegalEntity
      description: Legal entity of the traveler
      properties:
        id:
          type: string
          description: Legal entity ID
        name:
          type: string
          description: Name of the legal entity
          example: Spotnana India
        ein:
          type: string
          description: EIN of the traveler
        externalId:
          type: string
          description: External Id of the legal entity
          example: abcd
        companySpecifiedAttributes:
          type: array
          items:
            $ref: '#/components/schemas/CompanySpecifiedAttributeLegalEntity'
    TravelerMatchConditions:
      type: object
      title: TravelerMatchConditions
      description: Matching conditions for traveler.
      properties:
        workerTypes:
          type: array
          description: Worker types. Users belonging to any of these would match.
          items:
            $ref: '#/components/schemas/WorkerType'
        countries:
          type: array
          description: Countries.
          items:
            type: string
        legalEntities:
          type: array
          description: Legal entities
          items:
            $ref: '#/components/schemas/Reference'
        departments:
          type: array
          description: Departments
          items:
            $ref: '#/components/schemas/Reference'
        costCenters:
          type: array
          description: Cost centers
          items:
            $ref: '#/components/schemas/Reference'
        offices:
          type: array
          description: Offices
          items:
            $ref: '#/components/schemas/Reference'
    TravelerPersonalInfo:
      type: object
      title: TravelerPersonalInfo
      description: Traveler personal information.
      properties:
        loyaltyInfos:
          type: array
          items:
            $ref: '#/components/schemas/LoyaltyInfo'
        travelPref:
          $ref: '#/components/schemas/TravelPref'
    TravelerRailInfo:
      type: object
      properties:
        travelerIndex:
          type: integer
          format: int32
        userId:
          $ref: '#/components/schemas/UserId'
          description: User ID of traveler to which this TravelerInfo belongs
        railCard:
          $ref: '#/components/schemas/RailCard'
        loyaltyDetails:
          $ref: '#/components/schemas/LoyaltyDetails'
    TripAdditionalInfo:
      title: TripAdditionalInfo
      description: Additional information about the trip
      type: object
      properties:
        vpayBillBack:
          type: string
          description: >-
            Vpay bill back indicator. Can be one of N(none), C(only car), H(only
            hotel), B(both) depending on whether there is an active hotel or car
            pnr using virtual card.
          example: B
    TripBudgetInfo:
      title: TripBudgetInfo
      description: Trip budget Info
      type: object
      required:
        - budgetName
        - isMaskedBudget
      properties:
        budgetName:
          type: string
          description: Name of the budget
        budgetRemainingBalance:
          $ref: '#/components/schemas/SimpleMoney'
          description: >
            Remaining balance of the budget. It will be present only if the user
            has role agent and 

            above.
        isPersonalCardAllowed:
          type: boolean
          description: Whether the personal card is allowed for the trip.
          example: true
          default: false
        isBudgetMasked:
          type: boolean
          description: Whether the budget is masked.
          example: false
          default: false
        budgetRemainingBalanceFormatted:
          type: string
          description: Remaining balance of the budget in formatted string.
          example: $1000.00
        externalCardDetails:
          $ref: '#/components/schemas/Card'
          description: Details of the external card.
        isRewardPointsAllowed:
          type: boolean
          description: Whether the reward points are allowed on the budget.
          example: true
          default: false
        rewardPoints:
          type: number
          format: double
          description: Available reward point balance.
          example: 5050
        rewardPointsValueUsd:
          type: number
          format: double
          description: Available reward points value in USD.
          example: 50.5
    TripBudgetInfoWrapper:
      title: TripBudgetInfoWrapper
      description: Trip budget info wrapper
      type: object
      properties:
        tripBudgetInfo:
          $ref: '#/components/schemas/TripBudgetInfo'
    TripEventMetadata:
      title: TripEventMetadata
      description: Metadata associated with an event trip.
      type: object
      required:
        - eventId
      properties:
        eventId:
          type: string
          description: The event id.
          example: '123456789'
    TripPartnerInfo:
      title: TripPartnerInfo
      description: Partner info such as budget info for a given trip Id.
      type: object
      required:
        - partnerInfoType
        - partnerInfoDetails
      properties:
        partnerInfoType:
          $ref: '#/components/schemas/TripPartnerInfoType'
        partnerInfoDetails:
          $ref: '#/components/schemas/TripPartnerInfoDetails'
    TripPartnerInfoDetails:
      title: TripPartnerInfoDetailsWrapper
      description: OneOf trip partner info Details
      type: object
      oneOf:
        - $ref: '#/components/schemas/TripBudgetInfoWrapper'
    TripPartnerInfoResponse:
      title: TripPartnerInfoResponse
      description: Partner info such as budget info for a given trip Id.
      type: object
      required:
        - tripId
        - partnerInfo
      properties:
        tripId:
          type: string
          description: Spotnana trip Id
          example: '6926658168'
        partnerInfo:
          $ref: '#/components/schemas/TripPartnerInfo'
    TripPartnerInfoType:
      type: string
      description: Trip Partner Info type.
      default: BUDGET
      enum:
        - BUDGET
    TripPaymentInfo:
      title: TripPaymentInfo
      description: >-
        Payment info for a given trip. Fares of pending manual form and pending
        shell pnrs are not considered.
      type: object
      required:
        - totalFare
      properties:
        totalFare:
          $ref: '#/components/schemas/Money'
          description: >-
            It is total cost of the trip in form of money. It also includes
            service fee if visibleToTraveler is true.
        totalFareAmount:
          $ref: '#/components/schemas/FareAmount'
          description: >-
            It is Total cost of trip in form of FareAmount with base and tax. It
            does not include service fee.
        serviceFeeFareAmount:
          description: The service fees fare amount of this trip.
          $ref: '#/components/schemas/FareAmount'
    TripUsageMetadata:
      title: TripUsageMetadata
      description: Usage metadata associated with the trip entity.
      type: object
      required:
        - tripUsageType
      properties:
        tripUsageType:
          description: The trip usage type for the trip entity.
          $ref: '#/components/schemas/TripUsageType'
        eventMetadata:
          description: Metadata associated with the event if trip usage type is event.
          $ref: '#/components/schemas/TripEventMetadata'
    TripUsageType:
      title: TripUsageType
      description: Trip usage type.
      type: string
      enum:
        - STANDARD
        - EVENT
    TripV3DetailsResponse:
      title: TripDetailsResponse
      description: Trip Details Response for a given trip Id
      type: object
      required:
        - basicTripInfo
        - pnrs
      properties:
        basicTripInfo:
          $ref: '#/components/schemas/BasicTripInfo'
        pnrs:
          type: array
          items:
            $ref: '#/components/schemas/PnrDetailsResponseWithId'
        pendingShellPnrs:
          type: array
          items:
            $ref: '#/components/schemas/PnrDetailsResponseWithId'
        pendingManualFormPnrs:
          type: array
          items:
            $ref: '#/components/schemas/PnrDetailsResponseWithId'
        tripStatus:
          deprecated: true
          $ref: '#/components/schemas/PnrBookingStatus'
        tripBookingStatus:
          $ref: '#/components/schemas/UserFacingStatus'
        eventSummary:
          hidden: true
          $ref: '#/components/schemas/TravelerEventSummary'
        simplePnrs:
          type: array
          items:
            $ref: '#/components/schemas/SimplePnr'
        additionalInfo:
          $ref: '#/components/schemas/TripAdditionalInfo'
        tripPaymentInfo:
          $ref: '#/components/schemas/TripPaymentInfo'
    UAPassPlusMetadata:
      type: object
      title: UAPassPlusMetadata
      description: Details for UAPassPlus Metadata.
      required:
        - programDetails
        - uatpInfo
      properties:
        programDetails:
          $ref: '#/components/schemas/ProgramDetails'
        uatpInfo:
          $ref: '#/components/schemas/UATPInformation'
    UAPassPlusMetadataWrapper:
      type: object
      title: UAPassPlusMetadataWrapper
      description: Wrapper for UAPassPlus Metadata.
      properties:
        uaPassPlusMetadata:
          $ref: '#/components/schemas/UAPassPlusMetadata'
    UATPInformation:
      type: object
      title: UATPInformation
      description: Descriptor for UATPInformation.
      required:
        - card
        - ticketingValidity
        - travelValidity
      properties:
        card:
          $ref: '#/components/schemas/Card'
        ticketingValidity:
          description: Valid ticketing datetime.
          $ref: '#/components/schemas/DateTimeRange'
        travelValidity:
          description: Valid travel datetime.
          $ref: '#/components/schemas/DateTimeRange'
    UATPMetadata:
      type: object
      title: UATPMetadata
      description: Details for UATP Metadata.
      required:
        - card
      properties:
        card:
          $ref: '#/components/schemas/Card'
    UATPMetadataWrapper:
      type: object
      title: UATPMetadataWrapper
      description: Wrapper for UATP Metadata.
      properties:
        uatpMetadata:
          $ref: '#/components/schemas/UATPMetadata'
    UnusedCreditInfo:
      type: object
      title: UnusedCreditInfo
      description: Information regarding an unused credit.
      properties:
        sourcePnr:
          type: string
          description: >-
            PNR number corresponding to third party through which booking was
            made.
          example: MC5ONS
        spotnanaPnr:
          type: string
          description: Spotnana pnr ID.
          example: '2345678'
        ticketNumber:
          type: string
          description: >-
            Ticket number for the ticket that was converted into an unused
            credit.
          example: '5267779139217'
        airlineCode:
          type: string
          description: >-
            2 letter airline code of the airline associated with this unused
            credit.
          example: AA
        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'
        usedDate:
          description: Date on which the unused credit was used.
          $ref: '#/components/schemas/DateTimeOffset'
        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
        passengerName:
          description: Name of the passenger associated with the credit.
          $ref: '#/components/schemas/Name'
        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
            - NON_GDS
        pcc:
          type: string
          description: PCC the credit was issued on.
        status:
          $ref: '#/components/schemas/CreditStatus'
        source:
          $ref: '#/components/schemas/ThirdPartySource'
          default: SABRE
          description: Source of unused credit e.g. Sabre, NDC etc.
        tripId:
          type: string
          description: Trip ID that contains the unused credit
          example: '1234567'
        redeemVia:
          type: string
          description: The way credit can be redeemed.
          enum:
            - REDEEM_VIA_OBT
            - CONTACT_AGENT
          example: REDEEM_VIA_OBT
        sourceOfTruth:
          type: string
          description: The system that owns the credit.
          enum:
            - SPOTNANA
            - MANUAL_FORM
        owningPcc:
          type: string
          description: PCC the PNR was created on.
    UpdateTripRequest:
      title: UpdateTripRequest
      description: Basic trip info
      type: object
      required:
        - tripId
        - tripName
      properties:
        tripId:
          type: string
          description: Spotnana trip Id
          example: '6926658168'
        tripName:
          type: string
          description: Name of the trip
          example: JFK SFO Trip
        tripDescription:
          type: string
          description: Trip description
          example: JFK SFO Business Trip
    User:
      type: object
      title: User
      description: User details.
      properties:
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/PostalAddress'
        dob:
          $ref: '#/components/schemas/DateModel'
        email:
          type: string
          format: email
          example: example@email.com
        emergencyContactInfo:
          deprecated: true
          $ref: '#/components/schemas/EmergencyContactInfo'
        emergencyContact:
          $ref: '#/components/schemas/EmergencyContact'
        gender:
          $ref: '#/components/schemas/Gender'
        identityDocs:
          description: List of user identity documents.
          type: array
          items:
            $ref: '#/components/schemas/IdentityDocument'
          example:
            - passport:
                docId: PASSPORTID
                expiryDate:
                  iso8601: '2017-07-21'
                issueCountry: IN
                issuedDate:
                  iso8601: '2017-07-21'
                nationalityCountry: IN
                type: REGULAR
            - ktn:
                number: '123456'
                issueCountry: US
        name:
          $ref: '#/components/schemas/Name'
        paymentInfos:
          type: array
          items:
            $ref: '#/components/schemas/PaymentInfo'
        phoneNumbers:
          type: array
          items:
            $ref: '#/components/schemas/PhoneNumber'
        profilePicture:
          $ref: '#/components/schemas/Image'
        nationality:
          type: string
          example: Indian
          description: Nationality of user
        title:
          $ref: '#/components/schemas/UserTitle'
    UserBasicInfo:
      type: object
      title: UserBasicInfo
      description: Basic user information.
      properties:
        userOrgId:
          $ref: '#/components/schemas/UserOrgId'
        persona:
          $ref: '#/components/schemas/Persona'
        email:
          type: string
          format: email
          example: example@email.com
        name:
          $ref: '#/components/schemas/Name'
        profilePicture:
          $ref: '#/components/schemas/Image'
        tier:
          $ref: '#/components/schemas/Tier'
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber'
        employeeId:
          type: string
          description: Employee id of the user
        isActive:
          type: boolean
          description: Whether user profile is active or not.
          example: true
    UserBusinessInfo:
      type: object
      title: UserBusinessInfo
      description: User business information.
      required:
        - email
        - employeeId
        - organizationId
        - legalEntityId
      properties:
        department:
          $ref: '#/components/schemas/Department'
        designation:
          type: string
          example: MANAGER
        email:
          type: string
          format: email
          example: user@business.com
        employeeId:
          description: >-
            Unique employee id. Can use email if a company don't use employee
            ids.
          type: string
          example: '101'
        grade:
          $ref: '#/components/schemas/Grade'
        legalEntityId:
          $ref: '#/components/schemas/LegalEntityId'
        managerBasicInfo:
          $ref: '#/components/schemas/UserBasicInfo'
        office:
          $ref: '#/components/schemas/Office'
        organizationId:
          $ref: '#/components/schemas/OrganizationId'
        phoneNumbers:
          type: array
          items:
            $ref: '#/components/schemas/PhoneNumber'
        userCostCenter:
          $ref: '#/components/schemas/CostCenter'
        designatedApproverInfos:
          deprecated: true
          type: array
          description: A list of user basic info for designated approvers.
          items:
            $ref: '#/components/schemas/UserBasicInfo'
        designatedApproverUserIds:
          type: array
          description: A list of userId for designated approvers.
          items:
            $ref: '#/components/schemas/UserId'
        authorizerEmail:
          type: string
          description: >-
            Email address to be used as approval authorizer, when a manager is
            not present.
          deprecated: true
          example: example@email.com
    UserFacingStatus:
      type: string
      title: UserFacingStatus
      description: User facing booking status
      enum:
        - UNKNOWN_STATUS
        - PENDING_STATUS
        - CONFIRMED_STATUS
        - ACTIVE_STATUS
        - COMPLETED_STATUS
        - CANCELLED_STATUS
        - REFUNDED_STATUS
        - VOIDED_STATUS
        - PROCESSING_STATUS
        - UNCONFIRMED_STATUS
        - AIRLINE_CONTROL_STATUS
        - PAYMENT_DECLINED_STATUS
        - SCHEDULE_CHANGE_STATUS
        - HOLD_STATUS
        - APPROVAL_REQUESTED_STATUS
        - APPROVAL_DENIED_STATUS
        - CANCELLATION_IN_PROGRESS_STATUS
        - INOPERATIVE_STATUS
        - FLIGHT_UNCONFIRMED_STATUS
      example: PENDING_STATUS
    UserId:
      type: object
      title: UserId
      description: User identifier
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
    UserIdWrapper:
      title: UserIdWrapper
      description: Wrapper over UserId object to be used as an identifier in a oneOf case
      properties:
        userId:
          $ref: '#/components/schemas/UserId'
    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
        tmcBasicInfo:
          $ref: '#/components/schemas/TmcBasicInfo'
    UserOrgIdListWrapper:
      type: object
      title: UserOrgIdListWrapper
      properties:
        userOrgIdList:
          type: array
          items:
            $ref: '#/components/schemas/UserOrgId'
    UserOrgIdWrapper:
      type: object
      title: UserOrgIdWrapper
      properties:
        userOrgId:
          $ref: '#/components/schemas/UserOrgId'
    UserPersonalInfo:
      type: object
      title: UserPersonalInfo
      description: User details.
      properties:
        addresses:
          type: array
          items:
            $ref: '#/components/schemas/PostalAddress'
        dob:
          $ref: '#/components/schemas/DateModel'
        email:
          type: string
          format: email
          example: example@email.com
        emergencyContactInfo:
          deprecated: true
          $ref: '#/components/schemas/EmergencyContactInfo'
        gender:
          $ref: '#/components/schemas/Gender'
        identityDocs:
          type: array
          description: List of user identity documents.
          items:
            $ref: '#/components/schemas/IdentityDocument'
          example:
            - passport:
                docId: PASSPORTID
                expiryDate:
                  iso8601: '2017-07-21'
                issueCountry: IN
                issuedDate:
                  iso8601: '2017-07-21'
                nationalityCountry: IN
                type: REGULAR
            - ktn:
                number: '123456'
                issueCountry: US
        name:
          $ref: '#/components/schemas/Name'
        phoneNumbers:
          type: array
          items:
            $ref: '#/components/schemas/PhoneNumber'
        profilePicture:
          $ref: '#/components/schemas/Image'
        nationality:
          type: string
          example: Indian
          description: Nationality of user
        title:
          $ref: '#/components/schemas/UserTitle'
        preferredLanguage:
          type: string
          description: Language preferred by user.
          example: en-US
        preferredPronoun:
          description: Pronoun preferred by user.
          $ref: '#/components/schemas/PreferredPronoun'
        travelerName:
          description: A name of user that does not contain special characters.
          $ref: '#/components/schemas/Name'
        emergencyContact:
          $ref: '#/components/schemas/EmergencyContact'
    UserTitle:
      title: UserTitle
      type: string
      enum:
        - TITLE_UNKNOWN
        - MR
        - MS
        - MRS
        - MX
        - MASTER
        - MISS
        - DR
        - PROFESSOR
        - CAPTAIN
        - REVEREND
        - HONOURABLE
        - SIR
        - LADY
        - AMBASSADOR
        - LORD
        - BRIGADIER
        - SENATOR
        - DAME
        - JUSTICE
        - UK
      example: MR
    Vendor:
      type: object
      description: Car vendor.
      required:
        - code
        - name
      properties:
        code:
          type: string
          description: Vendor code.
          example: ZE
        name:
          type: string
          description: Vendor name.
          example: HERTZ
        email:
          type: string
          description: Vendor email.
          example: abc@xyz.com
        phone:
          description: Vendor contact number.
          $ref: '#/components/schemas/PhoneNumber'
    VendorInfo:
      type: object
      title: VendorInfo
      description: Name/ID etc. of the vendor.
      required:
        - vendorId
        - vendorName
      properties:
        vendorId:
          type: string
          description: ID of the vendor.
        vendorName:
          type: string
          description: Name of the vendor.
    VendorProgramPaymentDescriptor:
      type: object
      title: VendorProgramPaymentDescriptor
      description: Descriptor for vendor program payment.
      required:
        - vendorProgramPaymentMetadata
      properties:
        vendorInfo:
          $ref: '#/components/schemas/VendorInfo'
        vendorProgramPaymentMetadata:
          $ref: '#/components/schemas/VendorProgramPaymentMetadata'
    VendorProgramPaymentDescriptorWrapper:
      type: object
      title: VendorProgramPaymentDescriptorWrapper
      description: Wrapper for VendorProgramPaymentDescriptor
      properties:
        vendorProgramPaymentDescriptor:
          $ref: '#/components/schemas/VendorProgramPaymentDescriptor'
    VendorProgramPaymentMetadata:
      type: object
      title: VendorProgramPaymentMetadata
      description: Vendor program payment specific metadata.
      oneOf:
        - $ref: '#/components/schemas/DirectBillingWrapper'
        - $ref: '#/components/schemas/AirlineProgramWrapper'
    VendorProgramPaymentMetadata2:
      type: object
      title: VendorProgramPaymentMetadata
      description: Metadata related to vendor program payment method
      oneOf:
        - $ref: '#/components/schemas/DirectBillingWrapper2'
    VirtualCardInfo:
      type: object
      title: VirtualCardInfo
      description: >-
        Virtual card information like maximum deployment amount, valid date
        range.
      properties:
        amount:
          description: >-
            Virtual card deployment amount. This amount will drive the maximum
            authorisation value permitted on the virtual card.
          $ref: '#/components/schemas/Money'
        dateRange:
          description: Date range within which the virtual card can be charged.
          $ref: '#/components/schemas/DateRange'
    VirtualCardMetadata:
      type: object
      title: VirtualCardMetadata
      description: Metadata for Virtual Card payment source.
      required:
        - vendor
        - cardLabel
        - company
      properties:
        vendor:
          $ref: '#/components/schemas/VirtualCardVendor'
        cardLabel:
          type: string
          description: Name/Label for visual identification of the card.
          example: cardCompany
        company:
          $ref: '#/components/schemas/CardCompany'
        paymentInstruction:
          $ref: '#/components/schemas/PaymentInstruction'
    VirtualCardMetadataWrapper:
      type: object
      title: VirtualCardMetadataWrapper
      description: Wrapper for VirtualCardMetadata
      properties:
        virtualCardMetadata:
          $ref: '#/components/schemas/VirtualCardMetadata'
    VirtualCardPaymentMetadata:
      title: VirtualCardPaymentMetadata
      type: object
      description: Metadata for Virtual Card.
      required:
        - vendorInfo
      properties:
        vendorInfo:
          $ref: '#/components/schemas/VirtualCardVendorInfo'
        cardInfo:
          $ref: '#/components/schemas/VirtualCardInfo'
        paymentInstructionId:
          type: string
          description: >-
            Payment instruction id set during addition of virtual card payment
            source
          example: 1eb8b778-f0a6-4037-865c-4580982fa36e
        shouldReveal:
          type: boolean
          description: >-
            Identifier for when to reveal virtual cards as they are revealed to
            travellers only 24hrs before check-in.
          example: false
    VirtualCardVendor:
      type: string
      description: Type of Virtual card vendor
      enum:
        - CONFERMA
      example: CONFERMA
    VirtualCardVendorInfo:
      type: object
      title: VirtualCardVendorInfo
      description: >-
        Virtual card related information like vendor, cardId, card-pool id of
        vendor etc.
      required:
        - vendorCardId
        - virtualCardVendorCardPoolId
      properties:
        vendor:
          $ref: '#/components/schemas/VirtualCardVendor'
        vendorCardId:
          type: string
          description: Virtual card id.
          example: '68793680'
        virtualCardVendorCardPoolId:
          type: string
          description: Card pool id of virtual card vendor.
          example: '51907'
        confermaInfo:
          $ref: '#/components/schemas/ConfermaInfo'
    Voucher:
      type: object
      title: Voucher
      description: Voucher details
      required:
        - amount
      properties:
        amount:
          description: Amount in the voucher.
          $ref: '#/components/schemas/SimpleMoney'
    WeightLimit:
      description: The weight limit of a baggage option.
      type: object
      properties:
        weight:
          description: The weight limit of a baggage option.
          type: number
          example: 32
        unit:
          description: The unit of measurement for the weight limit.
          type: string
          enum:
            - kg
            - lb
          example: kg
    WorkerType:
      type: string
      description: The type of worker.
      enum:
        - EMPLOYEE
        - CONTINGENT
        - SEASONAL
        - INTERN
      example: EMPLOYEE
    WorkerTypeListWrapper:
      type: object
      title: WorkerTypeListWrapper
      properties:
        workerTypeList:
          type: array
          items:
            $ref: '#/components/schemas/WorkerType'
    WorkerTypeWrapper:
      type: object
      title: WorkerTypeWrapper
      properties:
        workerType:
          $ref: '#/components/schemas/WorkerType'
tags:
  - name: Trips
    description: APIs to manage trips and PNRs.
paths:
  /v2/list-organisation-trips:
    post:
      tags:
        - Trips
      summary: List trips
      description: >
        This endpoint returns the trips and associated PNR's for an
        organisation, depending on the

        updated time and pnrType.
      operationId: listOrganisationTrips
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListOrganisationTripsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOrganisationTripsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/trips:
    post:
      tags:
        - Trips
      summary: Create trip
      description: >
        This endpoint creates a trip object. A trip is a container object for
        all related PNRs associated 

        with a trip.
      operationId: createTrip
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateTripRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityNonUUIDId'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/trips/{tripId}:
    parameters:
      - name: tripId
        in: path
        description: Identifier for trip.
        required: true
        schema:
          type: string
        example: '2398199412'
    get:
      tags:
        - Trips
      summary: Get trip
      description: This endpoint gets trip by ID.
      operationId: readTrip
      x-draft: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BasicTripInfo'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - Trips
      summary: Update trip
      operationId: updateTrip
      description: This endpoint updates trip by ID.
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateTripRequest'
      responses:
        '204':
          description: Updated Successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/{tripId}/detail:
    parameters:
      - name: tripId
        in: path
        description: Trip ID
        required: true
        schema:
          type: string
          example: '6926658168'
      - name: refreshType
        in: query
        description: Refresh Type
        schema:
          $ref: '#/components/schemas/RefreshType'
    get:
      tags:
        - Trips
      summary: Get trip details
      description: This endpoint gets trip details for a given trip ID.
      operationId: getTripDetailsV3
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TripV3DetailsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/{tripId}/pnrs:
    parameters:
      - name: tripId
        in: path
        description: Trip ID
        required: true
        schema:
          type: string
          example: '6926658168'
    post:
      tags:
        - Trips
      summary: Create PNR
      description: >
        This endpoint creates a PNR. A PNR represents a booking in spotnana.
        This could be Air/Hotel/Car/Rail booking. 

        This endpoint is used to creare PNR document for a booking that is
        created outside Spotnana platform and its

        details  are to be put in Spotnana.
      operationId: createPnrV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PnrData'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityNonUUIDId'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v3/trips/{tripId}/pnrs/{pnrId}:
    parameters:
      - name: tripId
        in: path
        description: Trip ID
        required: true
        schema:
          type: string
          example: '6926658168'
      - name: pnrId
        in: path
        description: Pnr Id
        required: true
        schema:
          type: string
          example: '6926658168'
    get:
      tags:
        - Trips
      summary: Get PNR
      description: This endpoint gets PNR for a given trip ID and PNR ID.
      operationId: getPnrV3
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PnrData'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - Trips
      summary: Update PNR
      description: This endpoint updates PNR by ID.
      operationId: updatePnrV3
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PnrData'
      responses:
        '204':
          description: Updated Successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/{tripId}/pnrs/{pnrId}/remarks:
    parameters:
      - name: tripId
        in: path
        description: Trip ID
        required: true
        schema:
          type: string
          example: 6926658168
      - name: pnrId
        in: path
        description: PNR ID
        required: true
        schema:
          type: string
          example: 6926658168
    post:
      tags:
        - Trips
      summary: Add Remark
      description: This endpoint provided adding third party remarks to the given PNR.
      operationId: addRemarkV3
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddRemarksRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddRemarksResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/{tripId}/pnrs/{pnrId}/finalize:
    parameters:
      - name: tripId
        in: path
        description: Trip Id
        required: true
        schema:
          type: string
          example: '6926658168'
      - name: pnrId
        in: path
        description: Pnr Id
        required: true
        schema:
          type: string
          example: '6926658168'
    post:
      tags:
        - Trips
      summary: Finalize the given pnr.
      description: >-
        This endpoint changes the metadata of PNR to finalized and triggers
        supplier actions if required.
      operationId: finalizePnr
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FinalizeRequest'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/{tripId}/pnrs/{pnrId}/suspend:
    parameters:
      - name: tripId
        in: path
        description: Trip Id
        required: true
        schema:
          type: string
          example: '6926658168'
      - name: pnrId
        in: path
        description: Pnr Id
        required: true
        schema:
          type: string
          example: '6926658168'
    post:
      tags:
        - Trips
      summary: Suspend the given pnr.
      description: >
        This endpoint suspends the PNR, transitioning it into a read-only state.

        Once suspended, updates via OBT will be restricted.

        This API serves various use cases, such as price optimization and
        rebooking.
      operationId: suspendPnr
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SuspendRequest'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/{tripId}:
    parameters:
      - name: tripId
        in: path
        description: Trip ID
        required: true
        schema:
          type: string
          example: '6926658168'
    delete:
      tags:
        - Trips
      summary: Delete trip
      description: This endpoint deletes a trip by ID.
      operationId: deleteTrip
      responses:
        '204':
          description: Deleted Successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/trips/{tripId}/pnrs/{pnrId}/download-invoice:
    parameters:
      - name: tripId
        in: path
        description: Trip Id
        required: true
        schema:
          type: string
          example: '6926658168'
      - name: pnrId
        in: path
        description: Pnr Id
        required: true
        schema:
          type: string
          example: '2643222286'
    post:
      tags:
        - Trips
      summary: Download PNR invoice
      description: >-
        This endpoint downloads invoice on demand for a given trip ID and PNR
        ID.
      operationId: downloadInvoice
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DownloadInvoiceResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/invoicing/invoice-data:
    post:
      tags:
        - Invoicing
      summary: Get Invoice Data
      description: This endpoint gets the invoice data for given invoice numbers
      operationId: getInvoiceData
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/InvoiceDataRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvoiceDataResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/trips/{tripId}/pnrs/{pnrId}/cancel:
    parameters:
      - name: tripId
        in: path
        description: Trip ID
        required: true
        schema:
          type: string
          example: 6926658168
      - name: pnrId
        in: path
        description: PNR ID
        required: true
        schema:
          type: string
          example: 6926658168
    post:
      tags:
        - Trips
      summary: Cancel PNR
      description: >-
        This endpoint cancels PNR or part of PNR object.In case of partial PNR
        cancel we can cancel journey/ticket.
      operationId: cancelPnrV3
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PnrCancelRequest'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/trips/{tripId}/booker-email/{bookerEmailId}/partner-info:
    parameters:
      - name: tripId
        in: path
        description: Identifier for trip.
        required: true
        schema:
          type: string
        example: '2398199412'
      - name: bookerEmailId
        in: path
        description: Booker Email Id for whom budget info will be fetched.
        required: true
        schema:
          type: string
        example: akanksha@spotnana.com
    get:
      tags:
        - Trips
      summary: Get trip partner info
      description: This endpoint provides info related to partner for the trip.
      operationId: fetchTripPartnerInfo
      x-draft: true
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TripPartnerInfoResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/trips/{tripId}/pnrs/{pnrId}/cancellation-details:
    parameters:
      - name: tripId
        in: path
        description: Trip ID.
        required: true
        schema:
          type: string
          example: '1234567890'
      - name: pnrId
        in: path
        description: PNR ID.
        required: true
        schema:
          type: string
          example: '6926658168'
    get:
      tags:
        - Trips
      summary: Get cancellation details
      description: This endpoint gets cancellation details for a given trip ID and PNR ID.
      operationId: getCancellationDetails
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PnrCancellationDetails'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/pnrs:
    parameters:
      - name: externalId
        in: query
        description: External ID
        required: true
        schema:
          type: string
        example: external-pnr-id
    get:
      tags:
        - Trips
      summary: Get PNR by external Id
      description: This endpoint gets PNR Id and Trip Id for a given external Id.
      operationId: getPnrByExternalId
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PnrResponseOnExternalId'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/pnrs/{pnrId}/process-approval:
    parameters:
      - name: pnrId
        in: path
        description: Pnr Id
        required: true
        schema:
          type: string
        example: '6926658168'
    post:
      tags:
        - Trips
      summary: Process the PNR approval
      description: This endpoint process a PNR approval to approved or declined
      operationId: processPnrApproval
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessPnrApprovalRequest'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
