openapi: 3.1.0
info:
  title: Car API
  version: v2
servers:
  - url: https://api-ext-sboxmeta.partners.spotnana.com
    description: Sandbox URL
security:
  - Bearer: []
components:
  securitySchemes:
    Bearer:
      type: http
      scheme: bearer
  responses:
    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:
    AdditionalInfo:
      type: object
      title: AdditionalInfo
      description: Additional data need to be sent along with the custom field response.
      discriminator:
        propertyName: type
        mapping:
          VARIABLE: '#/components/schemas/Variable'
          EXPRESSION: '#/components/schemas/Expression'
      oneOf:
        - $ref: '#/components/schemas/Variable'
        - $ref: '#/components/schemas/Expression'
    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'
    AirConditioning:
      type: string
      title: AirConditioning
      description: Whether air conditioning is available.
      enum:
        - UNKNOWN_AC
        - AC_AVAILABLE
        - AC_NOT_AVAILABLE
      example: AC_AVAILABLE
    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'
    AirRestrictedFaresParams:
      type: object
      title: AirRestrictedFaresParams
      properties:
        airRestrictedKeywords:
          type: array
          description: List of keywords grouped by airline
          items:
            $ref: '#/components/schemas/AirRestrictedKeyword'
    AirRestrictedFaresParamsWrapper:
      type: object
      title: AirRestrictedFaresParamsWrapper
      properties:
        airRestrictedFaresParams:
          $ref: '#/components/schemas/AirRestrictedFaresParams'
    AirRestrictedKeyword:
      type: object
      title: AirRestrictedKeyword
      description: Airline/Keyword to be restricted
      required:
        - keyword
      properties:
        keyword:
          type: string
          description: Restricted keyword.
        airlineCode:
          type: string
          description: >-
            IATA airline code. If not set, the restriction applies to all
            airlines.
    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
    AmadeusCheckoutVerificationInfo:
      type: object
      required:
        - paymentActionTokens
      properties:
        paymentActionTokens:
          type: array
          items:
            $ref: '#/components/schemas/AmadeusPaymentActionToken'
        paymentRequestId:
          type: string
          deprecated: true
          x-sunset: '2026-07-01'
          description: Initial payment id generated by checkout SDK to initiate payment
        actionToken:
          type: string
          deprecated: true
          x-sunset: '2026-07-01'
          description: Token returned by checkout SDK to create/validate FOP in PSS order
        confirmPayment:
          type: boolean
          description: >-
            Flag which indicates that the payment confirmation is now required
            (after 3ds or redirection)
          deprecated: true
          x-sunset: '2026-07-01'
    AmadeusCheckoutVerificationInfoWrapper:
      type: object
      title: AmadeusCheckoutVerificationInfoWrapper
      description: Wrapper for amadeus checkout verification info object
      properties:
        amadeusCheckoutVerificationInfo:
          $ref: '#/components/schemas/AmadeusCheckoutVerificationInfo'
    AmadeusPaymentActionToken:
      type: object
      required:
        - paymentRequestId
        - actionToken
      properties:
        paymentRequestId:
          type: string
          description: Initial payment id generated by checkout SDK to initiate payment
        actionToken:
          type: string
          description: Token returned by checkout SDK to create/validate FOP in PSS order
    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.
    ApprovalType:
      type: string
      description: Type of APPROVAL
      enum:
        - HARD_APPROVAL
        - SOFT_APPROVAL
        - PASSIVE_APPROVAL
        - PRE_APPROVAL
      x-ignoreBreakingChanges:
        - ApprovalType->PRE_APPROVAL
      example: SOFT_APPROVAL
    ApproverDetails:
      title: ApproverDetails
      description: Details about an approver
      type: object
      properties:
        approverName:
          type: string
          description: Name of approver
          example: John Doe
        approverEmail:
          type: string
          description: Email of approver
          example: john.doe@company.com
        approverUserOrgId:
          $ref: '#/components/schemas/UserOrgId'
          description: User org id of the approver
        type:
          $ref: '#/components/schemas/ApproverType'
          description: Type of approver
    ApproverType:
      type: string
      title: ApproverType
      description: Type of approver
      enum:
        - UNKNOWN_APPROVER
        - APPROVER
        - AUTHORIZER
      example: APPROVER
    BookingCharge:
      type: object
      description: Details associated with a given payment method.
      properties:
        amount:
          $ref: '#/components/schemas/FareAmount'
          description: >
            The amount to be charged for this payment method. This is optional
            if

            there's only one payment method provided for the booking.
        paymentMethod:
          $ref: '#/components/schemas/SelectedPaymentMethod'
    BookingContact:
      type: object
      properties:
        emailAddress:
          type: string
          description: Email address of the booking contact
          example: mail@mail.com
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber'
    BookingPaymentDetails:
      type: object
      description: Payment details used for booking.
      required:
        - bookingTravelerPaymentDetails
      properties:
        bookingTravelerPaymentDetails:
          type: array
          items:
            $ref: '#/components/schemas/BookingTravelerPaymentDetails'
    BookingTravelerPaymentDetails:
      type: object
      description: >-
        List of different forms of payments used for booking for a set of
        travelers.
      required:
        - selectedFormOfPayments
      properties:
        selectedFormOfPayments:
          type: array
          items:
            $ref: '#/components/schemas/SelectedFormOfPayment'
    BoolWrapper:
      type: object
      title: BoolWrapper
      properties:
        b:
          type: boolean
    CarAdditionalDetail:
      type: object
      title: CarAdditionalDetail
      required:
        - additionalDetailType
        - text
      properties:
        carAdditionalDetailType:
          $ref: '#/components/schemas/CarAdditionalDetailType'
          description: Car Additional Detail Type.
        text:
          type: string
          description: Text description of additional detail.
          example: Driver needs to 25+
    CarAdditionalDetailType:
      type: string
      title: CarAdditionalDetailType
      description: Additional Detail Type.
      enum:
        - AGE_INFORMATION
        - DRIVER_INFORMATION
        - DROP_OFF_INFORMATION
        - FEES_INFORMATION
        - FUEL_INFORMATION
        - GEOGRAPHIC_RESTRICTIONS_INFORMATION
        - INSURANCE_INFORMATION
        - LICENSE_INFORMATION
        - SHUTTLE_INFORMATION
        - OTHER_INFORMATION
      example: AGE_INFORMATION
    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
    CarCancelPnrRequest:
      type: object
      required:
        - pnrId
      properties:
        pnrId:
          type: string
          description: The PNR ID of the car booking to be cancelled.
          example: 4974a66b
        customFieldUserResponses:
          type: array
          description: Custom field responses for the booking.
          items:
            $ref: '#/components/schemas/CustomFieldV3Response'
        waiveOffInfo:
          $ref: '#/components/schemas/WaiveOffInfo'
        postPaymentVerificationInfo:
          $ref: '#/components/schemas/PostPaymentVerificationInfo'
        bookingPaymentDetails:
          $ref: '#/components/schemas/BookingPaymentDetails'
    CarCancelPnrResponse:
      type: object
      required:
        - confirmationId
      properties:
        confirmationId:
          type: string
          description: The cancellation confirmation number.
          example: AU847750750
        paymentVerificationInfo:
          $ref: '#/components/schemas/PaymentVerificationInfo'
    CarCancellationDeadline:
      type: object
      oneOf:
        - $ref: '#/components/schemas/CarCancellationDeadlineAbsolute'
        - $ref: '#/components/schemas/CarCancellationDeadlineHoursBefore'
    CarCancellationDeadlineAbsolute:
      type: object
      title: CarCancellationDeadlineAbsolute
      description: >-
        Absolute deadline before which cancellation is accepted (With Refund
        Policies)
      properties:
        carCancellationDeadlineAbsolute:
          $ref: '#/components/schemas/DateTimeLocal'
    CarCancellationDeadlineHoursBefore:
      type: object
      title: CarCancellationDeadlineHoursBefore
      description: >-
        Hours before before which cancellation is accepted (With Refund
        Policies)
      properties:
        carCancellationDeadlineHoursBefore:
          type: integer
          format: int32
          example: 2
    CarCancellationPenalty:
      type: object
      oneOf:
        - $ref: '#/components/schemas/CarCancellationPenaltyAmount'
        - $ref: '#/components/schemas/CarCancellationPenaltyPercent'
    CarCancellationPenaltyAmount:
      type: object
      title: CarCancellationPenaltyAmount
      description: Amount charged for cancellation
      properties:
        carCancellationAmount:
          $ref: '#/components/schemas/Money'
    CarCancellationPenaltyPercent:
      type: object
      title: CarCancellationPenaltyPercent
      description: Percent of Fees to be charged for cancellation
      properties:
        carCancellationAmountPercent:
          type: number
          format: double
          example: 10
    CarCancellationPolicy:
      type: object
      description: Car cancellation deadline and amount that would be charged details
      properties:
        penalty:
          $ref: '#/components/schemas/CarCancellationPenalty'
        deadline:
          $ref: '#/components/schemas/CarCancellationDeadline'
    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.
    CarCreatePnrRequest:
      type: object
      required:
        - carId
        - bookingKey
        - tripData
        - bookingCharges
        - travelers
      properties:
        bookingKey:
          type: string
          description: Booking Key from car price check response.
          example: ChBjMmRlYjdhNzJiM2RjMzE1EhBmNDA3MzZlYjFiZDRmYWU5
        carId:
          type: string
          description: CarId of the car to be booked.
          example: EgRFQ0FSGgNFVzIiAkVUKgoKA1NGTxIDU0ZPMgoKA1NGTxIDU0ZP
        tripData:
          $ref: '#/components/schemas/TripData'
          description: Trip data for the booking.
        travelers:
          type: array
          items:
            $ref: '#/components/schemas/CarTravelerInfo'
          description: List of travelers for the booking.
        bookingContact:
          $ref: '#/components/schemas/BookingContact'
          description: Contact information for the booking.
        bookingCharges:
          type: array
          items:
            $ref: '#/components/schemas/BookingCharge'
          description: List of charges for the booking.
        customFieldUserResponses:
          type: array
          description: Custom field responses for the booking.
          items:
            $ref: '#/components/schemas/CustomFieldV3Response'
        postPaymentVerificationInfo:
          $ref: '#/components/schemas/PostPaymentVerificationInfo'
    CarCreatePnrResponse:
      type: object
      properties:
        pnrId:
          type: string
          description: Spotnana PNR ID.
          example: '2267585596'
        sourcePnrId:
          type: string
          description: Source PNR ID.
          example: LRXQXA
        pnrStatus:
          $ref: '#/components/schemas/PnrStatus'
          description: Status of the PNR after creation.
        paymentVerificationInfo:
          $ref: '#/components/schemas/PaymentVerificationInfo'
    CarDailyRate:
      title: CarDailyRate
      description: Contains daily rate for the relevant car.
      properties:
        total:
          description: Daily total rate.
          $ref: '#/components/schemas/Money'
        base:
          description: Daily base rate.
          $ref: '#/components/schemas/Money'
        tax:
          description: Daily tax rate.
          $ref: '#/components/schemas/Money'
    CarEditPnrRequest:
      type: object
      title: CarEditPnrRequest
      required:
        - travelerUpdateInfos
      example: {}
      properties:
        travelerUpdateInfos:
          type: array
          items:
            $ref: '#/components/schemas/CarTravelerUpdateInfo'
    CarExta:
      type: object
      title: CarExta
      description: >
        Extra charges for the car. In US if rider is less than 21 years old
        there is some extra charge
      required:
        - amount
      properties:
        carExtraType:
          type: string
          enum:
            - UNKNOWN_TYPE
            - RENTER_AGE
            - ADDITIONAL-DRIVER
            - BABY-STROLLER
            - CHILD-SEAT-BOOSTER
            - BICYCLE-RACK
            - CARGO-BARRIER-BACK
            - CARGO-BARRIER-FRONT
            - BOOSTER-SEAT-UP-TO-AGE-12
            - COLLISION-DAMAGE-WAIVER
            - CHILD-SEAT-UP-TO-AGE-3
            - CHILD-SEAT-INFANT
            - SATELLITE-RADIO
            - CHILD-SEAT-TODDLER
            - REAR-SEAT-DVD-PLAYER
            - FLAG-HOLDER
            - HAND-CONTROL-LEFT
            - HAND-CONTROL-RIGHT
            - MOTORCYCLE-HELMET
            - SECURITY-DEVICES
            - JERRY-CAN
            - LOSS-DAMAGE-WAIVER
            - LUGGAGE-ROOF-CASE
            - LUGGAGE-TRAILER
            - LUGGAGE-RACK
            - NAVIGATIONAL-SYSTEM
            - NAVIGATIONAL-SYSTEM-BUILT-IN
            - PERSONAL-ACCIDENT-INSURANCE
            - MOBILE-PHONE
            - ROAD-CONGESTION-PAYMENT-SCHEME
            - SEAT-BELT-EXTENSION
            - SNOW-BOARD-RACKS
            - SKI-BOX
            - SKI-RACK-ONLY
            - SKI-RACK-OR-BOX
            - SKI-EQUIPPED-VEHICLE
            - SNOW-CHAINS
            - SNOW-PACKS
            - SNOW-TIRES
            - SPINNER-KNOB
            - SURF-RACK
            - SCOOTER-TOP-CASE
            - SNOW-WINTER-TIRES
            - TOLL-PAYMENT-TAG-PASS
            - SPARE-TIRE
            - WHEEL-CHAIR-ACCESS-RAMP
            - WHEEL-CHAIR
            - WIFI-ACCESS
          example: RENTER_AGE
        carExtraRateUnit:
          type: string
          enum:
            - UNKNOWN_RATE_UNIT
            - DAILY
            - WEEKEND
            - WEEKLY
            - MONTHLY
            - BUNDLED
            - TOTAL
          example: DAILY
        amount:
          $ref: '#/components/schemas/Money'
          description: Car Extra amount
    CarExtraType:
      type: string
      title: CarExtraType
      description: Car Extra Types.
      enum:
        - RENTER_AGE
        - ADDITIONAL_DRIVER
        - BABY_STROLLER
        - CHILD_SEAT_BOOSTER
        - BICYCLE_RACK
        - CARGO_BARRIER_BACK
        - CARGO_BARRIER_FRONT
        - BOOSTER_SEAT_UP_TO_AGE_12
        - COLLISION_DAMAGE_WAIVER
        - CHILD_SEAT_UP_TO_AGE_3
        - CHILD_SEAT_INFANT
        - SATELLITE_RADIO
        - CHILD_SEAT_TODDLER
        - REAR_SEAT_DVD_PLAYER
        - FLAG_HOLDER
        - HAND_CONTROL_LEFT
        - HAND_CONTROL_RIGHT
        - MOTORCYCLE_HELMET
        - SECURITY_DEVICES
        - JERRY_CAN
        - LOSS_DAMAGE_WAIVER
        - LUGGAGE_ROOF_CASE
        - LUGGAGE_TRAILER
        - LUGGAGE_RACK
        - NAVIGATIONAL_SYSTEM
        - NAVIGATIONAL_SYSTEM_BUILT_IN
        - PERSONAL_ACCIDENT_INSURANCE
        - MOBILE_PHONE
        - ROAD_CONGESTION_PAYMENT_SCHEME
        - SEAT_BELT_EXTENSION
        - SNOW_BOARD_RACKS
        - SKI_BOX
        - SKI_RACK_ONLY
        - SKI_RACK_OR_BOX
        - SKI_EQUIPPED_VEHICLE
        - SNOW_CHAINS
        - SNOW_PACKS
        - SNOW_TIRES
        - SPINNER_KNOB
        - SURF_RACK
        - SCOOTER_TOP_CASE
        - SNOW_WINTER_TIRES
        - TOLL_PAYMENT_TAG_PASS
        - SPARE_TIRE
        - WHEEL_CHAIR_ACCESS_RAMP
        - WHEEL_CHAIR
        - WIFI_ACCESS
      example: CHILD_SEAT_INFANT
    CarFareType:
      type: string
      title: CarFareType
      description: Car Extra Types.
      enum:
        - UNKNOWN_FARE_TYPE
        - PUBLISHED
        - CORPORATE
        - SPOTNANA
        - TMC
      example: CORPORATE
    CarFilters:
      type: object
      description: Filters for car search.
      properties:
        carTypes:
          description: Filter based on car type. Ex. MINI/CONVERTIBLE.
          type: array
          items:
            $ref: '#/components/schemas/CarType'
        numPassengers:
          $ref: '#/components/schemas/Int32Range'
        vendors:
          description: Filter based on car vendor code.
          type: array
          example:
            - ZI
            - ZD
          items:
            type: string
        excludeTransmissions:
          description: Exclude a list of Transmission types.
          type: array
          items:
            $ref: '#/components/schemas/TransmissionSearchFilter'
        engineTypes:
          description: Filter based on engine type. Ex. DIESEL/PETROL.
          type: array
          items:
            $ref: '#/components/schemas/EngineType'
        hasAirConditioning:
          type: boolean
          default: false
          example: true
          description: filter to filter out cars with Air Conditioning
        carExtraTypes:
          description: Filter based on car extras. Ex. CHILD_SEAT_TODDLER/BICYCLE_RACK.
          type: array
          items:
            $ref: '#/components/schemas/CarExtraType'
        preferredOnly:
          description: Include cars that are from preferred vendors.
          type: boolean
          default: false
        price:
          $ref: '#/components/schemas/SimpleMoneyRange'
          description: Filter based on price range.
        paymentTypes:
          description: >-
            Filter out the results for which only a certain payment type can be
            applied.
          type: array
          items:
            $ref: '#/components/schemas/PaymentSourceType'
        fareTypes:
          description: Filter based on fare types.
          type: array
          items:
            $ref: '#/components/schemas/CarFareType'
    CarLocationContactInfo:
      type: object
      title: CarLocationContactInfo
      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
        emergencyPhone:
          type: array
          items:
            type: string
            description: Emergency Phone number of the vendor
            example: 123 456-7890
    CarLocationDetails:
      type: object
      title: CarLocationDetails
      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.
        operatingSchedule:
          $ref: '#/components/schemas/OperatingSchedule'
          description: Operating schedule of vendor
        weeklyOperatingSchedule:
          type: array
          description: Weekly operating schedule of vendor
          items:
            $ref: '#/components/schemas/OperatingSchedule'
        contactInfo:
          $ref: '#/components/schemas/CarLocationContactInfo'
          description: Contact info of the location
    CarLocationDetailsRequest:
      type: object
      title: CarLocationDetailsRequest
      required:
        - vendorCode
        - locationCode
        - userId
      properties:
        vendorCode:
          type: string
          description: Vendor code of the car company.
          example: ZE
        locationCode:
          type: string
          description: IATA airport code.
          example: SFO
        userId:
          $ref: '#/components/schemas/UserId'
          description: Car User Identifier.
    CarLocationDetailsResponse:
      type: object
      title: CarLocationDetailsResponse
      description: Car location details
      required:
        - location
        - vendor
      properties:
        location:
          $ref: '#/components/schemas/CarLocationDetails'
          description: Car Location details
        vendor:
          $ref: '#/components/schemas/Vendor'
          description: Car Vendor information
    CarLoyaltyCode:
      type: object
      description: Loyalty code information for car rentals
      required:
        - vendor
        - code
        - type
      properties:
        vendor:
          type: string
          description: Vendor code
          example: ZI
        code:
          type: string
          description: Loyalty code
          example: '1924047077'
        type:
          type: string
          description: Loyalty type
          enum:
            - PROMOTIONAL_COUPON
          example: PROMOTIONAL_COUPON
    CarModifyBookingRequest:
      type: object
      required:
        - searchId
        - carId
        - tripData
        - bookingCharges
        - travelers
      properties:
        searchId:
          deprecated: true
          type: string
          description: SearchID of the car modify search.
          example: 1cf76aba18e4015f
          x-sunset: '2027-01-01'
        carId:
          type: string
          description: CarId of the car to be booked.
          example: EgRFQ0FSGgNFVzIiAkVUKgoKA1NGTxIDU0ZPMgoKA1NGTxIDU0ZP
        tripData:
          $ref: '#/components/schemas/TripData'
        preBookAnswers:
          deprecated: true
          $ref: '#/components/schemas/PreBookAnswers'
          x-sunset: '2027-01-01'
        bookingCharges:
          type: array
          items:
            $ref: '#/components/schemas/BookingCharge'
        travelers:
          type: array
          items:
            $ref: '#/components/schemas/CarTravelerInfo'
        customFieldV3Responses:
          type: array
          description: Custom field responses for the booking.
          items:
            $ref: '#/components/schemas/CustomFieldV3Response'
        waiveOffInfo:
          $ref: '#/components/schemas/WaiveOffInfo'
        arrivalFlightNumber:
          $ref: '#/components/schemas/FlightNumber'
        bookingKey:
          type: string
          description: Booking Key from car price check response.
          example: ChBjMmRlYjdhNzJiM2RjMzE1EhBmNDA3MzZlYjFiZDRmYWU5
        bookingPaymentDetails:
          description: Details about the payment methods used by travelers for booking.
          $ref: '#/components/schemas/BookingPaymentDetails'
        postPaymentVerificationInfo:
          $ref: '#/components/schemas/PostPaymentVerificationInfo'
    CarModifyBookingResponse:
      type: object
      properties:
        pnrId:
          type: string
          description: Spotnana PNR ID.
          example: '2267585596'
        sourcePnrId:
          type: string
          description: Source PNR ID.
          example: LRXQXA
        pnrStatus:
          $ref: '#/components/schemas/PnrStatus'
        paymentVerificationInfo:
          $ref: '#/components/schemas/PaymentVerificationInfo'
    CarModifySearchRequest:
      type: object
      required:
        - pickup
        - dropOff
      properties:
        pickup:
          $ref: '#/components/schemas/SearchParams'
        dropOff:
          $ref: '#/components/schemas/SearchParams'
        filters:
          $ref: '#/components/schemas/CarFilters'
        sortOptions:
          $ref: '#/components/schemas/CarSortOption'
        renterAge:
          type: integer
          description: Age of the renter
          example: 30
        citizenCountryCode:
          type: string
          description: Citizen code of the renter
          example: US
        pickupCountryCode:
          type: string
          description: Country code of the pick up location
          example: US
        loyaltyCode:
          type: array
          description: Loyalty codes to be applied
          items:
            $ref: '#/components/schemas/CarLoyaltyCode'
    CarPriceCheckRequest:
      type: object
      title: CarPriceCheckRequest
      required:
        - searchId
        - carId
      properties:
        searchId:
          type: string
          description: SearchID of the selected car.
          example: 1cf76aba18e4015f
        carId:
          type: string
          description: CarId of the car to be booked.
          example: EgRFQ0FSGgNFVzIiAkVUKgoKA1NGTxIDU0ZPMgoKA1NGTxIDU0ZP
        tripId:
          type: string
          description: Trip ID
          example: 1234567890
        isModify:
          type: boolean
          description: Indicates if this API call is a part of modify search and book.
          example: false
    CarPriceCheckResponse:
      type: object
      title: CarPriceCheckResponse
      required:
        - hasPriceChanged
      properties:
        timeoutSeconds:
          type: integer
          description: Time in seconds for which the price is held.
          example: 3900
        hasPriceChanged:
          type: boolean
          description: Indicates if the price has changed from the details.
          example: true
        rateInfo:
          $ref: '#/components/schemas/CarRateDetails'
        finalRateInfo:
          $ref: '#/components/schemas/CarRateDetails'
        preferences:
          type: array
          items:
            $ref: '#/components/schemas/Preference'
        bookingKey:
          type: string
          description: Booking key used to make booking.
    CarRateComponent:
      type: object
      title: CarRateComponent
      required:
        - componentType
        - amount
      properties:
        componentType:
          $ref: '#/components/schemas/CarRateComponentType'
          description: Car Rate component type
        amount:
          $ref: '#/components/schemas/Money'
          description: RateComponent amount
        mileageAllowance:
          $ref: '#/components/schemas/Length'
          description: Maximum distance covered in fare
        extraMileageCharge:
          $ref: '#/components/schemas/Money'
          description: Extra charge after exceeding mileage allowance
    CarRateComponentType:
      type: string
      description: Rate type.
      enum:
        - UNKNOWN_TYPE
        - DROP_OFF_CHARGE
        - EXTRA_DAY
        - EXTRA_HOUR
        - BASE_RATE
        - BASE_RATE_TOTAL
        - SUBTOTAL_EXCLUDING_MANDATORY_CHARGES
        - DAILY_CHARGES_TOTAL
        - HOURLY_CHARGES_TOTAL
        - MANDATORY_CHARGES
        - MANDATORY_CHARGES_TOTAL
        - APPROXIMATE_TOTAL_PRICE
        - CAR_EXTRA_TOTAL_CHARGE
        - APPROXIMATE_BASE_FARE
        - TOTAL_TAX
        - PUBLISHED_BASE_FARE
        - PUBLISHED_TOTAL_TAX
        - APPROXIMATE_DAILY_AVERAGE_TOTAL
        - APPROXIMATE_DAILY_AVERAGE_BASE
        - APPROXIMATE_DAILY_AVERAGE_TAX
        - PUBLISHED_DAILY_TOTAL
        - PUBLISHED_DAILY_BASE_FARE
        - PUBLISHED_DAILY_TOTAL_TAX
        - CAR_MODIFY_RATE_DIFFERENCE
        - CAR_MODIFY_AVERAGE_RATE_DIFFERENCE
      example: CAR_EXTRA_TOTAL_CHARGE
    CarRateDetails:
      type: object
      title: CarRateDetails
      description: Car Rate information and breakdown
      properties:
        rateType:
          $ref: '#/components/schemas/CarRateType'
          description: Car Rate type
        carRateComponents:
          type: array
          items:
            $ref: '#/components/schemas/CarRateComponent'
        carExtras:
          type: array
          items:
            $ref: '#/components/schemas/CarExta'
        refundable:
          $ref: '#/components/schemas/CarRefundableType'
          description: Car Refundable type
        fareType:
          type: string
          enum:
            - PUBLISHED
            - CORPORATE
            - SPOTNANA
            - UNKNOWN
            - TMC
          example: CORPORATE
        allowedFop:
          $ref: '#/components/schemas/PaymentMethod'
          deprecated: true
          x-sunset: '2027-01-01'
        allowedPaymentTypes:
          description: >-
            Indicates the restriction on which payment method types can be used
            to make the booking.
          type: array
          items:
            $ref: '#/components/schemas/PaymentSourceType'
        dailyRates:
          description: Contains daily rates for each day of the rental duration.
          type: array
          items:
            $ref: '#/components/schemas/CarDailyRate'
        supplier:
          $ref: '#/components/schemas/ThirdPartySource'
          description: >-
            Third party supplier/source for this rate (e.g. GDS vs direct
            connection).
    CarRateDetailsRequest:
      type: object
      title: CarRateDetailsRequest
      required:
        - searchId
        - carId
      properties:
        searchId:
          type: string
          description: SearchID of the car rate details.
          example: 1cf76aba18e4015f
        carId:
          type: string
          description: CarId of the car to be booked.
          example: EgRFQ0FSGgNFVzIiAkVUKgoKA1NGTxIDU0ZPMgoKA1NGTxIDU0ZP
        isModify:
          type: boolean
          description: Indicates if the request is for modifying an existing booking.
          example: false
    CarRateDetailsResponse:
      type: object
      title: CarRateDetailsResponse
      description: Car rate details
      required:
        - searchId
        - carId
        - pickupLocation
        - dropOffLocation
        - carVendor
        - carCo2EmissionDetail
        - isFlightNumberMandatoryForPickup
      properties:
        searchId:
          type: string
          description: SearchID of the car rate details.
          example: 1cf76aba18e4015f
        carId:
          type: string
          description: CarId of the car to be booked.
          example: EgRFQ0FSGgNFVzIiAkVUKgoKA1NGTxIDU0ZPMgoKA1NGTxIDU0ZP
        pickupLocation:
          $ref: '#/components/schemas/CarLocationDetails'
          description: Car Pickup Location details
        dropOffLocation:
          $ref: '#/components/schemas/CarLocationDetails'
          description: Car DropOff Location details
        additionalDetails:
          type: array
          description: Car Additional Details
          items:
            $ref: '#/components/schemas/CarAdditionalDetail'
        vendor:
          $ref: '#/components/schemas/Vendor'
          description: Car Vendor information
        co2Emission:
          $ref: '#/components/schemas/CarCo2EmissionDetail'
          description: The CO2 emission detail for car
        isFlightNumberMandatoryForPickup:
          type: boolean
          description: Indicates if flight number is mandatory for pickup
        checkoutApprovalInfo:
          $ref: '#/components/schemas/CheckoutApprovalInfo'
          description: Checkout approval information
    CarRateType:
      type: string
      enum:
        - UNKNOWN
        - GUARANTEED
        - PREPAID
        - NO_PREPAYMENT
      example: GUARANTEED
    CarRefundableType:
      type: string
      enum:
        - UNKNOWN_REFUNDABLE
        - REFUNDABLE
        - NON_REFUNDABLE
      example: REFUNDABLE
    CarSearchItinerary:
      type: object
      properties:
        carId:
          type: string
          description: Unique car ID representing a particular car.
          example: EgRDWE1SGgM0MEkiAlpJKgoKA1NUThIDU1ROMgoKA1NUThIDU1RO
        pickupParams:
          type: object
          properties:
            pickupLocation:
              $ref: '#/components/schemas/CarLocationDetails'
            pickupTime:
              $ref: '#/components/schemas/DateTimeLocal'
            pickupDistance:
              $ref: '#/components/schemas/Length'
        dropOffParams:
          type: object
          properties:
            dropOffLocation:
              $ref: '#/components/schemas/CarLocationDetails'
            dropOffTime:
              $ref: '#/components/schemas/DateTimeLocal'
            dropOffDistance:
              $ref: '#/components/schemas/Length'
        rateInfo:
          $ref: '#/components/schemas/CarRateDetails'
        cancellationPolicy:
          type: array
          items:
            $ref: '#/components/schemas/CarCancellationPolicy'
        carSpec:
          $ref: '#/components/schemas/CarSpec'
        policyInformation:
          $ref: '#/components/schemas/PnrPolicyInfo'
        preferences:
          type: array
          items:
            $ref: '#/components/schemas/Preference'
        vendor:
          $ref: '#/components/schemas/Vendor'
        co2Emission:
          $ref: '#/components/schemas/CarCo2EmissionDetail'
        isSamePickupLocation:
          type: boolean
          description: >-
            Indicates whether the car pickup location is same as the original
            booking, used only in modify search flow.
          default: false
    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'
    CarSearchMetadata:
      type: object
      properties:
        availableVendors:
          type: array
          items:
            $ref: '#/components/schemas/Vendor'
        showOnlyBaseFare:
          type: boolean
          description: >-
            Toggles behaviour on whether we show the fare as base amount or
            total amount depending on service location and legalEntity.
          default: false
    CarSearchRequest:
      type: object
      description: Car search information with user details
      required:
        - pickup
        - dropOff
        - userId
      properties:
        pickup:
          $ref: '#/components/schemas/SearchParams'
        dropOff:
          $ref: '#/components/schemas/SearchParams'
        renterAge:
          type: integer
          description: Age of the renter
          example: 30
        citizenCountryCode:
          type: string
          description: Citizen code of the renter
          example: US
        pickupCountryCode:
          type: string
          description: Country code of the pick up location
          example: US
        loyaltyCode:
          type: array
          description: Loyalty codes to be applied
          items:
            $ref: '#/components/schemas/CarLoyaltyCode'
        userId:
          $ref: '#/components/schemas/CarUserId'
          description: Car User Identifier.
        filters:
          $ref: '#/components/schemas/CarFilters'
        sortOptions:
          $ref: '#/components/schemas/CarSortOption'
    CarSearchResponse:
      type: object
      properties:
        searchId:
          type: string
          description: Unique searchID associated to the car search
          example: '9585821762922174'
        cars:
          type: array
          items:
            $ref: '#/components/schemas/CarSearchItinerary'
        metadata:
          description: Metadata for car search
          $ref: '#/components/schemas/CarSearchMetadata'
    CarSortBy:
      type: string
      enum:
        - PRICE
        - DISTANCE
      example: PRICE
    CarSortOption:
      type: object
      title: CarSortOption
      description: Car sorting option parameters.
      properties:
        sortBy:
          $ref: '#/components/schemas/CarSortBy'
        sortOrder:
          $ref: '#/components/schemas/CarSortOrder'
    CarSortOrder:
      type: string
      enum:
        - ASCENDING
        - DESCENDING
      example: ASCENDING
    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.
    CarTravelerInfo:
      type: object
      required:
        - travelerId
      properties:
        travelerId:
          description: The ID of the traveler.
          $ref: '#/components/schemas/UserId'
        name:
          description: Name of the traveler.
          $ref: '#/components/schemas/Name'
        dob:
          description: Date of birth of the traveler.
          $ref: '#/components/schemas/DateModel'
        phoneNumber:
          description: Phone number of the traveler.
          $ref: '#/components/schemas/PhoneNumber'
        email:
          description: Email of the traveler.
          type: string
          format: email
          example: example@email.com
        loyaltyInfo:
          description: Loyalty Info of the traveler.
          $ref: '#/components/schemas/LoyaltyInfo'
        blockLoyalty:
          description: >-
            If true, hides the loyalty program input on the checkout page for
            this traveler.
          type: boolean
          default: false
          example: false
    CarTravelerUpdateInfo:
      type: object
      title: CarTravelerUpdateInfo
      required:
        - traveler
        - updateTypes
      properties:
        traveler:
          $ref: '#/components/schemas/CarTravelerInfo'
        updateTypes:
          type: array
          uniqueItems: true
          items:
            description: Fields that are to be updated in the booking.
            type: string
            enum:
              - LOYALTY_INFO
            example: LOYALTY_INFO
    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
    CarUserId:
      type: object
      title: Car User Identifier
      description: >-
        An identifier for the user involved in the car booking or search
        process.
      discriminator:
        propertyName: userIdType
        mapping:
          USER_ID: '#/components/schemas/UserIdSearch'
          REGISTRAR_USER_ID: '#/components/schemas/RegistrarUserIdSearch'
      oneOf:
        - $ref: '#/components/schemas/UserIdSearch'
        - $ref: '#/components/schemas/RegistrarUserIdSearch'
    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'
    CheckoutApprovalInfo:
      title: CheckoutApprovalInfo
      description: >-
        Checkout approval information containing approval type and approver
        details
      type: object
      properties:
        approvalType:
          $ref: '#/components/schemas/ApprovalType'
        approverDetails:
          type: array
          description: List of approver details
          items:
            $ref: '#/components/schemas/ApproverDetails'
    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
    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
    Credit:
      type: object
      title: Credit
      required:
        - ticketNumber
        - ticketType
        - sourcePnr
        - totalFare
        - passengerName
        - segmentsAvailable
        - type
        - airlineInfo
        - traveler
        - source
        - unusedCreditPcc
        - pnrOwningPcc
      properties:
        type:
          type: string
          description: >-
            Payment source type. Should be set to CREDIT for unused credit
            details.
        pnrOwningPcc:
          type: string
          description: PCC the PNR was created on.
        unusedCreditPcc:
          type: string
          description: PCC the credit was issued on.
        departureCountry:
          type: string
          description: >-
            3 letter country code of the departure country associated with the
            original ticket.
          example: USA
        arrivalCountry:
          type: string
          description: >-
            3 letter country code of the arrival country associated with the
            original ticket.
          example: USA
        ticketType:
          type: string
          description: Type of credit.
          enum:
            - TICKET_TYPE_UNKNOWN
            - ETICKET
            - MCO
        departureDate:
          description: >-
            Date for the departure of the first flight associated with the
            unused credit.
          $ref: '#/components/schemas/DateTimeOffset'
        segmentsAvailable:
          type: string
          description: Whether all segments are unused or some have already been used.
          enum:
            - UNKNOWN
            - ALL_OPEN
            - PARTIAL
            - OTHER
        traveler:
          description: >-
            Information about the traveler for which the credit should be
            redeemed.
          $ref: '#/components/schemas/AirRequestTravelerInfo'
        passengerName:
          description: Name of the passenger associated with the credit.
          $ref: '#/components/schemas/Name'
        airlineInfo:
          description: Airline info with airline name and code
          $ref: '#/components/schemas/AirlineInfo'
        totalFare:
          description: Total airfare associated with the original ticket.
          $ref: '#/components/schemas/Money'
        issueDate:
          description: Issue date for the unused credit.
          $ref: '#/components/schemas/DateTimeOffset'
        expiryDate:
          description: Expiry date for the unused credit.
          $ref: '#/components/schemas/DateTimeOffset'
        source:
          $ref: '#/components/schemas/ThirdPartySource'
          default: SABRE
          description: Source of unused credit e.g. Sabre, NDC etc.
        sourcePnr:
          type: string
          description: >-
            PNR number corresponding to third party through which booking was
            made.
          example: MC5ONS
        flightIds:
          type: array
          description: ID of the flights on which this credit applies.
          minItems: 1
          items:
            type: string
        ticketNumber:
          type: string
          description: >-
            Ticket number for the ticket that was converted into an unused
            credit.
          example: '5267779139217'
      x-ignoreBreakingChanges:
        - Credit->pnrOwningPcc
        - Credit->unusedCreditPcc
        - Credit->source
    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
    CustomFieldSelectedOption:
      type: object
      title: CustomFieldSelectedOption
      description: Selected response for the custom field.
      required:
        - name
      properties:
        name:
          type: string
          description: Value of the selection
        translatedName:
          type: string
          description: Translated value of the selection
        description:
          type: string
          description: Description of the selection
        translatedDescription:
          type: string
          description: Translated description of the selection
        additionalUserInput:
          type: string
          description: Additional user input
        additionalInfos:
          type: array
          description: Actual values of the additional infos
          items:
            type: string
        additionalInfoConfigs:
          type: array
          description: Additional info configs for the selected option
          items:
            $ref: '#/components/schemas/AdditionalInfo'
    CustomFieldType:
      type: string
      description: The type of custom field.
      enum:
        - QUESTION
        - MEETING
        - BUDGET
        - BREX_TOKEN
      default: QUESTION
    CustomFieldV3Response:
      type: object
      title: CustomFieldV3Response
      description: Custom field responses.
      required:
        - fieldId
        - armId
        - selectedOptions
      properties:
        fieldId:
          type: string
          format: uuid
          description: Custom field id
        fieldName:
          type: string
          description: Name of the custom field
        armId:
          type: string
          format: uuid
          description: Arm id which is applicable
        includeLocations:
          type: array
          items:
            $ref: '#/components/schemas/IncludeLocation'
        selectedOptions:
          type: array
          description: The list of options that are selected by user or auto populated.
          items:
            $ref: '#/components/schemas/CustomFieldSelectedOption'
    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'
    DateTimeLocal:
      title: DateTimeLocal
      description: Local date and time in ISO 8601 format.
      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.
    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
    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
    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'
    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'
    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.
    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'
    Expression:
      type: object
      title: Expression
      description: >
        Expression consisting of variables and constants which needs to be sent
        along with custom

        field response.
      required:
        - type
        - formatExpression
      properties:
        type:
          type: string
          example: EXPRESSION
          default: EXPRESSION
        formatExpression:
          type: string
          description: >
            The expression must be of format : `<any_text> ${expression}
            <any_text>`.The expression 

            can consist of a combination of variables and mathematical
            operations.
             Variable names must be same as VariableName Enum.
              To define mathematical operations, the operation name should follow the format
            `math.<math_op>(arg1, arg2)`. Both `arg1` and `arg2` can be
            variables or constants. 

            The supported math operations (math_op) include: `add, mul, div,
            sub, min,

            and max`. All keywords, such as `<math_op>, math, and var` must be
            written in lowercase.
          example: 'Result:  ${math.mul(LLF,5)}  ${ADD_COLLECT_AMOUNT}'
        variables:
          type: array
          description: Reference names of the variables present in the expression.
          deprecated: true
          x-sunset: '2026-07-01'
          items:
            $ref: '#/components/schemas/VariableName'
    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'
        taxBreakdown:
          description: Breakdown of tax amounts.
          $ref: '#/components/schemas/TaxBreakdown'
    FareComponent:
      type: string
      description: Fare component eligible for this fop rule
      enum:
        - BASE
        - TAX
      example: BASE
    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
    FlightPassPaymentAmounts:
      type: object
      title: FlightPassPaymentAmounts
      description: Fare breakdown for the flight pass booking.
      properties:
        totalAmount:
          description: Total value (base + taxes).
          $ref: '#/components/schemas/Money'
        baseAmount:
          description: Base fare excluding taxes.
          $ref: '#/components/schemas/Money'
        totalTaxes:
          description: Sum of all taxes, fees, and charges.
          $ref: '#/components/schemas/Money'
        taxBreakdown:
          type: array
          description: Breakdown of taxes by code (e.g. GST_HST, QST, OTHER).
          items:
            $ref: '#/components/schemas/FlightPassTax'
    FlightPassPaymentMetadata:
      type: object
      title: FlightPassPaymentMetadata
      description: Metadata specific to Flight Pass payment method in OtherCoinage.
      properties:
        flightPassNumber:
          type: string
          description: Flight pass number
          example: FP123456789
        flightPassAmounts:
          $ref: '#/components/schemas/FlightPassPaymentAmounts'
    FlightPassPaymentMetadataWrapper:
      type: object
      title: FlightPassPaymentMetadataWrapper
      description: Wrapper for Flight Pass payment metadata.
      required:
        - flightPassMetadata
      properties:
        metadataType:
          type: string
          description: Discriminator field for polymorphic deserialization
          example: FlightPassPaymentMetadata
          default: FlightPassPaymentMetadata
        flightPassMetadata:
          $ref: '#/components/schemas/FlightPassPaymentMetadata'
    FlightPassTax:
      type: object
      title: FlightPassTax
      description: A single tax component of the flight pass fare.
      properties:
        code:
          type: string
          description: Tax code identifier (e.g. GST_HST, QST, OTHER).
          example: GST_HST
        amount:
          description: Tax amount.
          $ref: '#/components/schemas/Money'
    GatewayIdentifier:
      type: object
      properties:
        gatewayId:
          type: string
          description: Gateway Id for which the payment method should be verified.
        gatewayType:
          type: string
          description: Gateway Type for of the verification gateway.
          enum:
            - PAYMENT_GATEWAY_UNKNOWN
            - STRIPE
            - BREX
            - RAZORPAY
    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'
    IncludeLocation:
      type: string
      title: IncludeLocation
      description: >-
        Various traveler notifications (e.g. emails) where the responses to this
        field should be included.
      enum:
        - BOOKING_CONFIRMATION_EMAILS
        - APPROVAL_EMAILS
        - COMPANY_REPORTS
        - CONSOLIDATED_ITINERARY_EMAILS
      example: APPROVAL_EMAILS
    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
    ItemType:
      type: string
      description: Type of payment item eligible for this fop rule
      enum:
        - SERVICE_FEE
        - TRAVEL_TICKET
        - SEAT
        - BAGGAGE
        - EARLY_BIRD
      example: SEAT
    KeywordWithReasonListWrapper:
      type: object
      title: KeywordWithReasonListWrapper
      properties:
        keywordWithReasonList:
          $ref: '#/components/schemas/KeywordsWithReasonList'
    KeywordsWithReasonList:
      type: object
      properties:
        keywords:
          type: array
          items:
            $ref: '#/components/schemas/RestrictedKeywordsWithReason'
    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
    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
            - CENTIMETER
            - METER
          example: MILE
          x-ignoreBreakingChanges:
            - unit->CENTIMETER
            - unit->METER
    LengthWrapper:
      type: object
      title: LengthWrapper
      properties:
        length:
          $ref: '#/components/schemas/Length'
    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
          x-pii: IDENTIFIER
        issuedBy:
          type: string
          example: firstIssuedBy
        type:
          type: string
          enum:
            - UNKNOWN_TYPE
            - AIR
            - HOTEL
            - CAR
            - RAIL
          example: AIR
        linked:
          type: boolean
          description: >-
            Indicates if this loyalty account is linked to the external
            provider. Only applicable for certain loyalty types.
          default: false
          example: false
        tier:
          $ref: '#/components/schemas/LoyaltyTier'
    LoyaltyTier:
      type: string
      description: Loyalty membership tier name echoed from the supplier.
      example: GOLD
    ModuleId:
      type: string
      title: ModuleId
      description: Module id
      enum:
        - BOOKING
        - AGENT
    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
              otherCoinageMetadata:
                description: >-
                  Metadata to store additional information related to the
                  payment method
                discriminator:
                  propertyName: metadataType
                  mapping:
                    FlightPassPaymentMetadata: '#/components/schemas/FlightPassPaymentMetadataWrapper'
                oneOf:
                  - $ref: '#/components/schemas/FlightPassPaymentMetadataWrapper'
    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
        - V
        - VI
        - ESQ
        - DC
        - DDS
        - VM
        - JD
        - SECOND
        - THIRD
      example: SR
    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'
    OperatingSchedule:
      type: object
      title: OperatingSchedule
      description: Operating schedule of vendor
      required:
        - interval
      properties:
        interval:
          $ref: '#/components/schemas/DateTimeRange'
          description: Operating schedule interval
        dayOfWeek:
          type: string
          description: Day of the week for which operating schedule is valid
          example: SUN
    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'
    OrganizationAgencyId:
      type: object
      title: OrganizationAgencyId
      description: Agency id for the organization.
      deprecated: true
      x-sunset: '2026-07-01'
      required:
        - id
      properties:
        id:
          type: string
    OrganizationId:
      type: object
      title: OrganizationId
      description: Organization id for traveler.
      required:
        - id
      properties:
        id:
          type: string
    PaymentItem:
      type: object
      description: The payment item eligible for associated payment rules
      properties:
        itemType:
          $ref: '#/components/schemas/ItemType'
          description: Type of payment item eligible for this fop rule
        fareComponent:
          type: array
          items:
            $ref: '#/components/schemas/FareComponent'
            description: List of fare components of associated payment item
    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
        - CUSTOM_VIRTUAL_PAYMENT
        - FLIGHT_PASS
        - MISCELLANEOUS_CREDIT_ORDER
        - NO_PREPAYMENT
      x-ignoreBreakingChanges:
        - PaymentMethod->MISCELLANEOUS_CREDIT_ORDER
        - PaymentMethod->NO_PREPAYMENT
      example: BREX_POINTS
    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
    PaymentVerificationInfo:
      type: object
      title: PaymentVerificationInfo
      description: VerificationInfo required for the payment operation.
      oneOf:
        - $ref: '#/components/schemas/StripeVerificationInfoWrapper'
        - $ref: '#/components/schemas/UrlVerificationInfoWrapper'
        - $ref: '#/components/schemas/ThreeDSecure2VerificationInfoWrapper'
        - $ref: '#/components/schemas/RazorpayVerificationInfoWrapper'
      properties:
        gatewayIdentifier:
          $ref: '#/components/schemas/GatewayIdentifier'
        paymentKey:
          type: string
          description: >-
            Serialized key to identify the payment executed on payment gateway
            that will be used for post payment verification.
    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
    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'
    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
      x-enumDescriptions:
        UNKNOWN: PNR status could not be determined or mapped from the supplier.
        INITIATED: >-
          Default status when a PNR entity is first created in our database. The
          booking may not yet be confirmed by the supplier, and we may not have
          a vendor confirmation ID.
        CANCELLED: The booking or flight is cancelled. Terminal status.
        CONFIRMED: >-
          Booking confirmed by the supplier. For Air PNRs, confirmed but not yet
          ticketed (no active tickets).
        GROUP_BOOKING_ON_REQUEST: Group booking requested but not yet confirmed. Air only
        WAITLISTED: Booking is on a waitlist, pending confirmation by the supplier.
        PENDING: >-
          Booking is awaiting confirmation or action. Used across all PNR types
          as a catch-all for not-yet-confirmed states.
        AIRLINE_UPGRADE: >-
          Passenger upgraded by the airline. Not directly mapped by any
          supplier.
        WAITLIST_CONFIRMED: Previously waitlisted booking confirmed by the supplier. Air only
        BOOKING_DENIED_CONTACT_SUPPORT: >-
          Booking denied by the supplier, requires support intervention. Air
          only
        NO_SHOW: Passenger did not show up for the flight or hotel stay.
        CONTACT_SUPPORT: >-
          Requires manual agent/support intervention. Mapped from the `OK`
          passive-confirmation action code in GDS systems, indicating the
          segment was manually confirmed and needs verification.
        STATUS_CHANGED_CONTACT_SUPPORT: >-
          Booking status changed by the supplier, requires support review. Air
          only
        SCHEDULE_CHANGE: >-
          Schedule change applied to the booking by the airline. Booking is
          still active but flight times or routing may have changed.
        SEGMENT_REQUEST: Passive Segment requested but not yet confirmed by the supplier.
        SCHEDULE_CHANGE_WAITLISTED_BOOKING: Waitlisted booking with a schedule change applied. Air only
        REQUEST_PENDING: >-
          Booking request submitted but only partially confirmed or awaiting
          further processing. Rail, and Hotel only.
        WAITLISTED_NOT_CONFIRMED: >-
          Waitlisted booking not confirmed by the supplier. Not directly mapped
          by any supplier.
        SCHEDULE_CHANGE_NOT_CONFIRMED: >-
          Schedule change occurred but booking not reconfirmed. Not directly
          mapped by any supplier
        SCHEDULE_CHANGE_PENDING_STATUS: Schedule change proposed but pending confirmation/action. Air only
        MIS_CONNECTION: >-
          Misconnection — passenger missed a connecting flight. Not directly
          mapped by any supplier
        REQUESTED: >-
          Booking initiated but no vendor confirmation ID exists yet.
          Intermediate state between INITIATED and CONFIRMED. When segments have
          blank confirmation IDs;
        TICKETED: >-
          Tickets issued and payment charged for an Air PNR. Terminal status for
          successful air bookings.
        VOIDED: >-
          All tickets voided — any charged amount refunded, including
          non-refundable bookings. Terminal status.
        CANCELLED_BY_VENDOR: Booking cancelled by the vendor/airline, not by the traveler.
        CANCELLATION_IN_PROGRESS: >-
          Cancellation initiated but not yet complete. Also set internally
          during the air cancellation workflow before the supplier call
          completes.
        REINSTATED: >-
          Previously cancelled flight became active again. Air only. Not mapped
          from any GDS status code directly.
        BOOKING_ON_HOLD: >-
          Air PNR confirmed with the airline but held for a limited time before
          auto-cancellation if not ticketed. Requires active hold metadata
          (`REQUESTED` or `ON_HOLD` hold status). Air only
        AIRLINE_CONTROL: >-
          PNR taken over by the airline. Updates no longer visible to the TMC.
          Terminal status.
        MODIFIED: >-
          Booking has been modified/rebooked. Car: CarTrawler `Rebooked` status.
          Also referenced in Sabre Hotel mapper for modified hotel PNR handling.
        PAYMENT_DECLINED: >-
          Payment failed during ticketing. Retained as long as unticketed fare
          quotes exist (Sabre PQ/PQR or Amadeus TSTs), preventing incorrect
          progression to TICKETED.
        INOPERATIVE: Booking inoperative or unavailable for use.
        UNCONFIRMED: Booking unconfirmed and pending verification.
    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'
        - $ref: '#/components/schemas/PolicySplitPaymentActionWrapper'
    PolicyAlertOnSelectionAction:
      type: object
      title: PolicyAlertOnSelectionAction
      properties:
        message:
          type: string
    PolicyAlertOnSelectionActionWrapper:
      type: object
      title: PolicyAlertOnSelectionActionWrapper
      properties:
        alertOnSelection:
          $ref: '#/components/schemas/PolicyAlertOnSelectionAction'
    PolicyConstValue:
      type: object
      properties:
        displaySuffix:
          type: string
          description: Optional display suffix for the policy const value
      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'
        - $ref: '#/components/schemas/AirRestrictedFaresParamsWrapper'
      x-ignoreBreakingChanges:
        - PolicyConstValue->AirRestrictedFaresParamsWrapper
    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
    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
        - LOWEST_FARE_PER_HOTEL_PROPERTY_VIOLATION
        - AIR_RESTRICTED_FARES_VIOLATION
        - AIR_ANCILLARY_VIOLATION
      x-ignoreBreakingChanges:
        - PolicyPredicate->LOWEST_FARE_PER_HOTEL_PROPERTY_VIOLATION
        - PolicyPredicate->AIR_RESTRICTED_FARES_VIOLATION
        - PolicyPredicate->AIR_ANCILLARY_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'
    PolicySplitPaymentActionWrapper:
      type: object
      title: PolicySplitPaymentActionWrapper
      properties:
        splitPayment:
          $ref: '#/components/schemas/SplitPayment'
    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).
        approvalType:
          $ref: '#/components/schemas/ApprovalType'
          description: Type of approval for the policy.
    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'
    PostPaymentVerificationInfo:
      type: object
      title: PostPaymentVerificationInfo
      description: Payment information sent after the verification of payment method.
      oneOf:
        - $ref: '#/components/schemas/PostStripeVerificationInfoWrapper'
        - $ref: '#/components/schemas/PostUrlBasedVerificationInfoWrapper'
        - $ref: '#/components/schemas/AmadeusCheckoutVerificationInfoWrapper'
        - $ref: '#/components/schemas/ThreeDSecure2PostVerificationInfoWrapper'
        - $ref: '#/components/schemas/RazorpayPostVerificationInfoWrapper'
      properties:
        paymentKey:
          type: string
          description: >-
            Serialized key to identify the payment executed on payment gateway
            that will be used for post payment verification.
    PostStripeVerificationInfo:
      type: object
      description: >-
        Object to indicate successful stripe verification and provide payment
        information for next steps.
      properties:
        paymentMethodId:
          type: string
          description: Stripe's payment method id for which the verification was performed.
          example: pm_1HzKDPI3bT9GUjvoUkRQooN3
    PostStripeVerificationInfoWrapper:
      type: object
      title: PostStripeVerificationInfoWrapper
      description: Wrapper for post stripe verification info object.
      properties:
        postStripeVerificationInfo:
          $ref: '#/components/schemas/PostStripeVerificationInfo'
    PostUrlBasedVerificationInfo:
      type: object
      properties:
        pnrId:
          type: string
          description: >-
            Pnr Id, to continue with the booking flow/check the status of the
            pnr.
    PostUrlBasedVerificationInfoWrapper:
      type: object
      title: PostUrlBasedVerificationInfoWrapper
      description: Wrapper for post url based verification info object.
      properties:
        postUrlBasedVerificationInfo:
          $ref: '#/components/schemas/PostUrlBasedVerificationInfo'
    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:
          deprecated: true
          x-sunset: '2026-07-01'
          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
    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.
    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.
    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
          x-sunset: '2026-07-01'
        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'
    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'
    RazorpayPostVerificationInfo:
      type: object
      description: >-
        Object to indicate successful stripe verification and provide payment
        information for next steps.
      required:
        - paymentId
      properties:
        paymentId:
          type: string
          description: Razorpay payment id for which the verification was performed.
          example: pay_Ot3t93Xwmh2hOg
        orderId:
          type: string
          description: Razorpay order id in which the payment was added.
          example: order_OshJ61KRRSzb2Q
        signature:
          type: string
          description: Razorpay signature to validate the payment.
          example: f2c0494b77cb067a0ac76973d65cdce8c9de593a55ef2f81969cbabbe7ce493d
    RazorpayPostVerificationInfoWrapper:
      type: object
      title: RazorpayPostVerificationInfoWrapper
      description: Wrapper for post razorpay verification info object.
      properties:
        postRazorpayVerificationInfo:
          $ref: '#/components/schemas/RazorpayPostVerificationInfo'
    RazorpayVerificationInfo:
      type: object
      title: RazorpayVerificationInfo
      description: >-
        Verification information required when card is tokenized via Razorpay
        for Indian markets.
      required:
        - paymentProcessor
      properties:
        paymentProcessor:
          type: string
          description: Payment processor involved.
          example: RAZORPAY
        paymentAuthUrl:
          description: URL for authorizing the payment on the card.
          type: string
    RazorpayVerificationInfoWrapper:
      type: object
      title: RazorpayVerificationInfoWrapper
      description: Wrapper for Razorpay verification Info.
      properties:
        razorPayVerificationInfo:
          $ref: '#/components/schemas/RazorpayVerificationInfo'
    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
          example: b93dc51f-12dd-46c7-b7d6-1cb12cd3f5b3
        name:
          type: string
          example: Name
    RegistrarUserIdSearch:
      type: object
      title: RegistrarUserId Search
      required:
        - userIdType
        - registrarUserId
      properties:
        userIdType:
          type: string
          example: REGISTRAR_USER_ID
        registrarUserId:
          $ref: '#/components/schemas/UserId'
    RestrictedKeywordsWithReason:
      type: object
      properties:
        keyword:
          type: string
          description: Restricted keyword
          example: Test Keyword
        reason:
          type: string
          description: Reason for restriction
          example: Test Reason
    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
    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.
    SelectedFormOfPayment:
      type: object
      description: >-
        List of different forms of payments used for booking for a set of
        travelers.
      required:
        - paymentItems
        - selectedPaymentSources
      properties:
        paymentItems:
          type: array
          items:
            $ref: '#/components/schemas/PaymentItem'
        selectedPaymentSources:
          type: array
          items:
            $ref: '#/components/schemas/SelectedPaymentSource'
    SelectedPaymentMethod:
      type: object
      description: Selected payment method for the booking.
      oneOf:
        - $ref: '#/components/schemas/SelectedPaymentSourceWrapper'
    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'
    SelectedPaymentSourceWrapper:
      type: object
      title: SelectedPaymentSourceWrapper
      properties:
        selectedPaymentSource:
          $ref: '#/components/schemas/SelectedPaymentSource'
    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
    SimpleMoneyRange:
      title: SimpleMoneyRange
      type: object
      description: SimpleMoney range containing minimum and maximum amount.
      properties:
        min:
          $ref: '#/components/schemas/SimpleMoney'
          description: Minimum value - inclusive.
        max:
          $ref: '#/components/schemas/SimpleMoney'
          description: Maximum value - inclusive.
    SplitPayment:
      type: object
      title: SplitPayment
      description: Split payment details for claiming reimbursements.
      properties:
        inPolicyAmount:
          $ref: '#/components/schemas/Money'
          description: Amount approved by Company to be reimbursed.
        isAmountReimbursable:
          type: boolean
          description: If the in policy amount is reimbursable or not.
        personalFopChargeableAmount:
          $ref: '#/components/schemas/Money'
          description: Amount that is to be paid by traveler itself.
    StringListWrapper:
      type: object
      title: StringListWrapper
      properties:
        sList:
          type: array
          items:
            type: string
    StringWrapper:
      type: object
      title: StringWrapper
      properties:
        s:
          type: string
    StripeCardTokens:
      type: object
      title: StripeCardTokens
      description: Stripe card tokens used by clients in authorizing newly added cards.
      required:
        - paymentMethodId
        - setupIntentClientSecret
        - paymentProcessor
      properties:
        paymentProcessor:
          type: string
          description: Payment processor involved.
          example: STRIPE
        paymentMethodId:
          type: string
          description: Stripe's payment-method-id for the card.
          example: pm_1HzKDPI3bT9GUjvoUkRQooN3
        setupIntentClientSecret:
          type: string
          description: Stripe client secret for attaching the card to the setup-intent.
          example: seti_1IBwEiKXFM6BpWYhfdCGZ7sg_secret_InXJDifWGBcVqekJvhAxidON6vHAvfS
        connectedAccountId:
          type: string
          description: >-
            Account Id of the connected account in which above payment-method
            and setup-intent exist. This is populated only when a connected
            account is used.
          example: acct_1NT8oyCZnFgI0lFY
        publishableKey:
          type: string
          description: Publishable key of the Stripe platform account.
          example: pk_test_51Hx7XyI3bT9GUjvoUkRQooN3
    StripeVerificationInfo:
      type: object
      description: Verification information required for card stripe verification.
      properties:
        stripeCardTokens:
          $ref: '#/components/schemas/StripeCardTokens'
    StripeVerificationInfoWrapper:
      type: object
      title: StripeVerificationInfoWrapper
      description: Wrapper for stripe verification Info.
      properties:
        stripeVerificationInfo:
          $ref: '#/components/schemas/StripeVerificationInfo'
    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
        - GROUNDSPAN
        - SABRE_NDC
        - BOOKING_COM
        - CARTRAWLER
        - PREMIER_INN
        - TRAVELODGE
        - ENTERPRISE
        - HYATT
        - NATIONAL
        - ALAMO
        - HERTZ
        - DOLLAR
        - THRIFTY
        - FIREFLY
        - EUROSTAR
        - AVIS
        - BUDGET
      x-ignoreBreakingChanges:
        - SupplierType->PREMIER_INN
      example: SABRE
    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
        percentage:
          type: number
          format: double
          description: Tax amount to total amount
          example: 9
    TaxBreakdown:
      type: array
      items:
        $ref: '#/components/schemas/Tax'
    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
        - GROUNDSPAN
        - SABRE_NDC
        - BOOKING_COM
        - CARTRAWLER
        - PREMIER_INN
        - TRAVELODGE
        - ENTERPRISE
        - HYATT
        - EUROSTAR
        - NATIONAL
        - ALAMO
        - AVIS
        - BUDGET
        - HERTZ
        - DOLLAR
        - THRIFTY
        - FIREFLY
      x-ignoreBreakingChanges:
        - ThirdPartySource->BOOKING_COM
        - ThirdPartySource->CARTRAWLER
        - ThirdPartySource->PREMIER_INN
      example: SABRE
    ThreeDSecure2PostVerificationInfo:
      type: object
      description: Result of 3DS2 verification.
      required:
        - results
      properties:
        results:
          type: array
          description: List of 3DS2 verification results.
          items:
            $ref: '#/components/schemas/ThreeDSecure2VerificationResultItem'
    ThreeDSecure2PostVerificationInfoWrapper:
      type: object
      title: ThreeDSecure2PostVerificationInfoWrapper
      description: Wrapper for 3DS2 post verification info object
      properties:
        threeDSecure2PostVerificationInfo:
          $ref: '#/components/schemas/ThreeDSecure2PostVerificationInfo'
    ThreeDSecure2VerificationInfo:
      type: object
      description: Verification information required for 3DS2 authentication.
      required:
        - verificationInfoList
      properties:
        verificationInfoList:
          type: array
          description: List of 3DS2 verification info.
          items:
            $ref: '#/components/schemas/ThreeDSecure2VerificationInfoItem'
    ThreeDSecure2VerificationInfoItem:
      type: object
      description: 3DS2 verification info.
      required:
        - cardId
        - sessionId
        - redirectUrl
      properties:
        cardId:
          type: string
          description: Card id for which the verification was performed.
          example: 550e8400-e29b-41d4-a716-446655440000
        sessionId:
          type: string
          description: session id of the payment service provider.
          example: sid_7q3lpqopuwmuxct3l3rkz225ae
        redirectUrl:
          type: string
          description: 3DS2 verification redirect url.
          example: >-
            https://api.checkout.com/sessions-interceptor/sid_7q3lpqopuwmuxct3l3rkz225ae
    ThreeDSecure2VerificationInfoWrapper:
      type: object
      title: ThreeDSecure2VerificationInfoWrapper
      description: Wrapper for 3DS2 verification Info.
      properties:
        threeDSecure2VerificationInfo:
          $ref: '#/components/schemas/ThreeDSecure2VerificationInfo'
    ThreeDSecure2VerificationResultItem:
      type: object
      description: Result of 3DS2 verification.
      required:
        - cardId
        - sessionId
        - success
      properties:
        cardId:
          type: string
          description: Card id for which the verification was performed.
          example: 550e8400-e29b-41d4-a716-446655440000
        sessionId:
          type: string
          description: session id of the payment service provider.
          example: sid_7q3lpqopuwmuxct3l3rkz225ae
        success:
          type: boolean
          description: Whether the 3DSecure2 authentication was successful.
          example: true
    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'
    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
    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'
    TripData:
      type: object
      title: TripData
      description: Trip data to book a PNR.
      required:
        - tripId
      properties:
        approverEmail:
          description: >-
            Email address of the approver who should receives approval email for
            the current booking.
          type: string
        approverName:
          description: Name of the approver.
          type: string
        hardApprovalRequired:
          description: |
            Whether the current booking requires hard approval or soft approval.
            This flag should be used only if valid approver is present.
          type: boolean
        outOfPolicy:
          description: If the given booking is out of policy.
          type: boolean
        policyId:
          description: Policy Id for which violation is done.
          type: string
        policyVersion:
          description: Version of policy.
          type: integer
          format: int32
        tripId:
          description: Id of the trip.
          $ref: '#/components/schemas/TripId'
    TripId:
      type: object
      title: TripId
      description: Id of trip.
      required:
        - id
      properties:
        id:
          description: Id.
          type: string
          example: '2783425534'
    TripUsageType:
      title: TripUsageType
      description: Trip usage type.
      type: string
      enum:
        - STANDARD
        - EVENT
    UrlVerificationInfo:
      type: object
      description: Verification information required for url based payment verification.
      properties:
        ccVerificationUrl:
          description: Verification url for the payment source.
          type: string
    UrlVerificationInfoWrapper:
      type: object
      title: UrlVerificationInfoWrapper
      description: Wrapper for stripe verification Info.
      properties:
        urlVerificationInfo:
          $ref: '#/components/schemas/UrlVerificationInfo'
    UserId:
      type: object
      title: UserId
      description: User identifier
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
    UserIdSearch:
      type: object
      title: UserId Search
      required:
        - userIdType
        - userId
      properties:
        userIdType:
          type: string
          example: USER_ID
        userId:
          $ref: '#/components/schemas/UserId'
    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
          x-sunset: '2026-07-01'
        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'
    Variable:
      type: object
      title: Variable
      description: >-
        Variable defining the additional value to be sent along with custom
        field response.
      required:
        - type
        - name
      properties:
        type:
          type: string
          example: VARIABLE
          default: VARIABLE
        name:
          $ref: '#/components/schemas/VariableName'
    VariableName:
      type: string
      title: VariableName
      description: Name of the variable.
      enum:
        - PUBLISHED_FARE
        - LLF
        - ADD_COLLECT_AMOUNT
        - SELECTED_FARE
        - SPLIT_PAYMENT_FARE
      example: LLF
      x-ignoreBreakingChanges:
        - VariableName->ADD_COLLECT_AMOUNT
        - VariableName->SELECTED_FARE
        - VariableName->SPLIT_PAYMENT_FARE
    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'
    WaiveOffFeeReason:
      type: object
      title: WaiveOffFeeReason
      description: Fee waive off reason info.
      properties:
        reasonCode:
          type: string
          description: Fee waive off reason code.
          example: WA05
        reason:
          type: string
          description: Fee waive off reason description.
          example: Customer goodwill
    WaiveOffInfo:
      type: object
      title: WaiveOffInfo
      description: Waive off info.
      properties:
        waiveOffInfoPerModules:
          type: array
          description: Waive off info per module.
          items:
            $ref: '#/components/schemas/WaiveOffInfoPerModule'
    WaiveOffInfoPerModule:
      type: object
      title: WaiveOffInfoPerModule
      description: Waive off info per module.
      properties:
        moduleId:
          $ref: '#/components/schemas/ModuleId'
        waiveOffFeeReason:
          $ref: '#/components/schemas/WaiveOffFeeReason'
    WorkerType:
      type: string
      description: The type of worker.
      enum:
        - EMPLOYEE
        - CONTINGENT
        - SEASONAL
        - INTERN
        - GUEST
      example: EMPLOYEE
      x-enumValidFrom:
        GUEST: '2025-06-03'
    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: Car
    description: >-
      These endpoints provide comprehensive functionality for managing car
      bookings. They enable users to search for cars, check rates and
      availability, create and modify bookings, and handle cancellations and
      rebooking.
paths:
  /v2/car/search:
    post:
      tags:
        - Car
      summary: Get car search results
      description: >-
        Search for available cars using the pickup and dropoff locations, and
        the traveler's user ID.
      operationId: carSearch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CarSearchRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CarSearchResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/car/create-pnr:
    post:
      tags:
        - Car
      summary: Create a new car booking
      description: Create a new car PNR.
      operationId: carCreatePnr
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CarCreatePnrRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CarCreatePnrResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/car/pnrs/{pnrId}/modify-search:
    parameters:
      - name: pnrId
        in: path
        description: Pnr Id of the Pnr to be modified.
        required: true
        schema:
          type: string
        example: 4974a66b
    post:
      tags:
        - Car
      summary: Get car search results for a booking modification
      description: >-
        Get the available car search results when you're modifying an existing
        booking.
      operationId: carModifySearch
      x-draft: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CarModifySearchRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CarSearchResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/car/pnrs/{pnrId}/modify-book:
    parameters:
      - name: pnrId
        in: path
        description: Pnr Id of the Pnr to be modified.
        required: true
        schema:
          type: string
        example: 4974a66b
    post:
      tags:
        - Car
      summary: Modify an existing car booking
      description: Make modifications to an existing car booking.
      operationId: carModifyBook
      x-draft: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CarModifyBookingRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CarModifyBookingResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/car/pnrs/{pnrId}/cancel-pnr:
    parameters:
      - name: pnrId
        in: path
        description: Pnr Id of the booking to be cancelled.
        required: true
        schema:
          type: string
        example: 4974a66b
    post:
      tags:
        - Car
      summary: Cancel a car booking
      description: Cancel an existing car booking and initiate a refund (if applicable).
      operationId: carCancelPnr
      x-draft: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CarCancelPnrRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CarCancelPnrResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/car/rate-details:
    post:
      tags:
        - Car
      summary: Get more details for a specific car rate
      description: Get additional details for a selected car rate from the search results.
      operationId: carRateDetails
      x-draft: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CarRateDetailsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CarRateDetailsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/car/price-check:
    post:
      tags:
        - Car
      summary: Check car price availability
      description: >-
        Check if the price for a selected car is still available before
        proceeding with the booking.
      operationId: carPriceCheck
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CarPriceCheckRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CarPriceCheckResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/car/location-details:
    post:
      tags:
        - Car
      summary: Get location details for a car vendor
      description: Get the car location details and the vendor information.
      operationId: carLocationDetails
      x-draft: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CarLocationDetailsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CarLocationDetailsResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/car/pnrs/{pnrId}/update:
    parameters:
      - name: pnrId
        in: path
        description: The Spotnana PNR ID of the PNR to be read.
        required: true
        schema:
          type: string
        example: '1213124111'
    put:
      tags:
        - Car
      summary: Edit traveler information for an existing car PNR
      description: >-
        Edit traveler information such as loyalty number for an existing car
        booking.
      operationId: carPnrEdit
      x-draft: true
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CarEditPnrRequest'
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
