openapi: 3.1.0
info:
  title: Company 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:
    BadRequest:
      description: Bad request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The specified resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  schemas:
    AddPartnerPublicKeyRequest:
      type: object
      title: AddPartnerPublicKeyRequest
      required:
        - keyType
      description: >
        Request to add a partner public key for token exchange authentication.
        Set keyType to JWKS and populate the jwks field with the RSA public key
        in standard JWKS format (RFC 7517).
      properties:
        keyType:
          $ref: '#/components/schemas/PartnerPublicKeyType'
        jwks:
          $ref: '#/components/schemas/PartnerJwks'
          description: JWKS containing the RSA public key. Required when keyType is JWKS.
    AddPartnerPublicKeyResponse:
      type: object
      title: AddPartnerPublicKeyResponse
      description: Response containing the partner public keys that were added.
      properties:
        keys:
          type: array
          description: List of added partner public keys.
          items:
            $ref: '#/components/schemas/PartnerPublicKeyInfo'
    AgentAssistedTransactionFeeInfo:
      title: Agent Assisted Transaction Fee Info
      type: object
      description: Transaction Fees when Agent is booking for Traveler.
      required:
        - agentFeeType
      properties:
        agentFeeType:
          type: string
          example: AGENT_ASSISTED_TRANSACTION_FEE
        transactionFeeType:
          $ref: '#/components/schemas/ServiceFeeTransactionType'
        calculatedAmount:
          $ref: '#/components/schemas/Money'
        chargeProcessorInfo:
          $ref: '#/components/schemas/ChargeProcessorInfo'
    AgentAssistedTripFeeInfo:
      title: Agent Assisted Trip Fee Info
      type: object
      description: Trip Fees when Agent is booking for Traveler.
      required:
        - agentFeeType
      properties:
        agentFeeType:
          type: string
          example: AGENT_ASSISTED_TRIP_FEE
        calculatedAmount:
          $ref: '#/components/schemas/Money'
        chargeProcessorInfo:
          $ref: '#/components/schemas/ChargeProcessorInfo'
    AgentContact:
      type: object
      title: AgentContact
      description: Details of agent contact event.
      required:
        - contactType
        - contactId
        - contactOp
        - billable
      properties:
        contactType:
          description: Mode of agent contact.
          $ref: '#/components/schemas/AgentContactType'
          example: PHONE
        contactId:
          type: string
          description: Unique ID for agent contact.
          example: '1234567890'
        contactOp:
          description: Operation that the agent performed.
          $ref: '#/components/schemas/AgentContactOp'
          example: AGENT_BOOKING
        agentId:
          $ref: '#/components/schemas/UserId'
          description: User ID of agent.
        billable:
          type: boolean
          description: Is the agent contact event billable?
          example: true
        pnrId:
          type: string
          description: PNR ID (if applicable).
          example: '1234567890'
        travelType:
          description: Travel type.
          $ref: '#/components/schemas/TravelType'
          example: AIR
        notes:
          type: string
          description: Agent notes.
          example: Requested by customer
        nonBillableReason:
          $ref: '#/components/schemas/NonBillableReason'
          description: Reason for non-billable agent contact
    AgentContactOp:
      type: string
      title: AgentContactOp
      description: Agent contact operation.
      enum:
        - AGENT_BOOKING
        - AGENT_MODIFY
        - AGENT_CANCEL
        - AGENT_OTHER
        - AGENT_EXCHANGE
        - ANCILLARY_PURCHASE
        - SHELL_PNR_CREATE
        - SHELL_PNR_MODIFY
        - SHELL_PNR_CANCEL
        - SHELL_PNR_EXCHANGE
        - MANUAL_FORM_CREATE
        - MANUAL_FORM_MODIFY
        - MANUAL_FORM_CANCEL
        - MANUAL_FORM_EXCHANGE
        - UNUSED_TICKET_MANAGEMENT
    AgentContactType:
      type: string
      title: Agent contact type
      description: Agent contact type
      enum:
        - PHONE
        - CHAT
        - EMAIL
    AgentFeeInfo:
      type: object
      title: AgentFeeInfo
      required:
        - feeType
      discriminator:
        propertyName: agentFeeType
        mapping:
          AGENT_ASSISTED_TRIP_FEE: '#/components/schemas/AgentAssistedTripFeeInfo'
          AGENT_ASSISTED_TRANSACTION_FEE: '#/components/schemas/AgentAssistedTransactionFeeInfo'
      oneOf:
        - $ref: '#/components/schemas/AgentAssistedTripFeeInfo'
        - $ref: '#/components/schemas/AgentAssistedTransactionFeeInfo'
      properties:
        feeType:
          type: string
          description: Type of the fee
          example: AGENT_FEE
    AirConfig:
      type: object
      title: AirConfig
      description: Air content config
      properties:
        fareCategoryFilter:
          type: array
          description: List of fare category filter
          items:
            $ref: '#/components/schemas/FareCategoryFilterConfig'
    Announcement:
      type: object
      title: Announcement
      description: Announcement details
      required:
        - title
        - description
      properties:
        title:
          type: string
          description: Title of the announcement.
          example: Spotnana on Mission to Unbundle Travel
        description:
          type: string
          description: Description of the announcement.
          example: Amex Ventures Joins Spotnana on Mission to Unbundle Travel.
        linkUrl:
          type: string
          description: Announcement link url which points to the atual announcement page.
          example: >-
            https://medium.com/inside-spotnana/amex-ventures-joins-spotnana-on-mission-to-unbundle-travel-3cdb2ecceff4
        linkDisplayText:
          type: string
          description: Announcement link display text.
          example: New announcement
    AppDownloadLinksConfig:
      type: object
      title: AppDownloadLinksConfig
      description: App store or QR links for downloading app.
      properties:
        androidPlayStoreUrl:
          type: string
          example: https://play.google.com/store/apps/details?id=com.spotnana
        iosAppStoreUrl:
          type: string
          example: https://apps.apple.com/in/app/spotnana-travel-booking/id1580021446
        qrCodeUrl:
          type: string
          example: https://www.spotnana.com
    AppliedWaiveOffInfo:
      type: object
      title: Applied Waive-Off Information
      description: Information about TMC fee waivers applied by an agent during checkout.
      properties:
        waiveOffAmount:
          description: The amount of TMC fee that has been waived
          $ref: '#/components/schemas/FareAmount'
        waiveOffReason:
          description: The reason provided by the agent for waiving the fee
          $ref: '#/components/schemas/WaiveOffFeeReason'
    ArrayOfReference:
      type: object
      properties:
        length:
          type: integer
          format: int32
        elements:
          type: array
          description: List of references containing id and name.
          items:
            $ref: '#/components/schemas/Reference'
        totalNumResults:
          type: integer
          format: int32
          description: Total number of results
    BookingDetails:
      type: object
      title: BookingDetails
      description: Booking information
      properties:
        pnrId:
          type: string
          description: PNR Id
        pnrVersion:
          type: integer
          format: int32
          description: Version number associated with the PNR
        tripUsageType:
          type: string
          description: Trip Usage Type
          enum:
            - TRIP_USAGE_TYPE_UNKNOWN
            - STANDARD
            - EVENT
        source:
          description: Third party source
          $ref: '#/components/schemas/ThirdPartySource'
        sourcePnrId:
          type: string
          description: Source PNR Id from thirdparty source
    BookingFeeInfo:
      type: object
      title: BookingFeeInfo
      required:
        - feeType
      discriminator:
        propertyName: bookingFeeType
        mapping:
          TRIP_FEE: '#/components/schemas/TripFeeInfo'
          TRANSACTION_FEE: '#/components/schemas/TransactionFeeInfo'
          VALUE_ADDED_SERVICE_FEE: '#/components/schemas/ValueAddedServiceFeeInfo'
          OTHER_FEE: '#/components/schemas/OtherFeeInfo'
      oneOf:
        - $ref: '#/components/schemas/TripFeeInfo'
        - $ref: '#/components/schemas/TransactionFeeInfo'
        - $ref: '#/components/schemas/ValueAddedServiceFeeInfo'
        - $ref: '#/components/schemas/OtherFeeInfo'
      properties:
        feeType:
          type: string
          description: Type of the fee
          example: BOOKING_FEE
    BookingType:
      title: BookingType
      description: What type of travel booking it is.
      type: string
      enum:
        - AIR
        - HOTEL
        - CAR
        - RAIL
        - LIMO
      example: AIR
    BrandingVisibility:
      type: object
      title: BrandingVisibility
      description: >-
        Per-surface visibility of branding elements. Additive — default shows
        everything.
      properties:
        headerLogo:
          $ref: '#/components/schemas/SurfaceVisibility'
        poweredBy:
          $ref: '#/components/schemas/SurfaceVisibility'
    CabinViewFareCategory:
      type: string
      enum:
        - UNKNOWN_CABIN_CATEGORY
        - BASIC
        - ECONOMY
        - PREMIUM_ECONOMY
        - ECONOMY_PLUS
        - BUSINESS
        - FIRST
      default: UNKNOWN_CABIN_CATEGORY
    CarbonCostConfig:
      type: object
      title: CarbonCostConfig
      description: The config is used to calculate carbon cost of CO2 emission.
      required:
        - price
        - weight
      properties:
        price:
          description: The price for the carbon emission per weight.
          $ref: '#/components/schemas/Money'
        weight:
          description: The weight unit and amount to calculate cost of carbon emission.
          $ref: '#/components/schemas/Weight'
    Card:
      type: object
      title: Card
      description: User card info
      required:
        - number
      properties:
        id:
          type: string
          description: Unique identifier for this card
          format: uuid
          example: 34d536b6-f8ff-11eb-9a61-0242ac180002
        type:
          type: string
          enum:
            - UNKNOWN
            - CREDIT
            - DEBIT
          description: Type of card
          example: CREDIT
        company:
          $ref: '#/components/schemas/CardCompany'
        name:
          description: Name on card
          type: string
          example: Harrison Schwartz
          x-pii: SENSITIVE
        address:
          description: Billing address
          $ref: '#/components/schemas/PostalAddress'
          x-pii: SENSITIVE
        number:
          type: string
          description: Card number
          example: '4111111111111111'
        expiryMonth:
          type: integer
          format: int32
          minimum: 1
          maximum: 12
          description: Expiry month
          example: 1
          deprecated: true
          x-sunset: '2026-07-01'
        expiryYear:
          type: integer
          format: int32
          description: Expiry year
          minimum: 2000
          example: 2010
          deprecated: true
          x-sunset: '2026-07-01'
        cvv:
          type: string
          description: Card cvv number
          example: '012'
        label:
          type: string
          description: Card Label
          example: Label amex
        currency:
          type: string
          description: Native currency of the card.
          example: USD
        externalId:
          type: string
          description: Spotnana partner card id.
          example: bxt_RNGsNfzgJDaTstKIKqK4xEuhGYAnMdYK8T40
        vaultId:
          type: string
          description: ID of the vault used for creating the card.
          format: uuid
          example: 34d536b6-f8ff-11eb-9a61-0242ac180002
        expiry:
          description: Card Expiry.
          $ref: '#/components/schemas/CardExpiry'
        ownershipLabel:
          $ref: '#/components/schemas/OwnershipLabel'
          example: PERSONAL
    CardAccessEntity:
      title: CardAccessEntity
      type: object
      description: Contains the central access level and entity id.
      required:
        - entityId
      properties:
        entityId:
          type: string
          description: >-
            Holds the id for for the user who can access the card or
            organization id or legal entity
        centralCardAccessLevel:
          $ref: '#/components/schemas/CentralCardAccessLevel'
    CardCompany:
      type: string
      enum:
        - NONE
        - VISA
        - MASTERCARD
        - AMEX
        - DISCOVER
        - AIR_TRAVEL_UATP
        - CARTE_BLANCHE
        - DINERS_CLUB
        - JCB
        - BREX
        - UNION_PAY
        - EURO_CARD
        - ACCESS_CARD
        - ELO_CARD
      description: The issuing company of card
      example: VISA
    CardExpiry:
      title: CardExpiry
      type: object
      description: Contains the expiry of a Card.
      oneOf:
        - $ref: '#/components/schemas/TokenizedExpiryWrapper'
        - $ref: '#/components/schemas/ExpiryWrapper'
    CardMetadata2:
      type: object
      title: CardMetadata
      description: Metadata for Card payment source.
      properties:
        card:
          $ref: '#/components/schemas/Card'
        accessType:
          $ref: '#/components/schemas/CreditCardAccess'
        isLodgeCard:
          type: boolean
          description: Whether the payment is made using a lodge card
          example: false
        bta:
          type: string
          description: >-
            Whether this is a BTA card. Possible values are 'Y' or 'N'. Relevant
            only for lodge cards.
          example: 'Y'
    CentralCardAccessLevel:
      title: CentralCardAccessLevel
      type: string
      description: >-
        Identifies at which level central card is applicable, for example
        organization or legal entity.
      enum:
        - UNKNOWN
        - ORGANIZATION
        - LEGAL_ENTITY
        - TMC
    ChargeProcessorInfo:
      title: ChargeProcessorInfo
      type: object
      description: Information about the processor that calculated the charge
      discriminator:
        propertyName: chargeProcessorType
        mapping:
          RULE_BASED_INFO: '#/components/schemas/RuleBasedInfo'
          TMC_CALCULATOR_INFO: '#/components/schemas/TmcCalculatorInfo'
      oneOf:
        - $ref: '#/components/schemas/RuleBasedInfo'
        - $ref: '#/components/schemas/TmcCalculatorInfo'
    ColorConfig:
      type: object
      title: ColorConfig
      description: Color configuration for customizable colors in the UI.
      properties:
        profileColors:
          $ref: '#/components/schemas/ProfileColors'
    ColorTitle:
      title: ColorTitle
      description: Title of the color.
      type: string
      enum:
        - PROFILE_TIER_MEMBER_COLOR
        - PROFILE_TIER_SILVER_COLOR
        - PROFILE_TIER_GOLD_COLOR
        - PROFILE_TIER_PLATINUM_COLOR
        - PROFILE_TIER_TITANIUM_COLOR
        - PROFILE_TIER_AMBASSADOR_COLOR
    ColorWhiteLabelConfig:
      type: object
      title: ColorWhitelabelConfig
      description: Whitelabel configuration related to colours.
      properties:
        primary:
          type: string
          example: '#D33B47'
        primaryDark:
          type: string
          example: '#D33B47'
        primaryLight:
          type: string
          example: '#D33B47'
        primaryPale:
          type: string
          example: '#D33B47'
        onPrimary:
          type: string
          example: '#D33B47'
        secondary:
          type: string
          example: '#D33B47'
        secondaryDark:
          type: string
          example: '#D33B47'
        secondaryLight:
          type: string
          example: '#D33B47'
        secondaryPale:
          type: string
          example: '#D33B47'
        onSecondary:
          type: string
          example: '#D33B47'
        error:
          type: string
          example: '#D33B47'
        errorDark:
          type: string
          example: '#D33B47'
        errorLight:
          type: string
          example: '#D33B47'
        errorPale:
          type: string
          example: '#D33B47'
        onError:
          type: string
          example: '#D33B47'
    Company:
      type: object
      title: Company
      description: Company information.
      required:
        - id
        - name
        - billingCurrency
        - companyRoles
      properties:
        id:
          $ref: '#/components/schemas/CompanyId'
        name:
          type: string
          description: Company name
          example: Spotnana
        emailDomains:
          type: array
          description: List of the company email domains
          uniqueItems: true
          items:
            type: string
            example: spotnana.com
        billingCurrency:
          type: string
          description: Billing currency of the company
          example: INR
        phoneNumbers:
          type: array
          description: List of company phone numbers
          items:
            $ref: '#/components/schemas/PhoneNumber'
        emergencyContactInfos:
          type: array
          description: List of company emergency contacts
          items:
            $ref: '#/components/schemas/EmergencyContactInfo'
        isSelfSignUpEnabled:
          type: boolean
          description: Boolean to show if company has self sign up enabled.
          example: true
        announcements:
          type: array
          description: Company announcements
          items:
            $ref: '#/components/schemas/Announcement'
        companyLogo:
          $ref: '#/components/schemas/Image'
          description: Company logo
        contractedBy:
          $ref: '#/components/schemas/CompanyId'
          description: Company ID which have contracted this company.
        isActive:
          type: boolean
          description: Boolean to show if this is an active company.
        companyRoles:
          type: array
          description: Company roles
          items:
            $ref: '#/components/schemas/CompanyRole'
        supportConfig:
          $ref: '#/components/schemas/SupportConfig'
          description: Support Configuration for company
          deprecated: true
          x-sunset: '2026-07-01'
        ccEmailAddresses:
          type: array
          description: >-
            List of email addresses on which all confirmation emails will be
            cced. This is applicable only for company roles 'ORG'
          items:
            type: string
            example: example@gmail.com
        bccEmailAddresses:
          type: array
          description: >-
            List of email addresses on which all confirmation emails will be
            bcced. This is applicable only for company roles 'ORG'
          items:
            type: string
            example: example@gmail.com
        connectors:
          type: array
          description: Connectors related to company.
          items:
            $ref: '#/components/schemas/Connector'
        postalAddress:
          $ref: '#/components/schemas/PostalAddress'
          description: Postal address of the company.
        redirectUrl:
          type: string
          description: >-
            Redirect URL for the company. It is applicable only for company
            roles 'PARTNER_TMC'
        rewardsProgram:
          $ref: '#/components/schemas/RewardsProgram'
          description: >-
            Reward Program corresponding to partner. It is applicable only for
            company roles 'PARTNER_TMC'.
          deprecated: true
          x-sunset: '2026-07-01'
        tmcDefaultConfiguration:
          $ref: '#/components/schemas/TmcDefaultConfiguration'
          description: >-
            Default Booking configuration for the TMC. It is applicable only for
            company roles 'TMC'
        expensePartnerConfig:
          $ref: '#/components/schemas/ExpensePartnerConfig'
        mobileRedirectUrl:
          type: string
          description: >-
            Redirect URL for the company for mobile. It is applicable only for
            company roles 'PARTNER_TMC'
        applicableCustomFieldTypes:
          type: array
          description: List of custom fields supported by the company.
          items:
            $ref: '#/components/schemas/CustomFieldType'
        oauthPartnerConfig:
          $ref: '#/components/schemas/OAuthPartnerConfig'
        privacySettings:
          $ref: '#/components/schemas/PrivacySettings'
        designationTree:
          $ref: '#/components/schemas/DesignationNode'
          description: Designation tree for company showing who reports whom.
        externalId:
          type: string
          description: External id to be linked with this.
          example: MyCompanyId
        emailClientConfig:
          $ref: '#/components/schemas/EmailClientConfig'
          description: >-
            Email client configuration representing the email provider to be
            used.
        isFake:
          type: boolean
          description: >-
            Whether the company is a fake company for testing. This is for
            internal use.
          default: false
          example: false
        tmcPartnerRoleMappings:
          type: array
          description: list of individual role mappings between spotnana and partner.
          items:
            $ref: '#/components/schemas/TmcPartnerRoleMapping'
        supportConfigs:
          $ref: '#/components/schemas/SupportConfigs'
        loyaltyBlockedCountries:
          type: array
          items:
            type: string
          description: >-
            List of 2 letter country codes where business travelers should not
            be allowed to add loyalty info.
          example:
            - US
            - IN
        allowDomainBasedAuthConfig:
          type: boolean
          default: false
          description: Whether to allow user to get auth config based on email domain
        carbonCostConfig:
          $ref: '#/components/schemas/CarbonCostConfig'
          description: The config is used to calculate carbon cost of CO2 emission.
        defaultBookingTmcId:
          description: Default booking TMC id. For PARTNER_TMC companies only.
          $ref: '#/components/schemas/CompanyId'
        bookingTmcId:
          description: Booking TMC ID for the company. Applicable for ORG role companies.
          $ref: '#/components/schemas/CompanyId'
        companySpecifiedAttributes:
          type: array
          items:
            $ref: '#/components/schemas/CompanySpecifiedAttributeCompany'
          description: Company-specified custom attributes.
    CompanyId:
      type: object
      title: CompanyId
      description: Company ID
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
          example: f49d00fe-1eda-4304-ba79-a980f565281d
    CompanyManagerInfo:
      type: object
      title: CompanyManagerInfo
      description: Detailed information about a manager
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
          description: User ID of the manager
        fullName:
          type: string
          description: Full name of the manager
          example: John Doe
        email:
          type: string
          description: Email address of the manager
          example: john.doe@company.com
        profilePictureUrl:
          type: string
          description: URL to the manager's profile picture
          example: https://example.com/profiles/john-doe.jpg
        isActive:
          type: boolean
          description: Whether the manager is active
          example: true
    CompanyManagersConfig:
      type: object
      title: CompanyManagersConfig
      description: >-
        Configuration for company managers (account managers and customer
        success managers).
      properties:
        accountManagers:
          type: array
          description: List of detailed account manager information
          items:
            $ref: '#/components/schemas/CompanyManagerInfo'
        customerSuccessManagers:
          type: array
          description: List of detailed customer success manager information
          items:
            $ref: '#/components/schemas/CompanyManagerInfo'
    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
    CompanyRole:
      type: string
      description: Role of the company.
      enum:
        - ORG
        - TMC
        - PARTNER_TMC
        - HR_FEED_CONNECTOR
        - TRIPS_DATA_CONNECTOR
        - GLOBAL
      example: ORG
    CompanySpecifiedAttributeCompany:
      type: object
      description: Company-specified custom attribute.
      required:
        - fieldName
        - value
      properties:
        fieldName:
          type: string
          description: Field name of the attribute
          example: businessId
        value:
          type: string
          description: Field value of the attribute
          example: ABCD
    CompanySpecifiedAttributeConfig:
      type: object
      title: CompanySpecifiedAttributeConfig
      description: Configuration for a company-specified attribute on the enrollment form.
      required:
        - name
      properties:
        name:
          type: string
          description: The attribute name.
        isHidden:
          type: boolean
          description: Whether this attribute should be hidden from the enrollment form UI.
          default: false
    CompanySpecifiedAttributeLegalEntity:
      type: object
      description: Company specified attribute for legal entity.
      required:
        - fieldName
        - value
      properties:
        fieldName:
          type: string
          description: Field name of the attribute
          example: businessId
        value:
          type: string
          description: Field value of the attribute
          example: ABCD
    ConfermaInfo:
      type: object
      title: ConfermaInfo
      description: Details of conferma - one of virtual card vendors.
      required:
        - deploymentId
      properties:
        deploymentId:
          type: integer
          format: int32
          description: >-
            Unique identifier assigned to the virtual card deployment at the
            point of creation.
          example: 68793680
    Connector:
      type: object
      title: Connector
      description: Connectors related to company.
      required:
        - connectorType
        - connectorId
      properties:
        connectorType:
          type: string
          description: Type of connector.
          enum:
            - HR_FEED_CONNECTOR
            - TRIPS_DATA_CONNECTOR
          example: HR_FEED_CONNECTOR
        connectorId:
          $ref: '#/components/schemas/CompanyId'
    CostCenter:
      type: object
      title: CostCenter
      description: Cost center details.
      required:
        - id
        - name
      properties:
        id:
          $ref: '#/components/schemas/CostCenterId'
        name:
          type: string
          example: CostCenter
        externalId:
          type: string
          example: external-id
    CostCenterId:
      type: object
      title: Cost center id.
      required:
        - id
      properties:
        id:
          type: string
          example: 731ccbca-0415-6fe1-d235-c324dfbe7423
    CostCenterInfo:
      type: object
      title: CostCenterInfo
      description: Cost center information with UUID and entity name.
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
          example: 731ccbca-0415-6fe1-d235-c324dfbe7423
        name:
          type: string
          example: Credit
    CreateCompanyRequest:
      type: object
      title: CreateCompanyRequest
      description: Request for company create.
      required:
        - name
        - billingCurrency
        - companyRoles
      properties:
        name:
          type: string
          description: Company name
          example: Spotnana
        emailDomains:
          type: array
          description: List of the company email domains
          uniqueItems: true
          items:
            type: string
            example: spotnana.com
        billingCurrency:
          type: string
          description: Billing currency of the company
          example: INR
        phoneNumbers:
          type: array
          description: List of company phone numbers
          items:
            $ref: '#/components/schemas/PhoneNumber'
        emergencyContactInfos:
          type: array
          description: List of company emergency contacts
          items:
            $ref: '#/components/schemas/EmergencyContactInfo'
        isSelfSignUpEnabled:
          type: boolean
          description: Boolean to show if company has self sign up enabled.
          example: true
        announcements:
          type: array
          description: Company announcements
          items:
            $ref: '#/components/schemas/Announcement'
        companyLogo:
          $ref: '#/components/schemas/Image'
          description: Company logo
        contractedBy:
          $ref: '#/components/schemas/CompanyId'
          description: Company ID which have contracted this company.
        companyRoles:
          type: array
          description: Company roles
          items:
            $ref: '#/components/schemas/CompanyRole'
        supportConfig:
          $ref: '#/components/schemas/SupportConfig'
          description: Support Configuration for company
          deprecated: true
          x-sunset: '2026-07-01'
        supportConfigs:
          type: array
          description: Support Configs for company
          items:
            $ref: '#/components/schemas/SupportConfig'
        ccEmailAddresses:
          type: array
          description: >-
            List of email addresses on which all confirmation emails will be
            cced. This is applicable only for company roles 'ORG'
          items:
            type: string
            example: example@gmail.com
        bccEmailAddresses:
          type: array
          description: >-
            List of email addresses on which all confirmation emails will be
            bcced. This is applicable only for company roles 'ORG'
          items:
            type: string
            example: example@gmail.com
        postalAddress:
          $ref: '#/components/schemas/PostalAddress'
          description: Postal address of the company.
        redirectUrl:
          type: string
          description: >-
            Redirect URL for the company. It is applicable only for company
            roles 'PARTNER_TMC'
        rewardsProgram:
          $ref: '#/components/schemas/RewardsProgram'
          description: >-
            Rewards Program corresponding to partner. It is applicable only for
            company roles 'PARTNER_TMC'.
          deprecated: true
          x-sunset: '2026-07-01'
        tmcDefaultConfiguration:
          $ref: '#/components/schemas/TmcDefaultConfiguration'
          description: >-
            Default Booking configuration for the TMC. It is applicable only for
            company roles 'TMC'
        expensePartnerConfig:
          $ref: '#/components/schemas/ExpensePartnerConfig'
        mobileRedirectUrl:
          type: string
          description: >-
            Redirect URL for the company for mobile. It is applicable only for
            company roles 'PARTNER_TMC'
        applicableCustomFieldTypes:
          type: array
          description: List of custom fields supported by the company.
          items:
            $ref: '#/components/schemas/CustomFieldType'
        oauthPartnerConfig:
          deprecated: true
          x-sunset: '2026-07-01'
          $ref: '#/components/schemas/OAuthPartnerConfig'
        privacySettings:
          $ref: '#/components/schemas/PrivacySettings'
        emailClientConfig:
          $ref: '#/components/schemas/EmailClientConfig'
          description: >-
            Email client configuration representing the email provider to be
            used.
        externalId:
          type: string
          description: External id for legal entity.
          example: company-external-id
        isFake:
          type: boolean
          description: >-
            Whether the company is a fake company for testing. This is for
            internal use.
          default: false
          example: false
        tmcPartnerRoleMappings:
          type: array
          description: list of individual role mappings between spotnana and partner.
          items:
            $ref: '#/components/schemas/TmcPartnerRoleMapping'
        loyaltyBlockedCountries:
          type: array
          items:
            type: string
          description: >-
            List of 2 letter country codes where business travelers should not
            be allowed to add loyalty info.
          example:
            - US
            - IN
        allowDomainBasedAuthConfig:
          type: boolean
          default: false
          description: Whether to allow user to get auth config based on email domain
        carbonCostConfig:
          $ref: '#/components/schemas/CarbonCostConfig'
          description: The config is used to calculate carbon cost of CO2 emission.
        defaultBookingTmcId:
          description: Default booking TMC id. For PARTNER_TMC companies only.
          $ref: '#/components/schemas/CompanyId'
        bookingTmcId:
          description: Booking TMC ID for the company. Applicable for ORG role companies.
          $ref: '#/components/schemas/CompanyId'
        companySpecifiedAttributes:
          type: array
          items:
            $ref: '#/components/schemas/CompanySpecifiedAttributeCompany'
          description: Company-specified custom attributes.
    CreateCostCenterRequest:
      type: object
      description: Request body for cost center create API.
      required:
        - name
      properties:
        name:
          type: string
        numberOfEmployees:
          type: integer
          format: int32
        externalId:
          type: string
          example: external-id
    CreateDepartmentRequest:
      type: object
      title: CreateDepartmentRequest
      required:
        - name
      description: Create department request
      properties:
        name:
          type: string
          description: Name of the department
        externalId:
          type: string
          description: External id of the department
          example: department-external-id
    CreateGradeRequest:
      type: object
      title: CreateGradeRequest
      required:
        - name
      description: Create grade request
      properties:
        name:
          type: string
          description: Name of the grade
          example: Senior Engineer
    CreateOfficeRequest:
      type: object
      title: Create Office request.
      description: Office details.
      properties:
        address:
          $ref: '#/components/schemas/PostalAddress'
        name:
          type: string
          example: Office name
        latlng:
          $ref: '#/components/schemas/Latlng'
        externalId:
          type: string
          example: external-id
        taxId:
          type: string
          example: '123232'
    CreditCardAccess:
      type: object
      title: CreditCardAccess
      description: >-
        Access type for cards to check who in the organization has permission to
        use it
      required:
        - accessType
        - entityIds
      properties:
        accessType:
          $ref: '#/components/schemas/CreditCardAccessType'
        entityIds:
          type: array
          items:
            type: string
          description: >-
            Holds the ids for for all users who can access the card or
            organization id
        entities:
          type: array
          description: >-
            A list of cardAccessEntity consisting of central card access level
            if present and entity id.
          items:
            $ref: '#/components/schemas/CardAccessEntity'
    CreditCardAccessType:
      title: CreditCardAccessType
      type: string
      description: >-
        Identifies the different ways the card can be used across an
        organization
      enum:
        - UNKNOWN_TYPE
        - CENTRALISED
        - INDIVIDUAL
        - PERSONAL
        - TMC
        - APPLICATION
        - ITINERARY
        - EVENTS
        - TRAVEL_ARRANGER_MANAGED
        - COMPANY_TRAVEL_ARRANGER_MANAGED
        - EVENT_TEMPLATE
      x-ignoreBreakingChanges:
        - CreditCardAccessType->EVENT_TEMPLATE
    CustomFieldType:
      type: string
      description: The type of custom field.
      enum:
        - QUESTION
        - MEETING
        - BUDGET
        - BREX_TOKEN
      default: QUESTION
    DateRange:
      type: object
      description: Date range within which the virtual card can be charged.
      required:
        - startDate
        - endDate
      properties:
        startDate:
          $ref: '#/components/schemas/DateTimeLocal'
        endDate:
          $ref: '#/components/schemas/DateTimeLocal'
    DateTimeLocal:
      title: DateTimeLocal
      description: Local date and time 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
    DepartmentInfo:
      type: object
      title: DepartmentInfo
      description: Department information with UUID and entity name.
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
          example: 731ccbca-0415-6fe1-d235-c324dfbe7423
        name:
          type: string
          example: Accounting
    DepartmentV2:
      type: object
      title: DepartmentV2
      description: Department details.
      required:
        - id
        - name
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
          description: Name of the department
          example: IT Department
        externalId:
          type: string
          description: External id of the department
          example: department-ext-id
    DesignationNode:
      type: object
      title: DesignationNode
      description: Designation tree for company showing who reports whom.
      properties:
        name:
          type: string
          description: designation name
        children:
          type: array
          description: designations under this designation.
          items:
            $ref: '#/components/schemas/DesignationNode'
    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
    DirectBilling2:
      title: DirectBilling
      type: object
      description: Metadata for Direct Billing
      required:
        - vendorId
      properties:
        vendorId:
          type: string
          description: Unique vendor id/code
          example: ZI
        directBillingCode:
          type: string
          description: Direct billing code provided by the vendor
          example: '123456'
    DirectBillingWrapper2:
      type: object
      title: DirectBillingWrapper
      description: Wrapper for DirectBilling metadata
      required:
        - directBilling
      properties:
        directBilling:
          $ref: '#/components/schemas/DirectBilling2'
    EmailClientConfig:
      type: object
      title: EmailClientConfig
      description: Email Client Config
      required:
        - client
        - credentials
        - defaultSenderAddress
      properties:
        client:
          $ref: '#/components/schemas/EmailClientType'
          description: The email client to be used for pushing out the emails
        credentials:
          $ref: '#/components/schemas/EmailClientCredentials'
          description: Credentials for connecting to the email client
        defaultSenderAddress:
          type: string
          description: The default sender address to be used for the configured client
          example: test@somedomain.com
        defaultSenderName:
          type: string
          description: The default sender name to be used for the configured client
          example: Test Sender
    EmailClientCredentials:
      type: object
      title: EmailClientCredentials
      description: Email client credentials for the company.
      required:
        - emailClientSecretKey
      properties:
        emailClientSecretKey:
          $ref: '#/components/schemas/EmailClientSecretKey'
    EmailClientSecretKey:
      type: object
      title: EmailClientSecretKey
      description: EmailClientSecretKey
      properties:
        secretKey:
          type: string
          example: SECRET_KEY
        versionId:
          type: string
          example: '1'
    EmailClientType:
      type: string
      enum:
        - AWS_SES
        - SENDGRID
      example: SENDGRID
    EmailConfig:
      type: object
      title: EmailConfig
      description: The email configuration part of the ExpensePartnerConfig.
      required:
        - expensePartnerEmail
      properties:
        personalCardConfig:
          $ref: '#/components/schemas/PersonalCardConfig'
        centralCardExpenseEmail:
          type: string
          description: Central email for bookings done with central card.
          example: finance+le@company.com
        expensePartnerEmail:
          type: string
          description: The expense partner email where expense receipts are sent to.
          example: receipts@expensify.com
        bccEmail:
          type: string
          description: Email to which we bcc expensify emails
          example: docs@company.com
    EmergencyContactInfo:
      type: object
      title: EmergencyContactInfo
      description: Emergency contact information.
      required:
        - email
      properties:
        address:
          $ref: '#/components/schemas/PostalAddress'
          x-pii: SENSITIVE
        designation:
          type: string
          example: MANAGER
        email:
          type: string
          format: email
          example: emergency-contact@email.com
          x-pii: IDENTIFIER
        name:
          $ref: '#/components/schemas/Name'
        phoneNumber:
          $ref: '#/components/schemas/PhoneNumber'
          x-pii: IDENTIFIER
        userOrgId:
          $ref: '#/components/schemas/UserOrgId'
    EnrollmentConfig:
      type: object
      title: EnrollmentConfig
      description: Enrollment configuration.
      required:
        - termsAndConditions
      properties:
        termsAndConditions:
          type: string
          example: https://www.spotnana.com/terms/
          description: >-
            Deprecated: Use termsAndConditionsList instead. Link to terms and
            conditions.
          deprecated: true
          x-sunset: '2027-01-01'
        termsAndConditionsList:
          type: array
          description: >-
            List of terms and conditions. Each item is rich text that renders a
            bullet point with text and link.
          items:
            type: string
          example:
            - >-
              I agree to the <a href="https://www.spotnana.com/terms/">Terms of
              Service</a>
            - >-
              I agree to the <a href="https://www.spotnana.com/privacy/">Privacy
              Policy</a>
        templateSettings:
          $ref: '#/components/schemas/EnrollmentTemplateSettings'
        industryDropdownOptions:
          type: array
          items:
            type: string
          description: Dropdown options for company industry selection.
        skipOfacComplianceCheck:
          type: boolean
          description: Skip OFAC compliance check during enrollment.
        registrarLoginActions:
          type: array
          items:
            $ref: '#/components/schemas/LoginActionType'
          description: Login action types assigned to users created via enrollment.
        companySpecifiedAttributeConfigs:
          type: array
          description: >-
            Configuration for company-specified attributes on the enrollment
            form.
          items:
            $ref: '#/components/schemas/CompanySpecifiedAttributeConfig'
    EnrollmentTemplateSettings:
      type: object
      title: EnrollmentTemplateSettings
      description: Template settings for enrollment emails.
      properties:
        applicationReceivedTemplate:
          type: string
          description: Template ID for application received emails.
        applicationRejectedTemplate:
          type: string
          description: Template ID for application rejected emails.
        applicationApprovedTemplate:
          type: string
          description: Template ID for application approved emails.
    EntityId:
      type: object
      description: Identifier of an object
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
          example: b93dc51f-12dd-46c7-b7d6-1cb12cd3f5b3
    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.
    ExpenseOwner:
      type: object
      title: ExpenseOwner
      description: Determines who should the expense be reported against.
      properties:
        traveler:
          type: boolean
          description: >-
            Report the expense against the traveler who made the booking. If set
            to true, central email should not be set.
          example: true
        centralEmail:
          type: string
          description: Report the expense against a central email.
          example: docs@company.com
    ExpensePartner:
      title: Expense Partner
      description: The expense partner name as enum.
      type: string
      enum:
        - EXPENSIFY
        - EMBURSE_CHROMERIVER
        - BREX
      example: EXPENSIFY
    ExpensePartnerConfig:
      type: object
      title: ExpensePartnerConfig
      description: Expense Partner Configuration
      required:
        - partner
      properties:
        partner:
          $ref: '#/components/schemas/ExpensePartner'
        emailConfig:
          $ref: '#/components/schemas/EmailConfig'
        travelType:
          type: array
          description: Applicable segments
          items:
            $ref: '#/components/schemas/TravelType'
        isExpensePartnerEnabled:
          type: boolean
          description: A flag denoting is the expense partner config is enabled or not.
          default: true
          example: true
        reportCustomFields:
          type: boolean
          description: Send custom fields to the expense partner if enabled.
          example: true
        personalCardExpenseOwner:
          $ref: '#/components/schemas/ExpenseOwner'
        centralCardExpenseOwner:
          $ref: '#/components/schemas/ExpenseOwner'
        partnerReferralId:
          type: string
          description: >-
            Referral id used for this company/legal entity during expense
            partner setup
          example: 1234hgd
        itineraryConfig:
          $ref: '#/components/schemas/ItineraryConfig'
    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'
    ExternalEndpoint:
      type: object
      title: ExternalEndpoint
      description: Generic object to encapsulate information about any external endpoint.
      required:
        - url
        - authHeaderName
      properties:
        url:
          type: string
          description: Url from where user can be fetched.
        authHeaderName:
          type: string
          description: >-
            Auth header where we have to send authentication/authorization
            details.
        userIdentifierType:
          $ref: '#/components/schemas/UserIdentifierType'
          description: >-
            Either use pid or email as the identifier for auth code exchange
            process
        responseAttributes:
          description: List of relevant attribute names & their json xpath from response
          items:
            $ref: '#/components/schemas/UserInfoEndpointResponseAttribute'
    FailureDetails:
      type: object
      title: FailureDetails
      description: Failure details
      properties:
        failureCode:
          type: string
          description: failure code
          enum:
            - FAILURE_CODE_UNKNOWN
            - PAYMENT_METHOD_MISSING
            - PAYMENT_GATEWAY_FAILURE
        failureMessage:
          type: string
          description: failure message
    FailureReason:
      type: object
      title: FailureReason
      description: Contains the failure reason in case of any Failed Transaction
      properties:
        reasonCode:
          type: string
          description: Reason Code associated with the Failure
          enum:
            - PAYMENT_METHOD_MISSING
            - PAYMENT_GATEWAY_FAILURE
          example: PAYMENT_METHOD_MISSING
    FareAmount:
      type: object
      title: FareAmount
      description: Fare amount including base fare and tax.
      required:
        - base
        - tax
      properties:
        base:
          description: Base fare amount.
          $ref: '#/components/schemas/Money'
        tax:
          description: Tax amount.
          $ref: '#/components/schemas/Money'
        taxBreakdown:
          description: Breakdown of tax amounts.
          $ref: '#/components/schemas/TaxBreakdown'
    FareCategory:
      type: object
      properties:
        ngsCategory:
          $ref: '#/components/schemas/NGSFareCategory'
        cabinViewCategory:
          $ref: '#/components/schemas/CabinViewFareCategory'
    FareCategoryFilterConfig:
      type: object
      title: FareCategoryFilterConfig
      description: Air fare category filter
      required:
        - priority
        - origin
        - destination
        - fareCategoryOption
      properties:
        priority:
          type: integer
          description: priority of this filter in case multiple filters are applicable
          example: 1
        origin:
          description: origin for which this filter will be valid (* for all origins)
          $ref: '#/components/schemas/LocationItem'
        destination:
          description: >-
            destination for which this filter will be valid (* for all
            destinations)
          $ref: '#/components/schemas/LocationItem'
        fareCategoryOption:
          type: array
          items:
            $ref: '#/components/schemas/FareCategoryOptionConfig'
    FareCategoryOptionConfig:
      type: object
      title: FareCategoryOptionConfig
      description: Fare category option to disable
      required:
        - fareCategory
        - disabled
      properties:
        fareCategory:
          $ref: '#/components/schemas/FareCategory'
        disabled:
          type: boolean
          description: true if a fare category is disabled
          example: true
    FeatureConfig:
      type: object
      title: FeatureConfig
      description: Feature enabled for company.
      required:
        - name
        - enabled
      properties:
        name:
          $ref: '#/components/schemas/FeatureNameEnum'
        enabled:
          type: boolean
          description: Whether feature is enabled or not.
          deprecated: true
          x-sunset: '2026-07-01'
          default: true
          example: true
        valueType:
          type: string
          description: Value Type of Feature.
          enum:
            - INT
            - DOUBLE
            - BOOL
            - STRING
            - JSON
          example: BOOL
        value:
          type: string
          description: Value associated with Feature.
    FeatureConfigs:
      type: object
      title: Features
      description: Features related to company.
      properties:
        length:
          type: integer
          description: Number of features.
          example: 1
        features:
          type: array
          description: Features related to company.
          items:
            $ref: '#/components/schemas/FeatureConfig'
    FeatureNameEnum:
      type: string
      description: Name of the feature.
      enum:
        - FLIGHT_RESULTS_OOP
        - HOTEL_RESULTS_OOP
        - RAIL_RESULTS_OOP
        - CARS_RESULTS_OOP
        - PAYMENT_ADD_CARD
        - MENU_ITEM_POLICIES
        - INTEGRATION_EXPENSIFY
        - TRAVELER_SELECTION
        - FEATURE_PERSONAL_TRAVEL
        - PRODUCT_OBT_RAIL
        - MENU_ITEM_COMPANY_REMARKS
        - HOMEPAGE_ADD_USER
        - MENU_ITEM_CUSTOM_FIELDS
        - PAYMENT_UNUSED_CREDITS
        - EMAIL_UPDATE_BY_COMPANY_ADMIN
        - ADHOC_BOOKING_SEARCH_PAGE
        - ADHOC_BOOKING_SAVE_TRAVELER
        - ADMIN_VIRTUAL_CARD
        - CENTRAL_CARD_SERVICE_FEE
        - EXPEDIA_SOURCE_ENABLED
        - BOOKING_COM_SOURCE_ENABLED
        - HOTEL_MEDIAN_ENABLE
        - HIDE_SEARCH_CRITERIA
        - ADHOC_PAYMENT_SOURCE
        - SERVICE_CHARGE_CONFIG_DISABLED
        - HIDE_SETTINGS_MENU_ITEM_COMPANY
        - HIDE_SETTINGS_MENU_ITEM_USERS
        - HIDE_POLICY_APPROVAL_SECTION
        - HIDE_POLICY_CREATION
        - HIDE_SETTINGS_TEXT_FROM_MENU
        - HIDE_LEFT_NAV
        - HIDE_POLICY_AIR_CARRIER
        - HIDE_POLICY_AIR_CO2
        - HIDE_POLICY_HOTEL_PRICE_LOCATION_CUSTOMISATION
        - HIDE_PROFILE_PREFERENCES_AIRLINES
        - HIDE_PROFILE_PREFERENCES_ALLIANCES
        - MONEY_SET_CONVERTED_CURRENCY_AS_ORIGINAL_CURRENCY
        - PRODUCT_OBT_AIR_DISABLED
        - PRODUCT_OBT_HOTEL_DISABLED
        - PRODUCT_OBT_CAR_DISABLED
        - PRODUCT_OBT_LIMO_DISABLED
        - PRODUCT_OBT_CONCIERGE_DISABLED
        - EVENT_BOOKING_ENABLED
        - EMPLOYEE_LEVEL_DESIGNATED_APPROVER_ENABLED
        - ENRICH_SEARCH_RESPONSE_WITH_REWARD_POINTS
        - HIDE_LEFT_NAV_EMBED
        - HIDE_POLICY_AIR_NOT_ALLOWED_TO_BE_BOOKED
        - HIDE_TRIP_FEE_CONFIG
        - HIDE_AGENT_FEE_CONFIG
        - SHOW_SERVICE_FEE_TAXES
        - HIDE_GUEST_BOOKING_SETTING
        - USER_CREATION_PERSONA_TYPE_OPTIONS
        - AIR_SEARCH_RESULT_AIRLINE_SORT_ORDER
        - HIDE_SHERPA_VISA_WIDGET
        - AUTO_DEACTIVATE_GUEST
        - POLICY_USER_GROUPS
        - HIDE_SUPPLIER_MANAGEMENT
        - HIDE_BOOKING_RESTRICTIONS_BY_COUNTRY
        - LINKED_MARRIOTT_BONVOY_REQUIRED
        - EDITING_DEFAULT_POLICIES_DISABLED
        - DISALLOW_MULTI_CITY_ADD_FLIGHT
        - REQUIRE_ONBOARDING_ON_ENROLLMENT
        - GEO_CUSTOMIZATIONS
        - HIDE_PREFERRED_PARENT_CHAINS
        - HIDE_PREFERRED_HOTEL_BRANDS
        - HIDE_ROOM_OPTIONS_AND_STAY_PREFERENCES
        - HIDE_CONDITIONAL_RATES_PREFERENCES
        - HIDE_HOTELS_IN_SUPPLIER_MANAGEMENT
        - HIDE_HOTEL_BRANDS_IN_SUPPLIER_MANAGEMENT
        - HIDE_POLICY_HOTEL_STAR_RATING
        - PRODUCT_OBT_HOMEPAGE_ORDER
        - HIDE_COMPANY_SUPPLIER_MENU
        - EXTERNAL_EVENT_BOOKING_URL
        - HIDE_IDLE_SESSION_TIMEOUT
        - LE_CUSTOM_COLUMNS_CONFIG
        - PROFILE_ELEMENTS_VISIBILITY
        - SHOW_TRIP_FEE_CONFIG
        - SHOW_AGENT_FEE_CONFIG
        - DEFAULT_HOTEL_SEARCH_RADIUS_CONFIG
        - ENROLLMENT_DASHBOARD
        - PRIVACY_CONFIG_HIERARCHY
        - POLICY_CONFIGURED_IN_HR_FEED
        - COMPANION_VIEW_CONFIG
        - SHOW_INDIAN_CARD_PAYMENT_GUIDELINES
        - VISA_RESTRICTIONS_CONFIG
        - ALLOW_COMPANY_ADMIN_TO_RAISE_SUPPORT_TICKET
        - ENABLE_COMPANY_PREFERRED_HOTEL_FILTER_BY_DEFAULT
        - ENABLE_COMPANY_PREFERRED_CAR_FILTER_BY_DEFAULT
        - LOGIN_DISABLED
        - SHOW_AGENT_FEE_RULE_BASED_CONFIG
        - ENROLLMENT_EMAILS_BCC
        - SUREWARE_SYNC
        - DEFAULT_TMC_VIEW_MODE
        - SUPPORTED_CONTRACTING_TMCS
        - HRIS_ERROR_REPORT_RECIPIENTS
        - ENABLE_SOLD_OUT_HOTEL_FILTER_BY_DEFAULT
        - ENABLE_SHOW_NOT_ALLOWED_HOTEL_FILTER_BY_DEFAULT
        - ORG_LEVEL_PROFILE_FIELD_CONTROLS
        - ENABLE_CAR_SHOW_CORPORATE_RATES_ONLY_BY_DEFAULT
        - BLOCK_PAID_ANCILLARY_ON_CASH_FOP
        - POLICY_CUSTOMIZE_CABIN_BY_MILEAGE
        - ALLOW_YOUTH_ONLY_BOOKINGS
        - ALLOW_UNAUTHORIZED_CARD_STORAGE
        - AIR_DEFAULT_SORT_ORDER_DISABLED
        - PRIORITIZE_PERSONAL_PAYMENT_FOR_CONTINGENT_WORKERS
        - CUSTOM_FOP_MESSAGING
        - ENABLE_TRAVEL_NAME
        - DEFAULT_HOTEL_PAYMENT_FILTER
        - DEFAULT_HOTEL_CANCELLATION_FILTER
        - SHOW_OOP_PERSONAL_UPGRADE_TAG
        - USE_DEDICATED_TMC_MARRIOTT_BONVOY_CREDENTIALS
        - USE_HYATT_PARTNER_LOYALTY_VALIDATION
        - RESTRICTED_EMAIL_DOMAINS
        - UNUSED_CREDIT_DISABLED
        - SABRE_USE_FARE_PAX_TYPE_DISABLED
        - PROVISION_TENANT_ENCRYPTION
        - RH_LANGUAGE_HEADER_ENABLED
        - DISABLE_MULTI_BYTE_EMAIL_CHARS
        - ENABLE_CORP_HYATT_LEVERAGE
        - ENABLE_CORP_MARRIOTT_BAMB
        - SEED_WOH_EARNING_HOLDER
        - HOTEL_RATE_PLAN_CODE_CONFIG
        - SABRE_SUPPRESS_INVOICE_DISABLED
        - SABRE_ADD_FOP_IN_PQ_DISABLED
        - CORP_FARE_FLEXIBILITY_AIR_POLICY_RULE
      x-ignoreBreakingChanges:
        - FeatureNameEnum->LOGIN_DISABLED
        - FeatureNameEnum->SHOW_AGENT_FEE_RULE_BASED_CONFIG
        - FeatureNameEnum->ALLOW_UNAUTHORIZED_CARD_STORAGE
        - FeatureNameEnum->PRIORITIZE_PERSONAL_PAYMENT_FOR_CONTINGENT_WORKERS
        - FeatureNameEnum->CUSTOM_FOP_MESSAGING
        - FeatureNameEnum->ENABLE_SHOW_NOT_ALLOWED_HOTEL_FILTER_BY_DEFAULT
        - FeatureNameEnum->USE_DEDICATED_TMC_MARRIOTT_BONVOY_CREDENTIALS
      x-enumValidFrom:
        ORG_LEVEL_PROFILE_FIELD_CONTROLS: '2025-09-09'
        BLOCK_PAID_ANCILLARY_ON_CASH_FOP: '2025-10-28'
        POLICY_CUSTOMIZE_CABIN_BY_MILEAGE: '2025-10-28'
      example: ADMIN_VIRTUAL_CARD
    FeeInfo:
      type: object
      title: FeeInfo
      discriminator:
        propertyName: feeType
        mapping:
          BOOKING_FEE: '#/components/schemas/BookingFeeInfo'
          AGENT_FEE: '#/components/schemas/AgentFeeInfo'
      oneOf:
        - $ref: '#/components/schemas/BookingFeeInfo'
        - $ref: '#/components/schemas/AgentFeeInfo'
      x-oneOfValidFrom:
        AgentFeeInfo: '2025-08-20'
    FixedChargeConfig:
      type: object
      title: FixedChargeConfig
      description: Fixed charge configuration for service charge
      required:
        - charges
      properties:
        charges:
          type: array
          description: Amount in specified currency
          items:
            $ref: '#/components/schemas/Money'
        defaultCurrencyCode:
          type: string
          description: The 3-letter currency code defined in ISO 4217.
          example: GBP
        tierCharges:
          type: array
          description: Charges specified per traveler tier
          items:
            $ref: '#/components/schemas/TierChargeConfig'
    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'
    FormOfPayment:
      title: Form of Payment
      description: Information about form of payment to be used to charge customer
      type: object
      required:
        - type
      properties:
        type:
          type: string
          enum:
            - UNKNOWN
            - CARD
            - CASH
            - TFPAY
            - CHEQUE
            - BREX_POINTS
            - QANTAS_POINTS
          title: PaymentType
          description: Type of payment used
          example: CARD
          deprecated: true
          x-sunset: '2026-07-01'
        card:
          description: >-
            The payment card to be used to charge customer. This is only set if
            the payment type is 'CARD'
          $ref: '#/components/schemas/Card'
        additionalInfo:
          type: string
          description: Additional info to be added if payment type is 'UNKNOWN'.
        accessType:
          $ref: '#/components/schemas/CreditCardAccess'
        paymentMethod:
          $ref: '#/components/schemas/PaymentMethod'
          description: Payment method used to pay for this transaction
        paymentMetadata:
          $ref: '#/components/schemas/PaymentMetadata'
        paymentSourceType:
          $ref: '#/components/schemas/PaymentSourceType'
    FreshdeskConfig:
      type: object
      title: FreshdeskConfig
      description: Configuration for freshdesk.
      required:
        - enabled
        - hasCredentials
      properties:
        enabled:
          type: boolean
          description: Whether freshdesk is enabled or not.
          default: true
          example: true
        hasCredentials:
          type: boolean
          description: Whether the company has its own freshdesk credentials.
          default: false
          example: false
        credentials:
          description: >
            Credentials for the fresh desk. This field has no impact in
            create/update APIs. The 

            process to store / update the credentials are manual.
          $ref: '#/components/schemas/FreshdeskCredentials'
    FreshdeskCredentialDetails:
      type: object
      title: FreshdeskCredentialDetails
      description: Credentials related to freshdesk.
      required:
        - domain
        - appId
        - appKey
      properties:
        domain:
          type: string
          description: Domain related to fresh desk.
        appId:
          type: string
          description: An identifier for fresh desk's app.
        appKey:
          type: string
          description: A secret key assigned to user's app by fresh desk.
    FreshdeskCredentials:
      type: object
      title: FreshdeskCredentials
      description: Mobile and web Credentials related to freshdesk.
      properties:
        webCredentials:
          $ref: '#/components/schemas/FreshdeskCredentialDetails'
        mobileCredentials:
          $ref: '#/components/schemas/FreshdeskCredentialDetails'
    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
    GatewayInfo:
      type: object
      title: GatewayInfo
      description: Payment gateway information
      oneOf:
        - $ref: '#/components/schemas/StripeInfoWrapper'
    GetCompanyPerTripSrvChargeResponse:
      type: object
      title: GetCompanyPerTripSrvChargeResponse
      description: Get per trip service charge configuration for company
      properties:
        config:
          $ref: '#/components/schemas/FixedChargeConfig'
        enabled:
          type: boolean
          description: True if per trip service charge configuration is enabled
          example: true
        enableDisableOpSupported:
          type: boolean
          description: >-
            True if per trip service charge configuration can be
            enabled/disabled
          example: true
    GradeInfo:
      type: object
      title: GradeInfo
      description: Grade information with UUID and name.
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
          example: 831ccbcb-1416-7fe2-e236-d324dfbe7424
        name:
          type: string
          example: Senior Engineer
    GradeV2:
      type: object
      title: GradeV2
      description: Grade details.
      required:
        - id
        - name
      properties:
        id:
          type: string
          format: uuid
          example: 831ccbcb-1416-7fe2-e236-d324dfbe7424
        name:
          type: string
          description: Name of the grade
          example: Grade
    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
    ItineraryConfig:
      title: ItineraryConfig
      type: object
      description: Itinerary configuration to control what expenses to send to the partner
      properties:
        skipModificationUpdate:
          type: boolean
          description: >-
            Allow modification expenses to be skipped from sending to the
            partner
          example: true
          default: false
        skipCancellationUpdate:
          type: boolean
          description: >-
            Allow cancellation expenses to be skipped from sending to the
            partner
          example: true
          default: false
    JwkPublicKey:
      type: object
      description: >-
        RSA public key in JWK format (RFC 7517). Only RSA signature keys are
        supported.
      required:
        - kty
        - use
        - alg
        - kid
        - 'n'
        - e
      properties:
        kty:
          type: string
          enum:
            - RSA
          description: Key type. Only RSA is supported.
        use:
          type: string
          enum:
            - sig
          description: Key use. Must be sig (signature).
        alg:
          type: string
          enum:
            - RS256
          description: Signing algorithm. Must be RS256.
        kid:
          type: string
          description: Key ID — used to match the JWT header kid during token exchange.
        'n':
          type: string
          description: RSA modulus (base64url-encoded).
        e:
          type: string
          description: RSA public exponent (base64url-encoded).
    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
    LegalEntity:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier of the legal entity.
        name:
          type: string
          description: Name of the legal entity
        registeredName:
          type: string
          description: >
            The official name of this legal entity as registered with local tax
            authorities.
        registeredEmail:
          type: string
          description: >
            The primary email (or alias) used for the "Registered name" of this
            legal entity. 

            Used for official communications, including regulatory, compliance,
            and invoicing 

            purposes.
        address:
          $ref: '#/components/schemas/PostalAddress'
          description: Address of the legal entity.
        billingAddress:
          $ref: '#/components/schemas/PostalAddress'
          description: >
            Optional dedicated billing address. Present only when billing does
            not use the physical

            `address`. When omitted, billing uses the current physical address;
            the physical value

            is not copied into this property.
        billingCurrency:
          type: string
          description: Billing currency for the legal entity.
        dba:
          type: string
          description: Business name, sort form of Doing Business As
        ein:
          type: string
          description: Tax number
        phoneNumbers:
          type: array
          items:
            $ref: '#/components/schemas/PhoneNumber'
        isDelayedInvoicingEnabled:
          type: boolean
          description: >
            Whether delayed invoicing is enabled for the legal entity. If
            enabled, travelers of the

            legal entity won't be charged for trip on checkout, rather the bills
            would be sent to

            the company later on based on the billing cycle.
        bookingTmcRef:
          $ref: '#/components/schemas/Reference'
          description: Booking TMC of the legal entity.
        expensePartnerConfig:
          $ref: '#/components/schemas/ExpensePartnerConfig'
          description: Configured details of expense partner.
        ccEmailAddresses:
          type: array
          description: >-
            List of email addresses on which all confirmation emails will be
            CCed. This is applicable only for company roles 'ORG'
          items:
            type: string
            example: example@gmail.com
        bccEmailAddresses:
          type: array
          description: >-
            List of email addresses on which all confirmation emails will be
            BCCed. This is applicable only for company roles 'ORG'
          items:
            type: string
            example: example@gmail.com
        externalId:
          description: External id for the legal entity.
          type: string
          example: my-external-id
        companySpecifiedAttributes:
          type: array
          items:
            $ref: '#/components/schemas/CompanySpecifiedAttributeLegalEntity'
          description: Company specified attributes or fields for the legal entity.
    LegalEntityCreateRequest:
      type: object
      required:
        - name
        - billingCurrency
        - address
      properties:
        name:
          type: string
          description: Name of the legal entity
        registeredName:
          type: string
          description: >
            The official name of this legal entity as registered with local tax
            authorities.
        registeredEmail:
          type: string
          description: >
            The primary email (or alias) used for the "Registered name" of this
            legal entity. 

            Used for official communications, including regulatory, compliance,
            and invoicing 

            purposes.
        address:
          $ref: '#/components/schemas/PostalAddress'
          description: Address of the legal entity.
        billingAddress:
          $ref: '#/components/schemas/PostalAddress'
          description: >
            Optional dedicated billing address. A present valid value stores the
            dedicated address.

            Omitting this property or setting it to null stores no dedicated
            address, so billing

            uses the current physical `address`.
        billingCurrency:
          type: string
          description: Billing currency for the legal entity.
        dba:
          type: string
          description: Business name, sort form of Doing Business As
        ein:
          type: string
          description: Tax number
        phoneNumbers:
          type: array
          items:
            $ref: '#/components/schemas/PhoneNumber'
        isDelayedInvoicingEnabled:
          type: boolean
          description: >
            Whether delayed invoicing is enabled for the legal entity. If
            enabled, travelers of the

            legal entity won't be charged for trip on checkout, rather the bills
            would be sent to

            the company later on based on the billing cycle.
        ccEmailAddresses:
          type: array
          description: >-
            List of email addresses on which all confirmation emails for this LE
            will be cc'ed. This is applicable only for company roles 'ORG'
          items:
            type: string
            example: example@gmail.com
        bccEmailAddresses:
          type: array
          description: >-
            List of email addresses on which all confirmation emails for this LE
            will be bcc'ed. This is applicable only for company roles 'ORG'
          items:
            type: string
            example: example@gmail.com
        externalId:
          type: string
          description: External id for legal entity.
          example: legal-entity-external-id
        companySpecifiedAttributes:
          type: array
          items:
            $ref: '#/components/schemas/CompanySpecifiedAttributeLegalEntity'
          description: Company specified attributes or fields for the legal entity.
    LegalEntityId:
      type: object
      title: LegalEntityId
      description: The ID of the legal entity.
      required:
        - id
      properties:
        id:
          type: string
          example: fc1ccbce-8413-4fe9-b233-a324dfbe7421
    LegalEntityUpdateRequest:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier of the legal entity.
        name:
          type: string
          description: Name of the legal entity
        registeredName:
          type: string
          description: >
            The official name of this legal entity as registered with local tax
            authorities.
        registeredEmail:
          type: string
          description: >
            The primary email (or alias) used for the "Registered name" of this
            legal entity. 

            Used for official communications, including regulatory, compliance,
            and invoicing 

            purposes.
        address:
          $ref: '#/components/schemas/PostalAddress'
          description: Address of the legal entity.
        billingAddress:
          $ref: '#/components/schemas/PostalAddress'
          description: >
            Optional dedicated billing address. A present valid value sets or
            replaces the

            dedicated address. Omitting this property or setting it to null
            clears the dedicated

            address, so billing uses the current physical `address`.
        billingCurrency:
          type: string
          description: Billing currency for the legal entity.
        dba:
          type: string
          description: Business name, sort form of Doing Business As
        ein:
          type: string
          description: Tax number
        phoneNumbers:
          type: array
          items:
            $ref: '#/components/schemas/PhoneNumber'
        isDelayedInvoicingEnabled:
          type: boolean
          description: >
            Whether delayed invoicing is enabled for the legal entity. If
            enabled, travelers of the

            legal entity won't be charged for trip on checkout, rather the bills
            would be sent to

            the company later on based on the billing cycle.
        bookingTmcRef:
          $ref: '#/components/schemas/Reference'
          description: Booking TMC of the legal entity.
        expensePartnerConfig:
          $ref: '#/components/schemas/ExpensePartnerConfig'
          description: Configured details of expense partner.
        ccEmailAddresses:
          type: array
          description: >-
            List of email addresses on which all confirmation emails will be
            CCed. This is applicable only for company roles 'ORG'
          items:
            type: string
            example: example@gmail.com
        bccEmailAddresses:
          type: array
          description: >-
            List of email addresses on which all confirmation emails will be
            BCCed. This is applicable only for company roles 'ORG'
          items:
            type: string
            example: example@gmail.com
        externalId:
          description: External id for the legal entity.
          type: string
          example: my-external-id
        companySpecifiedAttributes:
          type: array
          items:
            $ref: '#/components/schemas/CompanySpecifiedAttributeLegalEntity'
          description: Company specified attributes or fields for the legal entity.
    ListCostCentersFilter:
      type: object
      title: ListCostCentersFilter
      description: Filter parameters for cost centers.
      properties:
        externalIds:
          type: array
          items:
            type: string
            example: external-id
          description: List of external ids.
        costCenterIds:
          type: array
          items:
            type: string
            format: uuid
            example: 731ccbca-0415-6fe1-d235-c324dfbe7423
          description: List of cost center ids.
    ListCostCentersRequest:
      type: object
      description: Request body for list cost centers API.
      required:
        - paginationParams
      properties:
        searchText:
          type: string
          description: Search string entered by the user
          example: Credit
        paginationParams:
          description: Pagination information.
          $ref: '#/components/schemas/OffsetBasedPaginationRequestParams'
        filters:
          type: array
          description: >-
            List of filters. Cost centers matching with any filter would be
            returned.
          items:
            $ref: '#/components/schemas/ListCostCentersFilter'
    ListCostCentersResponse:
      type: object
      description: Response for list cost centers API.
      required:
        - paginationParams
      properties:
        paginationParams:
          description: Pagination information.
          $ref: '#/components/schemas/OffsetBasedPaginationResponseParams'
        costCenters:
          type: array
          description: List of cost centers containing id and name.
          items:
            $ref: '#/components/schemas/CostCenterInfo'
    ListDepartmentsFilter:
      type: object
      title: ListDepartmentsFilter
      description: Filter parameters for list departments.
      properties:
        externalIds:
          type: array
          items:
            type: string
            example: department-external-id
          description: List of external ids.
        departmentIds:
          type: array
          items:
            type: string
            format: uuid
            example: 731ccbca-0415-6fe1-d235-c324dfbe7423
          description: List of department ids.
    ListDepartmentsRequest:
      type: object
      title: ListDepartmentsRequest
      required:
        - paginationParams
      description: List departments request
      properties:
        searchText:
          type: string
          description: Search string entered by the user
          example: Engineering
        paginationParams:
          description: Pagination information.
          $ref: '#/components/schemas/OffsetBasedPaginationRequestParams'
        filters:
          type: array
          description: >-
            List of filters. Departments matching with any filter would be
            returned.
          items:
            $ref: '#/components/schemas/ListDepartmentsFilter'
    ListDepartmentsResponse:
      type: object
      description: Response for list departments API.
      required:
        - paginationParams
      properties:
        paginationParams:
          description: Pagination information.
          $ref: '#/components/schemas/OffsetBasedPaginationResponseParams'
        departments:
          type: array
          description: List of departments containing id and name.
          items:
            $ref: '#/components/schemas/DepartmentInfo'
    ListGradesFilter:
      type: object
      title: ListGradesFilter
      description: Filter parameters for list grades.
      properties:
        gradeIds:
          type: array
          items:
            type: string
            format: uuid
            example: 831ccbcb-1416-7fe2-e236-d324dfbe7424
          description: List of grade ids.
    ListGradesRequest:
      type: object
      title: ListGradesRequest
      required:
        - paginationParams
      description: List grades request
      properties:
        searchText:
          type: string
          description: Search string entered by the user
          example: Senior Engineer
        paginationParams:
          description: Pagination information.
          $ref: '#/components/schemas/OffsetBasedPaginationRequestParams'
        filters:
          type: array
          description: List of filters. Grades matching with any filter would be returned.
          items:
            $ref: '#/components/schemas/ListGradesFilter'
    ListGradesResponse:
      type: object
      title: ListGradesResponse
      description: Response for list grades API.
      required:
        - paginationParams
      properties:
        paginationParams:
          description: Pagination information.
          $ref: '#/components/schemas/OffsetBasedPaginationResponseParams'
        grades:
          type: array
          description: List of grades containing id and name.
          items:
            $ref: '#/components/schemas/GradeInfo'
    ListOfficeFilter:
      type: object
      title: ListOfficeFilter
      description: Filter parameters for list office API.
      properties:
        countries:
          type: array
          items:
            type: string
          description: List of country codes to filter on.
          example:
            - US
            - IN
        officeIds:
          type: array
          items:
            type: string
            format: uuid
          description: List of office ids.
        externalIds:
          type: array
          items:
            type: string
          description: List of external ids.
        legalEntityIds:
          type: array
          items:
            type: string
            format: uuid
          description: List of legal entity ids.
    ListOfficesV2Request:
      type: object
      title: ListOfficesV2Request
      description: >-
        List offices request with query, filters, pagination and sort
        parameters.
      required:
        - paginationParams
      properties:
        searchText:
          type: string
          description: Search text
        paginationParams:
          description: Pagination information.
          $ref: '#/components/schemas/OffsetBasedPaginationRequestParams'
        sortParams:
          description: Sorting related parameters.
          $ref: '#/components/schemas/OfficeSortParams'
        filters:
          type: array
          description: >-
            List of filters. Offices matching with any of filters would be
            returned.
          items:
            $ref: '#/components/schemas/ListOfficeFilter'
    ListOfficesV2Response:
      type: object
      title: ListOfficesV2Response
      description: Paginated response for office list
      required:
        - offices
        - paginationParams
      properties:
        offices:
          type: array
          description: List of Offices.
          items:
            $ref: '#/components/schemas/OfficeNode'
        paginationParams:
          $ref: '#/components/schemas/OffsetBasedPaginationResponseParams'
    ListPartnerPublicKeysResponse:
      type: object
      title: ListPartnerPublicKeysResponse
      description: Response containing the list of partner public keys for a TMC.
      properties:
        keys:
          type: array
          description: List of partner public keys.
          items:
            $ref: '#/components/schemas/PartnerPublicKeyInfo'
    ListPreferenceTiersResponse:
      type: object
      title: ListPreferenceTiers
      description: List of preference tiers
      required:
        - preferenceTiersPerBookingType
      properties:
        preferenceTiersPerBookingType:
          type: array
          description: >-
            List of preference tiers with respective labels for different
            booking types.
          items:
            $ref: '#/components/schemas/PreferenceTiersPerBookingType'
    ListServiceChargesRequest:
      type: object
      title: ListServiceChargesRequest
      description: Request for list service charges.
      properties:
        serviceType:
          $ref: '#/components/schemas/ServiceType'
          description: Type of service charge (Optional).
    ListServiceChargesResponse:
      type: object
      title: ListServiceChargesResponse
      description: Response for list service charges.
      properties:
        serviceCharges:
          type: array
          description: List of service charges.
          items:
            $ref: '#/components/schemas/ServiceChargeRecord'
    LocationItem:
      type: object
      title: LocationItem
      description: Object representing a single location object.
      required:
        - value
        - metadata
        - infos
      properties:
        value:
          type: string
          description: User facing display value.
        metadata:
          description: Metadata such as country code of the @value.
          $ref: '#/components/schemas/LocationMetadata'
        infos:
          type: array
          description: |
            This represent other information for the @value.
            E.g. - This will have continent details if value is any country,
            similarly country details for city.
          items:
            $ref: '#/components/schemas/LocationItem'
    LocationMetadata:
      type: object
      title: LocationMetadata
      description: Metadata of the location object.
      required:
        - type
        - code
      properties:
        type:
          description: Type of the object.
          $ref: '#/components/schemas/LocationType'
        code:
          type: string
          description: Unique code to represent the object.
    LocationType:
      description: Type of the location object.
      type: string
      title: LocationType
      enum:
        - CONTINENT
        - COUNTRY
        - CITY
        - AIRPORT
        - ADMINISTRATIVE_DIVISION
      example: CITY
    LoginActionType:
      type: string
      description: Type of login action.
      enum:
        - PRIVACY_CONSENT_ACTION
        - ONBOARDING_ACTION
        - HYATT_LOYALTY_VALIDATION
    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'
    NGSFareCategory:
      type: string
      enum:
        - UNKNOWN_NGS_CATEGORY
        - BASE
        - STANDARD
        - ENHANCED
        - PREMIUM
        - LUXURY
        - ULTRA_LUXURY
      default: UNKNOWN_NGS_CATEGORY
    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
    NoPrepaymentMetadata:
      type: object
      title: NoPrepaymentMetadata
      required:
        - label
      description: >-
        Metadata for No Prepayment payment source (car bookings on no-guarantee
        rates).
      properties:
        label:
          type: string
          example: No Prepayment
          description: Label for No Prepayment payment source.
    NonBillableReason:
      type: object
      title: NonBillableReason
      description: Reason for non-billable agent contact.
      required:
        - reasonCode
      properties:
        reasonCode:
          $ref: '#/components/schemas/NonBillableReasonCode'
          description: Reason code for non-billable agent contact.
          example: MINOR_REQUEST
        notes:
          type: string
          description: Notes for non-billable agent contact.
          example: Waived off
    NonBillableReasonCode:
      type: string
      title: NonBillableReasonCode
      description: Reason code for non-billable agent contact.
      enum:
        - PRODUCT_ISSUE
        - ALREADY_CHARGED
        - CUSTOMER_GOODWILL
        - MINOR_REQUEST
        - NON_BILLABLE_REASON_OTHER
    OAuthPartnerConfig:
      type: object
      title: OAuthConfig
      description: Config for token exchange in case of partner's have their own IDP.
      required:
        - name
        - tokenVerifier
        - doPersistToken
      properties:
        name:
          type: string
          description: Name of the partner.
        userDetailEndpoint:
          $ref: '#/components/schemas/ExternalEndpoint'
        tokenVerifier:
          $ref: '#/components/schemas/TokenVerifier'
        doPersistToken:
          type: boolean
          description: Boolean to define whether to persist(in-memory/disk) token or not.
    OfficeNode:
      type: object
      title: OfficeNode
      description: Info for an office
      required:
        - legalEntityRef
        - office
      properties:
        legalEntityRef:
          $ref: '#/components/schemas/Reference'
        office:
          $ref: '#/components/schemas/OfficeV2'
    OfficeSortBy:
      type: string
      title: OfficeSortBy
      description: The field name to sort on.
      enum:
        - NAME
        - LEGAL_ENTITY_NAME
        - COUNTRY_CODE
        - TAX_ID
    OfficeSortParams:
      type: object
      title: OfficeSortParams
      description: Sorting related parameters to return sorted list of offices.
      required:
        - sortBy
        - sortOrder
      properties:
        sortBy:
          $ref: '#/components/schemas/OfficeSortBy'
        sortOrder:
          $ref: '#/components/schemas/SortOrder'
    OfficeV2:
      type: object
      title: Office
      description: Office details.
      properties:
        address:
          $ref: '#/components/schemas/PostalAddress'
        id:
          type: string
          format: uuid
        name:
          type: string
          example: Office
        latlng:
          $ref: '#/components/schemas/Latlng'
        externalId:
          type: string
          example: external-id
        taxId:
          type: string
          example: '123232'
    OffsetBasedPaginationRequestParams:
      type: object
      title: OffsetBasedPaginationRequestParams
      description: Pagination parameters for requests.
      properties:
        offset:
          type: integer
          format: int32
          description: >-
            The starting index in the list from which results are returned. The
            value must be greater than or equal to 0.
          default: 0
          minimum: 0
        limit:
          type: integer
          format: int32
          description: Maximum number of results to be fetched.
          minimum: 1
          default: 100
    OffsetBasedPaginationResponseParams:
      type: object
      title: PaginationResponseParams
      description: Pagination parameters for response.
      required:
        - totalNumResults
      properties:
        totalNumResults:
          type: integer
          format: int32
          description: Total number of results.
    OktaJwtVerifier:
      type: object
      title: OktaJwtVerifier
      description: >
        Details of Okta JWT verifier such as okta oauth endpoint, audience for
        which the token is 

        issued.
      required:
        - oauthUrl
        - audience
      properties:
        oauthUrl:
          type: string
          description: Okta oauth url.
        audience:
          type: string
          description: Audience for which the token is issued.
    OktaJwtVerifierWrapper:
      type: object
      title: OktaJwtVerifierWrapper
      properties:
        oktaJwtVerifier:
          $ref: '#/components/schemas/OktaJwtVerifier'
    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
    OtherFeeInfo:
      type: object
      title: OtherFeeInfo
      description: Other Fee Info
      required:
        - bookingFeeType
        - otherFeeType
      properties:
        bookingFeeType:
          type: string
          description: Type of the booking fee
          example: OTHER_FEE
        calculatedAmount:
          $ref: '#/components/schemas/Money'
        chargeProcessorInfo:
          $ref: '#/components/schemas/ChargeProcessorInfo'
        otherFeeType:
          $ref: '#/components/schemas/OtherFeeType'
        feeName:
          type: string
          description: Name of the fee to be charged.
          example: TMC Standard Fee
    OtherFeeType:
      type: string
      title: OtherFeeType
      description: Other fee type
      enum:
        - MERCHANT_FEE
      example: MERCHANT_FEE
    OwnershipLabel:
      title: OwnershipLabel
      type: string
      description: >-
        Ownership label of the card whether it is personal, corporate or
        central.
      enum:
        - CORPORATE
        - PERSONAL
        - CENTRAL
    PartnerJwks:
      type: object
      description: A JSON Web Key Set (JWKS) per RFC 7517.
      required:
        - keys
      properties:
        keys:
          type: array
          items:
            $ref: '#/components/schemas/JwkPublicKey'
          description: List of public keys. Exactly one key must be provided per request.
    PartnerPublicKeyInfo:
      type: object
      title: PartnerPublicKeyInfo
      description: A partner public key registered for token exchange authentication.
      properties:
        id:
          type: string
          format: uuid
          description: Unique identifier for the key.
        orgId:
          type: string
          format: uuid
          description: Organization this key is scoped to.
        kid:
          type: string
          description: Key ID extracted from the JWK.
        status:
          type: string
          description: Key status.
          enum:
            - ACTIVE
            - REVOKED
        createdAt:
          type: string
          format: date-time
          description: Timestamp when the key was created.
        thumbprint:
          type: string
          readOnly: true
          description: >
            RFC 7638 JWK thumbprint (base64url SHA-256 of canonical key
            material). Use this to verify the correct key was registered.
    PartnerPublicKeyType:
      type: string
      description: The type of public key being registered.
      enum:
        - JWKS
    PaymentMetadata:
      title: PaymentMetadata
      description: Payment metadata related to form of payment
      type: object
      properties:
        customPaymentMethodMetadata:
          type: object
          description: Metadata related to custom payment method
          properties:
            brexBudgetMetadata:
              type: object
              description: Metadata for Brex Budget
              properties:
                budgetName:
                  type: string
                  description: Name of the budget
                  example: Travel budget
                paidByPersonalCard:
                  type: boolean
                  description: Whether it was paid by budget card or personal card
                  example: false
            noPrepaymentMetadata:
              $ref: '#/components/schemas/NoPrepaymentMetadata'
        vendorProgramPaymentMetadata:
          $ref: '#/components/schemas/VendorProgramPaymentMetadata2'
        virtualCardMetadata:
          $ref: '#/components/schemas/VirtualCardPaymentMetadata'
        cardMetadata:
          $ref: '#/components/schemas/CardMetadata2'
    PaymentMethod:
      type: string
      description: Payment method
      enum:
        - PAYMENT_METHOD_UNKNOWN
        - CREDIT_CARD
        - BREX_POINTS
        - CASH
        - QANTAS_POINTS
        - VENDOR_PROGRAM_PAYMENT
        - DELAYED_INVOICING
        - FLIGHT_CREDITS
        - QANTAS_TRAVEL_FUND
        - 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
    PaymentStatus:
      type: string
      title: PaymentStatus
      description: Payment status.
      enum:
        - SUCCESS
        - DELAYED_INVOICE
        - MANUAL
        - NO_CHARGE
        - WAIVED_OFF
    PaymentTransaction:
      type: object
      title: PaymentTransaction
      description: Payment Transaction
      properties:
        gatewayIdentifier:
          description: Gateway Identifier
          $ref: '#/components/schemas/GatewayIdentifier'
        paymentReference:
          type: string
          description: payment reference
        networkTransactionId:
          type: string
          description: Network Transaction Id
        gatewayInfo:
          $ref: '#/components/schemas/GatewayInfo'
        failureReason:
          $ref: '#/components/schemas/FailureReason'
    PersonalCardConfig:
      title: PersonalCardConfig
      description: Configuration for bookings done with Personal card.
      type: object
      properties:
        sendToTraveler:
          type: boolean
          description: >-
            A boolean flag to show if expenses are to be sent to traveler's
            Expense partner account.
          example: false
        personalCardExpenseEmail:
          type: string
          description: The email for the expense partner account.
          example: user@company.com
    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
    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'
    PreferenceEntityType:
      type: string
      title: PreferenceEntityType
      description: Different type of entities at which one can store vendor preference.
      enum:
        - COMPANY
        - LEGAL_ENTITY
        - COUNTRY
    PreferenceTier:
      title: PreferenceTier
      description: The level of preference with the display label.
      required:
        - level
        - label
        - showLabel
      properties:
        level:
          $ref: '#/components/schemas/PreferenceTierLevel'
        label:
          type: string
          description: Text to be used to display given tier.
        description:
          type: string
          description: Short description about the tier level.
        showLabel:
          type: boolean
          description: Whether to show label in search result for the given tier.
          default: false
    PreferenceTierLevel:
      title: PreferenceTierLevel
      type: string
      description: Different levels of tier.
      enum:
        - TIER_1
        - TIER_2
        - TIER_3
        - TIER_4
        - TIER_5
        - TIER_6
    PreferenceTiersPerBookingType:
      type: object
      title: PreferenceTiersPerBookingType
      description: List of preference tiers with respective labels for given booking type.
      required:
        - allowedEntityTypes
        - preferenceTiers
        - bookingType
      properties:
        allowedEntityTypes:
          type: array
          description: Different entity types that are allowed for defining preference.
          minItems: 1
          items:
            $ref: '#/components/schemas/PreferenceEntityType'
        bookingType:
          $ref: '#/components/schemas/BookingType'
        preferenceTiers:
          type: array
          description: List of preference tiers with respective labels.
          items:
            $ref: '#/components/schemas/PreferenceTier'
    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.
    PrivacyDisclaimer:
      type: object
      title: PrivacyDisclaimer
      description: Html to shown on the the login page. This will be text with hyper links.
      properties:
        show:
          type: boolean
          default: true
        html:
          type: string
          description: String containing the html.
          example: </html>
    PrivacySettings:
      type: object
      title: PrivacySettings
      description: Privacy settings for a company.
      properties:
        allowCompanyAdminAccessToRelativesInfo:
          type: boolean
          description: >-
            Boolean to show if company admin can see information of users'
            relatives.
          example: true
    ProfileColors:
      type: array
      description: The list of colors relating to profile.
      items:
        $ref: '#/components/schemas/TitledColor'
    ProvisionOrRotateTenantKeyResponse:
      type: object
      title: ProvisionOrRotateTenantKeyResponse
      properties:
        configId:
          type: string
          format: uuid
          example: 4974a66b-7493-4f41-908c-58ba81093947
        created:
          type: boolean
          description: True on first provision; false on CMK rotation.
          example: true
    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
    RewardsProgram:
      type: object
      title: RewardsProgram
      description: Rewards program details.
      properties:
        allowedUserRoles:
          type: array
          description: Roles entitled to redeem company's reward points.
          items:
            $ref: '#/components/schemas/RoleType'
        conversionRate:
          type: object
          description: Conversion rate of points to specified currency.
          title: ConversionRate
          properties:
            currencyCode:
              type: string
              example: USD
              description: The 3-letter currency code defined in ISO 4217.
            rate:
              type: number
              format: double
              description: Conversion rate of points to specified currency.
        redeemablePaymentMethods:
          type: array
          description: Payment methods to redeem company's reward points.
          items:
            $ref: '#/components/schemas/PaymentMethod'
        backingCurrency:
          type: array
          description: The currencies backing up this rewards program.
          items:
            type: string
            example: USD
    RoleType:
      type: string
      enum:
        - UNKNOWN_TYPE
        - COMPANY_ADMIN
        - COMPANY_TRAVEL_ARRANGER
        - TRAVEL_ARRANGER
        - COMPANY_REPORT_ADMIN
        - GLOBAL_ADMIN
        - GLOBAL_AGENT
        - TMC_AGENT
        - TMC_ADMIN
      example: TRAVEL_ARRANGER
    RoutingConfig:
      type: object
      title: RoutingConfig
      description: App routing configuration.
      properties:
        appHomeRoute:
          type: string
          example: /my-account
    RuleBasedInfo:
      title: RuleBasedInfo
      type: object
      description: Rule based processor info
      required:
        - ruleName
        - chargeProcessorType
      properties:
        ruleName:
          type: string
          description: Rule name
          example: Rule1
        chargeProcessorType:
          type: string
          description: Charge processor type
          example: RULE_BASED_INFO
    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.
    ServiceCharge:
      type: object
      title: ServiceCharge
      description: Service charge.
      required:
        - amount
        - taxes
        - totalAmount
      properties:
        amount:
          $ref: '#/components/schemas/Money'
          description: Service charge amount.
        taxes:
          type: array
          description: Applicable taxes.
          items:
            $ref: '#/components/schemas/TaxAmount'
        totalAmount:
          $ref: '#/components/schemas/Money'
          description: Total amount (including taxes).
        allowedFoP:
          type: array
          deprecated: true
          x-sunset: '2026-07-01'
          description: List of allowed payment methods for this charge.
          items:
            $ref: '#/components/schemas/PaymentMethod'
        feeInfo:
          $ref: '#/components/schemas/FeeInfo'
        waiveOffInfo:
          $ref: '#/components/schemas/AppliedWaiveOffInfo'
    ServiceChargeEntity:
      type: object
      title: ServiceChargeEntity
      description: Entity for service charge.
      required:
        - entityType
        - entityId
      properties:
        entityType:
          $ref: '#/components/schemas/ServiceChargeEntityType'
          description: Entity type for service charge.
          example: TRIP
        entityId:
          type: string
          description: Entity ID for service charge e.g, trip ID for entityType=TRIP.
          example: '1234567890'
    ServiceChargeEntityType:
      type: string
      title: ServiceChargeEntityType
      description: Entity type for service charge.
      enum:
        - TRIP
        - USER
    ServiceChargeRecord:
      type: object
      title: ServiceChargeRecord
      description: Service charge record.
      required:
        - entity
        - serviceChargeType
        - serviceType
        - charge
        - transactionTime
        - paymentStatus
      properties:
        entity:
          $ref: '#/components/schemas/ServiceChargeEntity'
          description: Entity for service charge.
        tripId:
          type: string
          description: Trip ID (if applicable).
          example: '1234567890'
          deprecated: true
          x-sunset: '2026-07-01'
        serviceChargeType:
          $ref: '#/components/schemas/ServiceChargeType'
          description: Type of service charge.
          example: TMC_CHARGE
        serviceType:
          $ref: '#/components/schemas/ServiceType'
          description: Type of service.
          example: AGENT_CONTACT
        agentContact:
          $ref: '#/components/schemas/AgentContact'
          description: Agent contact details if serviceType is AGENT_CONTACT.
        chargeId:
          type: string
          description: Charge Id to uniquely identify service charge.
          example: e2c04834-92eb-4b62-9faa-eb73a70051d3
        charge:
          $ref: '#/components/schemas/ServiceCharge'
          description: Service charge.
        transactionTime:
          $ref: '#/components/schemas/DateTimeOffset'
          description: Transaction date and time.
        paymentStatus:
          $ref: '#/components/schemas/PaymentStatus'
          description: Payment status.
        userOrgId:
          $ref: '#/components/schemas/UserOrgId'
          description: User org details.
        legalEntityId:
          $ref: '#/components/schemas/LegalEntityId'
          description: The ID of the legal entity.
        bookingDetails:
          $ref: '#/components/schemas/BookingDetails'
          description: Booking details.
        fop:
          $ref: '#/components/schemas/FormOfPayment'
          description: Form of payment for the service charge.
        paymentTransaction:
          $ref: '#/components/schemas/PaymentTransaction'
          description: Payment transaction details.
        failureDetails:
          $ref: '#/components/schemas/FailureDetails'
          description: Failure details.
    ServiceChargeType:
      type: string
      title: ServiceChargeType
      description: >
        Type of service charge. TMC_CHARGE: Service charge for a service charged
        by the TMC.
      enum:
        - TMC_CHARGE
    ServiceFeeTransactionType:
      type: string
      title: ServiceFeeTransactionType
      description: Transaction type for service fee
      enum:
        - TRANSACTION_TYPE_BOOKING
        - TRANSACTION_TYPE_MODIFICATION
        - TRANSACTION_TYPE_CANCELLATION
        - TRANSACTION_TYPE_AGENT_CONTACT
      x-ignoreBreakingChanges:
        - ServiceFeeTransactionType->TRANSACTION_TYPE_AGENT_CONTACT
    ServiceType:
      type: string
      title: ServiceType
      description: >
        Type of service for service charge. ITINERARY_BOOKING: Service charge
        for travel booking. AGENT_CONTACT: Service charge for agent contact.
      enum:
        - ITINERARY_BOOKING
        - AGENT_CONTACT
    SetCompanyPerTripSrvChargeRequest:
      type: object
      title: SetCompanyPerTripSrvChargeRequest
      description: Set per trip service charge configuration for company
      required:
        - config
      properties:
        config:
          $ref: '#/components/schemas/FixedChargeConfig'
    SocialMediaLinksConfig:
      type: object
      title: SocialMediaLinksConfig
      description: Social media links.
      properties:
        facebookUrl:
          type: string
          example: https://www.facebook.com/spotnanaofficial
        twitterUrl:
          type: string
          example: https://twitter.com/spotnana
        instagramUrl:
          type: string
          example: https://www.instagram.com/spotnana_official
    SortOrder:
      type: string
      description: Sorting order.
      enum:
        - DESC
        - ASC
      example: DESC
      default: ASC
    StealthConfig:
      type: object
      title: StealthConfig
      description: Stealth configuration for a company.
      properties:
        stealthModes:
          type: array
          description: A list of stealth modes for this company.
          items:
            $ref: '#/components/schemas/StealthMode'
    StealthMode:
      type: object
      title: StealthMode
      description: Stealth mode configuration with type and label.
      required:
        - stealthType
        - label
      properties:
        stealthType:
          $ref: '#/components/schemas/StealthType'
        label:
          type: string
          description: Customer specific label for the stealth mode.
    StealthType:
      type: string
      description: Stealth type.
      enum:
        - STEALTH_TYPE_1
        - STEALTH_TYPE_2
        - STEALTH_TYPE_3
      example: STEALTH_TYPE_1
      x-ignoreBreakingChanges:
        - StealthType->STEALTH_TYPE_4
        - StealthType->STEALTH_TYPE_5
        - StealthType->STEALTH_TYPE_6
    StorePreferenceTiersRequest:
      type: object
      title: StorePreferenceTiersRequest
      description: Request object to store preference tiers.
      required:
        - preferenceTiersPerBookingType
      properties:
        preferenceTiersPerBookingType:
          type: array
          description: >-
            List of preference tiers with respective labels for different
            booking types.
          items:
            $ref: '#/components/schemas/PreferenceTiersPerBookingType'
    StripeInfo:
      title: StripeInfo
      type: object
      description: Stripe payment gateway information
      properties:
        accountId:
          type: string
          description: Stripe account id
          example: acct_1OAbc3AB5abcdDdA
        accountDisplayName:
          type: string
          description: Stripe account display name as seen on the stripe dashboard
          example: Abc Travel
        platformAccountGatewayId:
          type: string
          description: >-
            Gateway-id of platform account when this gateway is a connected
            account
          example: connect-platform:#
          readOnly: true
        address:
          description: Address for the given account
          $ref: '#/components/schemas/PostalAddress'
        taxId:
          type: string
          description: Tax id for account
          example: 89-189390
    StripeInfoWrapper:
      type: object
      title: StripeInfoWrapper
      description: Wrapper for StripeInfo
      required:
        - stripeInfo
      properties:
        stripeInfo:
          $ref: '#/components/schemas/StripeInfo'
    SupplierType:
      type: string
      description: Supplier type like Sabre, TravelFusion etc.
      enum:
        - SABRE
        - AMADEUS
        - TRAVEL_FUSION
        - FARELOGIX_NDC
        - ATPCO_NDC
        - TRAINLINE
        - AVIA
        - QBR
        - BCD
        - QANTAS_HOTELS
        - SOUTHWEST
        - EXPEDIA
        - HOTEL_HUB
        - NDC
        - MARRIOTT
        - CLEARTRIP
        - KYTE
        - 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
    SupportConfig:
      type: object
      title: SupportConfig
      description: Support Configuration for company
      properties:
        contactNumbers:
          type: array
          description: List of support phone numbers.
          items:
            $ref: '#/components/schemas/PhoneNumber'
        emailAddresses:
          type: array
          description: List of the support email addresses.
          uniqueItems: true
          items:
            type: string
            example: support@spotnana.com
        freshdeskConfig:
          $ref: '#/components/schemas/FreshdeskConfig'
        tier:
          $ref: '#/components/schemas/Tier'
          default: BASIC
        genesysConfig:
          type: object
          title: GenesysConfig
          description: Configuration for genesys.
          required:
            - enabled
            - dataUrl
          properties:
            enabled:
              type: boolean
              description: Whether genesys is enabled or not.
              default: false
              example: true
            dataUrl:
              type: string
              description: Data url for genesys.
        portalUrls:
          type: array
          description: List of the support portal urls.
          uniqueItems: true
          items:
            type: string
            example: www.support.spotnana.com
        zendeskConfig:
          type: object
          title: ZendeskConfig
          description: Configuration for zendesk.
          required:
            - enabled
            - integrationId
          properties:
            enabled:
              type: boolean
              description: Whether Zendesk Chat is enabled or not.
              default: false
              example: true
            integrationId:
              type: string
              description: Integration ID for Zendesk Chat for Web.
              example: '1234567890'
            androidIntegrationId:
              type: string
              description: Integration ID for Zendesk Chat for Android.
              example: '1234567890'
            iosIntegrationId:
              type: string
              description: Integration ID for Zendesk Chat for iOS.
              example: '1234567890'
        genesysCloudConfig:
          type: object
          title: GenesysCloudConfig
          description: Configuration for Genesys cloud.
          required:
            - enabled
            - deploymentId
            - environment
            - genesysScriptUrl
          properties:
            enabled:
              type: boolean
              description: Whether Genesys Cloud is enabled or not.
              default: false
              example: true
            deploymentId:
              type: string
              description: DeploymentId for Genesys Cloud.
              example: 52dc2a6f-772a-4edf-96d3-b3f0c49400a7
            environment:
              type: string
              description: Environment for Genesys Cloud.
              example: usa-1
            genesysScriptUrl:
              type: string
              description: Url for Genesys Cloud Script.
              example: https://test.test.com
            clientId:
              type: string
              description: Client ID for Genesys Cloud.
              example: 1ab2cd3efghijklmnop4qr5s6t
        twilioChatConfig:
          type: object
          title: TwilioChatConfig
          description: Configuration for Twilio Chat.
          required:
            - enabled
          properties:
            enabled:
              type: boolean
              description: Whether Twilio Chat is enabled or not.
        cognigyChatConfig:
          type: object
          title: CognigyChatConfig
          description: Cognigy Chat Config.
          properties:
            enabled:
              type: boolean
              description: Whether Cognigy chat is enabled or not.
              x-requiredFrom: '2025-05-12'
            scriptUrl:
              type: string
              description: Url for Cognigy Script.
              example: https://your-cognigy-instance.com/script/abcdef123456
              x-requiredFrom: '2025-05-12'
            initWebchatEndpoint:
              type: string
              description: Endpoint for Cognigy initWebchat method.
              example: https://your-cognigy-instance.com/initWebchat
              x-requiredFrom: '2025-05-12'
            sessionTimeout:
              type: integer
              format: integer
              description: Session timeout (in minutes) for Cognigy Chat.
              example: 30
              x-requiredFrom: '2025-05-12'
            cssUrl:
              type: string
              description: Url for Cognigy Chat CSS.
              example: https://your-server.com/css/chat.css
    SupportConfigs:
      title: SupportConfigs
      type: object
      properties:
        length:
          type: integer
          format: int32
        elements:
          type: array
          description: Support Configurations List.
          items:
            $ref: '#/components/schemas/SupportConfig'
    SurfaceVisibility:
      type: object
      title: SurfaceVisibility
      description: >-
        Visibility of one branding element across surfaces. Each surface
        renderer honors only its own flag (e.g. email ignores hideOnWeb).
      properties:
        hideOnWeb:
          type: boolean
          example: true
    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
    TaxAmount:
      type: object
      title: Tax
      description: Tax
      required:
        - amount
        - taxCode
        - description
      properties:
        amount:
          $ref: '#/components/schemas/Money'
        taxCode:
          type: string
          description: Tax code
          example: VAT
        description:
          type: string
          description: Tax code
        percentage:
          type: number
          format: double
          description: Amount
          example: 10
    TaxBreakdown:
      type: array
      items:
        $ref: '#/components/schemas/Tax'
    ThemeBgTokens:
      type: object
      title: ThemeBgTokens
      description: Background tokens. surface is the app/page background.
      properties:
        surface:
          type: string
          example: '#FFFFFF'
        surface02:
          type: string
          example: '#F7F7F7'
        brand:
          type: string
          example: '#D33B47'
        brandSubtle:
          type: string
          example: '#FBE9EA'
        brandHover:
          type: string
          example: '#B73039'
    ThemeBorderTokens:
      type: object
      title: ThemeBorderTokens
      properties:
        light:
          type: string
          example: '#E5E5E5'
        medium:
          type: string
          example: '#CCCCCC'
        dark:
          type: string
          example: '#999999'
        brand:
          type: string
          example: '#D33B47'
        brandSubtle:
          type: string
          example: '#F3C6C9'
        hover:
          type: string
          example: '#B73039'
    ThemeButtonOverride:
      type: object
      title: ThemeButtonOverride
      properties:
        borderRadius:
          $ref: '#/components/schemas/ThemeButtonRadius'
    ThemeButtonRadius:
      type: object
      title: ThemeButtonRadius
      description: Border radius by button size. Empty = use the Blocks default.
      properties:
        small:
          type: string
          example: 4px
        medium:
          type: string
          example: 6px
        large:
          type: string
          example: 8px
    ThemeColorTokens:
      type: object
      title: ThemeColorTokens
      description: Semantic-role-based tokens (bg / text / border / icon).
      properties:
        bg:
          $ref: '#/components/schemas/ThemeBgTokens'
        text:
          $ref: '#/components/schemas/ThemeTextTokens'
        border:
          $ref: '#/components/schemas/ThemeBorderTokens'
        icon:
          $ref: '#/components/schemas/ThemeIconTokens'
    ThemeConfigV2:
      type: object
      title: ThemeConfigV2
      description: >-
        Theming V2 config — maps 1:1 to the FE TWhiteLabelConfigV2 shape.
        Additive and opt-in.
      properties:
        fontFamily:
          type: array
          description: Font stack — first font that loads wins. Empty = use V1 fontFamily.
          items:
            type: string
          example:
            - Inter
            - Arial
            - sans-serif
        palette:
          $ref: '#/components/schemas/ThemePalette'
        overrides:
          $ref: '#/components/schemas/ThemeOverrides'
    ThemeIconTokens:
      type: object
      title: ThemeIconTokens
      properties:
        brand:
          type: string
          example: '#D33B47'
    ThemeOverrides:
      type: object
      title: ThemeOverrides
      description: Per-component style overrides. Extensible — start with button.
      properties:
        button:
          $ref: '#/components/schemas/ThemeButtonOverride'
    ThemePalette:
      type: object
      title: ThemePalette
      description: >-
        Semantic palette split by color mode. Empty token = use the Blocks
        default.
      properties:
        light:
          $ref: '#/components/schemas/ThemeColorTokens'
        dark:
          $ref: '#/components/schemas/ThemeColorTokens'
    ThemeTextTokens:
      type: object
      title: ThemeTextTokens
      properties:
        primary:
          type: string
          example: '#1A1A1A'
        secondary:
          type: string
          example: '#6B6B6B'
        brand:
          type: string
          example: '#D33B47'
        link:
          type: string
          example: '#1F6FEB'
    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
    Tier:
      type: string
      title: Tier
      description: >
        Tier of User.

        Note: In default UI, BASIC is displayed as Standard, and SEAT1A is
        displayed as VIP.

        Display names for other tiers are driven by the company tier
        configuration.
      enum:
        - BASIC
        - SEAT1A
        - TIER_2
        - TIER_3
        - TIER_4
        - TIER_5
        - TIER_6
        - TIER_7
        - TIER_8
        - TIER_9
        - TIER_10
        - TIER_11
        - TIER_12
        - TIER_13
        - TIER_14
        - TIER_15
        - TIER_16
        - TIER_17
        - TIER_18
        - TIER_19
        - TIER_20
        - TIER_21
        - TIER_22
        - TIER_23
        - TIER_24
        - TIER_25
        - TIER_26
        - TIER_27
        - TIER_28
        - TIER_29
        - TIER_30
        - TIER_31
      x-enum-varnames:
        - BASIC
        - SEAT1A
        - TIER_2
        - TIER_3
        - TIER_4
        - TIER_5
        - TIER_6
        - TIER_7
        - TIER_8
        - TIER_9
        - TIER_10
        - TIER_11
        - TIER_12
        - TIER_13
        - TIER_14
        - TIER_15
        - TIER_16
        - TIER_17
        - TIER_18
        - TIER_19
        - TIER_20
        - TIER_21
        - TIER_22
        - TIER_23
        - TIER_24
        - TIER_25
        - TIER_26
        - TIER_27
        - TIER_28
        - TIER_29
        - TIER_30
        - TIER_31
      example: SEAT1A
      default: BASIC
    TierCapability:
      type: string
      title: TierCapability
      description: A capability that can be granted to a tier.
      enum:
        - AGENT_SERVICING
        - PREMIUM_SUPPORT
        - GDS_PREMIUM_HANDLING
        - SUPPRESS_AUTOMATED_NOTIFICATIONS
        - BACKOFFICE_PREMIUM_INDICATOR
    TierChargeConfig:
      type: object
      title: Tier charge configuration for service charge
      required:
        - tier
        - charges
      properties:
        tier:
          $ref: '#/components/schemas/Tier'
        charges:
          type: array
          description: Amount in specified currency
          items:
            $ref: '#/components/schemas/Money'
    TierConfig:
      type: object
      title: TierConfig
      description: Tier configuration.
      properties:
        tiers:
          type: array
          description: A list of tiers for this company.
          items:
            $ref: '#/components/schemas/TierDefinition'
    TierDefinition:
      type: object
      title: TierDefinition
      description: Tier that controls the support features available to a user.
      required:
        - name
        - tier
      properties:
        name:
          type: string
          description: Tier name.
        icon:
          type: string
          description: URL representing tier icon.
        tier:
          $ref: '#/components/schemas/Tier'
        capabilities:
          type: array
          description: Capabilities granted to this tier.
          items:
            $ref: '#/components/schemas/TierCapability'
    TitledColor:
      type: object
      description: Color with associated title.
      required:
        - title
        - color
      properties:
        title:
          $ref: '#/components/schemas/ColorTitle'
        color:
          type: string
          example: '#FF0000'
    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.
    TmcCalculatorInfo:
      title: TmcCalculatorInfo
      type: object
      description: TMC calculator processor info
      required:
        - chargeProcessorType
        - calculatorType
      properties:
        calculatorType:
          type: string
          description: TMC service charge calculator type
          example: SPOTNANA
        chargeProcessorType:
          type: string
          description: Charge processor type
          example: TMC_CALCULATOR_INFO
    TmcDefaultConfiguration:
      type: object
      title: TmcDefaultConfiguration
      description: Default TMC configuration.
      properties:
        defaultBookingTmcId:
          type: string
          format: uuid
          description: >-
            Default booking TMC to be used. If not set, then TMC itself will be
            default booking tmc.
          example: 734f4ea2-e9ed-4c90-853c-9eed62f1254b
        countryWiseBookingTmcs:
          type: array
          description: Override for booking TMCs per country.
          items:
            type: object
            title: CountryWiseBookingTmcs
            required:
              - countryCode
              - bookingTmcId
            properties:
              countryCode:
                type: string
                example: US
                description: >-
                  The ISO 2-character country code for which booking TMCs needs
                  to be overriden.
              bookingTmcId:
                type: string
                format: uuid
                description: Booking TMC for above country code.
                example: 734f4ea2-e9ed-4c90-853c-9eed62f1254b
    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
    TmcPartnerRoleMapping:
      type: object
      title: TmcPartnerRoleMapping
      description: Mapping between spotnana role and partner company's role
      required:
        - partnerRole
        - spotnanaRole
      properties:
        partnerRole:
          type: string
          description: User's role at partner.
        spotnanaRole:
          $ref: '#/components/schemas/RoleType'
    TokenVerifier:
      type: object
      title: TokenVerifier
      description: Method to verify the external token sent by partners.
      required:
        - doVerifyToken
      properties:
        doVerifyToken:
          type: boolean
          description: Token verification rules will be applied only if this is true.
        type:
          type: string
          description: Method to verify the external token sent by partners.
          enum:
            - OKTA_JWT
        verifierDetails:
          $ref: '#/components/schemas/VerifierDetails'
    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'
    TransactionFeeInfo:
      title: Transaction Fee Info
      type: object
      description: Transaction Fee Info
      required:
        - bookingFeeType
      properties:
        bookingFeeType:
          type: string
          example: TRANSACTION_FEE
        transactionFeeType:
          $ref: '#/components/schemas/ServiceFeeTransactionType'
        calculatedAmount:
          $ref: '#/components/schemas/Money'
        chargeProcessorInfo:
          $ref: '#/components/schemas/ChargeProcessorInfo'
    TravelContentConfig:
      type: object
      title: TravelContentConfig
      description: Travel content config
      properties:
        airConfig:
          description: Air content config
          $ref: '#/components/schemas/AirConfig'
    TravelType:
      type: string
      title: TravelType
      description: Travel Type
      enum:
        - AIR
        - HOTEL
        - CAR
        - RAIL
        - LIMO
        - MISC
        - ALL
      example: AIR
    TripFeeInfo:
      title: Trip Fee Info
      type: object
      description: Trip Fee Info
      required:
        - bookingFeeType
      properties:
        bookingFeeType:
          type: string
          example: TRIP_FEE
        calculatedAmount:
          $ref: '#/components/schemas/Money'
        chargeProcessorInfo:
          $ref: '#/components/schemas/ChargeProcessorInfo'
    UAPassPlusMetadataExternal:
      type: object
      title: UAPassPlusMetadata
      description: Details for UAPassPlus Metadata.
      properties:
        uatpInfo:
          type: object
          title: uatpInfo
          description: UATP card information for UAPassPlus
    UAPassPlusMetadataWrapperExternal:
      type: object
      title: UAPassPlusMetadataResponseWrapper
      description: Wrapper for UAPassPlus response metadata
      required:
        - uaPassPlusMetadata
      properties:
        uaPassPlusMetadata:
          $ref: '#/components/schemas/UAPassPlusMetadataExternal'
    UpdateFeatureConfig:
      type: object
      title: FeatureConfig
      description: Feature enabled for company.
      required:
        - name
        - value
      properties:
        name:
          $ref: '#/components/schemas/FeatureNameEnum'
        value:
          type: string
          description: Value associated with feature converted in String format.
    UpdateFeaturesRequest:
      type: object
      title: UpdateFeaturesRequest
      properties:
        featuresToUpdate:
          type: array
          description: Features that has to be updated.
          items:
            $ref: '#/components/schemas/UpdateFeatureConfig'
        featuresToDelete:
          type: array
          description: Features that has to be deleted.
          items:
            $ref: '#/components/schemas/FeatureNameEnum'
    UpdateGradeRequest:
      type: object
      title: UpdateGradeRequest
      required:
        - name
      description: Update grade request
      properties:
        name:
          type: string
          description: Name of the grade
          example: Grade
    UploadCompanyVendorPreferencesRequest:
      type: object
      title: UploadCompanyVendorPreferencesRequest
      description: Request for uploading company vendor preferences.
      required:
        - vendorType
      properties:
        vendorType:
          $ref: '#/components/schemas/VendorType'
        file:
          type: string
          format: binary
    UserId:
      type: object
      title: UserId
      description: User identifier
      required:
        - id
      properties:
        id:
          type: string
          format: uuid
    UserIdentifierType:
      type: string
      enum:
        - PID
        - EMAIL
        - EXTERNAL_ID
      description: Type of identifier for auth code Authentication
    UserInfoEndpointResponseAttribute:
      type: object
      title: UserInfoEndpointResponseAttribute
      description: auth Code metadata to get the user authenticated.
      required:
        - name
        - jsonXpath
      properties:
        name:
          description: Attribute name
          type: string
          enum:
            - PID
            - EMAIL
            - EXTERNAL_ID
          example: PID
        jsonXpath:
          type: string
          description: Json xpath of the Attribute/Parameter value location
          example: $.user.email
    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'
    ValueAddedServiceFeeInfo:
      type: object
      title: ValueAddedServiceFeeInfo
      description: Value Added Service Fee Info
      required:
        - bookingFeeType
      properties:
        bookingFeeType:
          type: string
          description: Type of the booking fee
          example: VALUE_ADDED_SERVICE_FEE
        calculatedAmount:
          $ref: '#/components/schemas/Money'
        chargeProcessorInfo:
          $ref: '#/components/schemas/ChargeProcessorInfo'
        valueAddedServiceFeeType:
          $ref: '#/components/schemas/ValueAddedServiceFeeType'
        feeName:
          type: string
          description: Name of the fee to be charged.
          example: Payment Admin Fee
    ValueAddedServiceFeeType:
      type: string
      title: ValueAddedServiceFeeType
      description: Value added service fee type
      enum:
        - VIRTUAL_CARD_PAYMENT
        - PRICE_OPTIMIZATION
        - UNUSED_CREDIT_APPLICATION
        - MERCHANT_FEE
      example: VIRTUAL_CARD_PAYMENT
    VendorProgramPaymentMetadata2:
      type: object
      title: VendorProgramPaymentMetadata
      description: Metadata related to vendor program payment method
      oneOf:
        - $ref: '#/components/schemas/DirectBillingWrapper2'
        - $ref: '#/components/schemas/UAPassPlusMetadataWrapperExternal'
    VendorType:
      type: string
      description: Types of vendors supported for company preferences.
      enum:
        - CAR
        - HOTEL
        - HOTEL_CHAIN
        - AIRLINE
        - HOTEL_BRAND
    VerifierDetails:
      type: object
      title: VerifierDetails
      oneOf:
        - $ref: '#/components/schemas/OktaJwtVerifierWrapper'
    VirtualCardInfo:
      type: object
      title: VirtualCardInfo
      description: >-
        Virtual card information like maximum deployment amount, valid date
        range.
      properties:
        amount:
          description: >-
            Virtual card deployment amount. This amount will drive the maximum
            authorisation value permitted on the virtual card.
          $ref: '#/components/schemas/Money'
        dateRange:
          description: Date range within which the virtual card can be charged.
          $ref: '#/components/schemas/DateRange'
    VirtualCardPaymentMetadata:
      title: VirtualCardPaymentMetadata
      type: object
      description: Metadata for Virtual Card.
      required:
        - vendorInfo
      properties:
        vendorInfo:
          $ref: '#/components/schemas/VirtualCardVendorInfo'
        cardInfo:
          $ref: '#/components/schemas/VirtualCardInfo'
        paymentInstructionId:
          type: string
          description: >-
            Payment instruction id set during addition of virtual card payment
            source
          example: 1eb8b778-f0a6-4037-865c-4580982fa36e
        shouldReveal:
          type: boolean
          description: >-
            Identifier for when to reveal virtual cards as they are revealed to
            travellers only 24hrs before check-in.
          example: false
    VirtualCardVendor:
      type: string
      description: Type of Virtual card vendor
      enum:
        - CONFERMA
      example: CONFERMA
    VirtualCardVendorInfo:
      type: object
      title: VirtualCardVendorInfo
      description: >-
        Virtual card related information like vendor, cardId, card-pool id of
        vendor etc.
      required:
        - vendorCardId
        - virtualCardVendorCardPoolId
      properties:
        vendor:
          $ref: '#/components/schemas/VirtualCardVendor'
        vendorCardId:
          type: string
          description: Virtual card id.
          example: '68793680'
        virtualCardVendorCardPoolId:
          type: string
          description: Card pool id of virtual card vendor.
          example: '51907'
        confermaInfo:
          $ref: '#/components/schemas/ConfermaInfo'
    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
    WebLinksConfig:
      type: object
      title: WebLinksConfig
      description: Weblinks which are parts of WhiteLabelConfig.
      properties:
        logoHeader:
          type: string
          example: >-
            https://duploservices-stage-email-assets-873909615026.s3.us-west-2.amazonaws.com/confirmation/spotnana3.png
        logoFooter:
          type: string
          example: >-
            https://duploservices-stage-email-assets-873909615026.s3-us-west-2.amazonaws.com/approval/spotnana-s-logo.png
        companyWebsiteAddress:
          type: string
          example: https://www.spotnana.com
        homePage:
          type: string
          example: https://stage-app.spotnana.com/flights
        itineraryPage:
          type: string
          example: https://stage-app.spotnana.com/trips/3375488451
        disclaimerPage:
          type: string
          example: https://www.spotnana.com/terms
        privacyPage:
          type: string
          example: https://www.spotnana.com/privacy-policy
        hardApprovalUrl:
          type: string
          example: >-
            https://stage-app.spotnana.com/hardapproval?approvalId=CgozMzQ5OTI4MzI2EiMKIQoMCgpQaWh1IEd1cHRhEhFwaWh1QHNwb3RuYW5hLmNvbQ%3D%3D&approverName=Pihu%20Gupta&travelerName=Pihu%20Gupta&tripName=TESting%201&tripId=2418132231&voidDate=Tuesday,%2021%20Jun%20at%2002:00%20UTC
        itineraryFlightStatsUrl:
          type: string
          example: https://stage-app.spotnana.com/trips/4694735622
        appEmbedScriptUrl:
          type: string
          example: https://customjs.partner.com
        logoNavigationLink:
          type: string
          example: http://www.spotnana.com
        illustration:
          type: string
          example: >-
            https://duploservices-stage-email-assets-873909615026.s3-us-west-2.amazonaws.com/approval/spotnana-s-logo.png
        poweredBySpotnana:
          type: boolean
          default: true
          example: false
        logoutRedirectUrl:
          type: string
          example: https://www.spotnana.com/signout
        faviconUrl:
          type: string
          description: Display logo on the browser title.
          example: http://www.spotnana.com
        appDownloadLinks:
          $ref: '#/components/schemas/AppDownloadLinksConfig'
        socialMediaLinks:
          $ref: '#/components/schemas/SocialMediaLinksConfig'
        termsOfUse:
          type: string
          description: >-
            Terms of service/legal agreement between a service provider and a
            person who wants to use service.
          example: https://www.spotnana.com/terms/
        illustrationActionUrl:
          type: string
          example: https://www.spotnana.com/login
        checkoutCoverImageUrl:
          type: string
          description: Cover image to be shown on checkout page.
          example: >-
            https://duploservices-email-assets-873909615026.s3-us-west-2.amazonaws.com/approval/spotnana-s-logo.png
        postCcVerificationCallbackUrl:
          type: string
          description: Post credit card verification callback URL.
          example: https://example.com/callback
        loyaltyLinkedImageUrl:
          type: string
          description: Image URL for loyalty linked page.
          example: https://example.com/loyalty-linked.png
        onboardingFinalizeImageUrl:
          type: string
          description: Image URL for onboarding finalize page.
          example: https://example.com/onboarding-finalize.png
        inviteUserImageUrl:
          type: string
          description: Image URL for invite user page.
          example: https://example.com/invite-user.png
        takeActionPath:
          type: string
          description: >-
            Email CTA routing override for embedded/white-labeled deployments.
            "Take action" CTA (Arranger email) destination — a full URL (e.g. a
            partner-hosted wrapping page that redirects into their embedded
            iframe), same convention as itineraryPage/hardApprovalUrl, used
            as-is with no base-URL prefixing. Unset falls back to the existing
            hardcoded native path.
          example: https://partner.com/embedded/take-action
        bookMyTripPath:
          type: string
          description: >-
            Email CTA routing override for embedded/white-labeled deployments.
            "Book my trip" CTA (event invite/reminder emails) destination — a
            full URL, same convention as itineraryPage/hardApprovalUrl, used
            as-is with no base-URL prefixing. Unset falls back to the existing
            hardcoded native path.
          example: https://partner.com/embedded/my-trip
        viewEventDetailsPath:
          type: string
          description: >-
            Email CTA routing override for embedded/white-labeled deployments.
            "View event details" CTA (event invite email) destination — a full
            URL, same convention as itineraryPage/hardApprovalUrl, used as-is
            with no base-URL prefixing. Unset falls back to the existing
            hardcoded native path.
          example: https://partner.com/embedded/my-trip
    Weight:
      type: object
      title: Weight
      description: Specifies weight unit and weight amount.
      required:
        - weight
        - unit
      properties:
        weight:
          type: number
          description: Amount of weight.
          format: double
          example: 150
        unit:
          type: string
          description: Unit of weight.
          enum:
            - KG
            - LBS
          example: KG
    WhiteLabelConfig:
      type: object
      title: WhitelabelConfig
      description: Whitelabel configuration.
      x-ignoreBreakingChanges:
        - WhiteLabelConfig->colors
        - CompanyApi.yaml->WhiteLabelConfig->colors
      properties:
        companyName:
          type: string
          example: Spotnana
        colors:
          $ref: '#/components/schemas/ColorWhiteLabelConfig'
          x-optionalFrom: '2025-09-25'
        webLinks:
          $ref: '#/components/schemas/WebLinksConfig'
        fromEmailAddress:
          type: string
          example: no-reply@spotnana.com
        fontFamily:
          type: string
          example: Arial
          default: Arial
        emailFontFamily:
          type: string
          example: Roboto
          default: Roboto
        fontFamilyCss:
          type: string
          example: >-
            https://duploservices-stage-email-assets-873909615026.s3.us-west-2.amazonaws.com/partners/amazon/emberDisplay.css
        emailClientConfig:
          $ref: '#/components/schemas/EmailClientConfig'
          description: >-
            Email client configuration representing the email provider to be
            used.
        clientRoutingBasePath:
          type: string
          description: >-
            Base path used by Spotnana OBT application to invoke API calls.
            Default path value is /
        routingConfig:
          $ref: '#/components/schemas/RoutingConfig'
        privacyDisclaimer:
          $ref: '#/components/schemas/PrivacyDisclaimer'
        visaRequirements:
          type: string
          description: Rich text content for visa requirements information
          example: >-
            <p>Please ensure you have the necessary visa documentation before
            traveling.</p>
        themeConfig:
          $ref: '#/components/schemas/ThemeConfigV2'
          description: >-
            Theming V2 — additive, opt-in. Unset falls back to V1 (colors /
            fontFamily).
        brandingVisibility:
          $ref: '#/components/schemas/BrandingVisibility'
          description: >-
            Per-surface visibility of branding elements (e.g. hide the company
            logo on web but keep it in email). Additive — default shows
            everything.
tags:
  - name: Companies
    description: APIs to onboard and manage company.
  - name: Legal Entities
    description: APIs to create and manage company legal entities.
  - name: Cost Centers
    description: APIs to create and manage company cost centers.
  - name: Offices
    description: APIs to create and manage company offices.
  - name: Departments
    description: APIs to create and manage departments.
  - name: Grades
    description: APIs to create and manage grades.
  - name: Service Charge Plan
    description: APIs to manage service charge plans.
  - name: Partner Public Keys
    description: APIs to manage partner public keys for token exchange authentication.
  - name: Tenant Encryption
    description: APIs to enable per-tenant encryption (PTE) for a company.
paths:
  /v2/companies:
    post:
      tags:
        - Companies
      summary: Create company
      description: >-
        This endpoint creates a company. This is allowed only by TMC_ADMIN and
        above roles.
      operationId: createCompany
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCompanyRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityId'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    get:
      tags:
        - Companies
      summary: List companies
      description: >
        This endpoint lists companies. If externalId is provided in query param,
        only the company having 

        the specified external ID is returned.
      operationId: listCompanies
      parameters:
        - name: externalId
          in: query
          description: External id of the entity.
          required: false
          schema:
            type: string
          example: my-external-id
        - name: companyRole
          in: query
          description: Filter by a particular role
          required: false
          schema:
            type: array
            items:
              $ref: '#/components/schemas/CompanyRole'
          example: ORG
        - name: companyIds
          in: query
          description: Filter by a list of companies
          required: false
          schema:
            type: array
            items:
              type: string
              format: uuid
        - name: contractingTmcIds
          in: query
          description: Filter by contracting TMCs
          required: false
          schema:
            type: array
            items:
              type: string
              format: uuid
        - name: bookingTmcIds
          in: query
          description: Filter by booking TMCs
          required: false
          schema:
            type: array
            items:
              type: string
              format: uuid
        - name: offset
          in: query
          description: Indicates the start index to read companies from the server.
          schema:
            type: integer
            default: 0
            minimum: 0
        - name: limit
          in: query
          description: Maximum number of results to be fetched.
          schema:
            type: integer
            default: 100
            minimum: 0
            maximum: 100
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrayOfReference'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/companies/{companyId}:
    get:
      tags:
        - Companies
      summary: Get company
      description: This endpoint gets a company by ID.
      operationId: readCompany
      parameters:
        - name: companyId
          in: path
          description: >-
            Identifier for company. External id can be supplied in `X` prefixed
            form. For instance, if external_id = abc, then Xabc, has to be
            passed.
          required: true
          schema:
            type: string
          example: 4974a66b-7493-4f41-908c-58ba81093947
        - in: header
          name: x-application-id
          schema:
            type: string
            format: uuid
          example: 4974a66b-7493-4f41-908c-58ba81093947
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Company'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - Companies
      summary: Update company
      operationId: updateCompany
      description: This endpoint updates a company by ID.
      parameters:
        - name: companyId
          in: path
          description: Identifier for company.
          required: true
          schema:
            type: string
            format: uuid
          example: 4974a66b-7493-4f41-908c-58ba81093947
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Company'
      responses:
        '204':
          description: Updated Successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - Companies
      summary: Delete company
      description: This endpoint deletes a company by ID.
      operationId: deleteCompany
      parameters:
        - name: companyId
          in: path
          description: Identifier for company.
          required: true
          schema:
            type: string
            format: uuid
          example: 4974a66b-7493-4f41-908c-58ba81093947
      responses:
        '204':
          description: Deleted Successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/legal-entities:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
        - Legal Entities
      summary: Create legal entity
      description: This endpoint creates a legal entity.
      operationId: createLegalEntity
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LegalEntityCreateRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityId'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    get:
      tags:
        - Legal Entities
      summary: List legal entities
      description: >
        This endpoint lists legal entities of a company. If externalId is
        provided in the query param 

        only the legal entity having the provided externalId is returned.
      operationId: listLegalEntities
      parameters:
        - name: pageNumber
          in: query
          description: Page number to fetch for the query. Page number starts from 1.
          required: false
          schema:
            type: integer
            format: int32
            minimum: 1
            default: 1
            example: 2
        - name: pageSize
          in: query
          description: Page size to be to fetch for the query.
          required: false
          schema:
            type: integer
            format: int32
            minimum: 1
            maximum: 1000
            default: 1000
            example: 20
        - name: externalId
          in: query
          description: External id of the entity.
          required: false
          schema:
            type: string
          example: my-external-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrayOfReference'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/companies/{companyId}/legal-entities/{legalEntityId}:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
      - name: legalEntityId
        in: path
        description: Identifier for legal-entity.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    get:
      tags:
        - Legal Entities
      summary: Get legal entity
      description: This endpoint gets a legal entity by ID.
      operationId: getLegalEntity
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LegalEntity'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - Legal Entities
      summary: Update legal entity
      description: This endpoint updates a legal entity by ID.
      operationId: updateLegalEntity
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LegalEntityUpdateRequest'
      responses:
        '204':
          description: Updated Successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - Legal Entities
      summary: Delete legal entity
      description: This endpoint deletes a legal entity by ID.
      operationId: deleteLegalEntity
      responses:
        '204':
          description: Deleted
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/cost-centers:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
        - Cost Centers
      summary: Create cost center
      description: This endpoint creates a cost center.
      operationId: createCostCenter
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateCostCenterRequest'
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityId'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    get:
      tags:
        - Cost Centers
      summary: List cost centers
      description: >
        This endpoint lists cost centers of a company. If an externalId is
        provided in the query parameter

        only the cost center with the provided externalId is returned.
      operationId: listCostCenters
      deprecated: true
      x-sunset: '2026-07-01'
      parameters:
        - name: externalId
          in: query
          description: External id of the cost center.
          required: false
          schema:
            type: string
          example: cost-center-external-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrayOfReference'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/companies/{companyId}/cost-centers/{costCenterId}:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
      - name: costCenterId
        in: path
        description: Identifier for cost-center.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    get:
      tags:
        - Cost Centers
      summary: Get cost center
      description: This endpoint gets a cost center by ID.
      operationId: getCostCenter
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CostCenter'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - Cost Centers
      summary: Update cost center
      operationId: updateCostCenter
      description: This endpoint updates a cost center by ID.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CostCenter'
      responses:
        '204':
          description: Updated Successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - Cost Centers
      summary: Delete cost center
      description: This endpoint deletes a cost center by ID.
      operationId: deleteCostCenter
      parameters:
        - name: detachUsers
          in: query
          description: >-
            Whether to remove this cost center's reference from associated user
            entities.
          schema:
            type: boolean
            default: false
      responses:
        '204':
          description: No Content
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/companies/{companyId}/cost-centers/list:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
        - Cost Centers
      summary: List cost centers
      description: |
        This endpoint lists cost centers of a company.
      operationId: listCostCentersV3
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListCostCentersRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListCostCentersResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/legal-entities/{legalEntityId}/offices:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
      - name: legalEntityId
        in: path
        description: Identifier for legal-entity.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093946
    post:
      tags:
        - Offices
      summary: Create office
      description: This endpoint creates an office.
      operationId: createOffice
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateOfficeRequest'
      responses:
        '201':
          description: Created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityId'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    get:
      tags:
        - Offices
      summary: List offices of the legal entity
      description: >
        This endpoint list offices of given legal entity. If externalId is
        provided in query param, the office 

        having the externalId is fetched.
      operationId: listLegalEntityOffices
      parameters:
        - name: externalId
          in: query
          description: External id of the entity.
          required: false
          schema:
            type: string
          example: office-external-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrayOfReference'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/companies/{companyId}/office-list:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
        - Offices
      summary: List company offices
      operationId: listOfficesV2
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListOfficesV2Request'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListOfficesV2Response'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/legal-entities/{legalEntityId}/offices/{officeId}:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
      - name: legalEntityId
        in: path
        description: Identifier for legal-entity.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
      - name: officeId
        in: path
        description: Identifier for office.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    get:
      tags:
        - Offices
      summary: Get office
      description: This endpoint gets an office by ID.
      operationId: getOffice
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/OfficeV2'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - Offices
      summary: Update office
      description: This endpoing updates office by ID.
      operationId: updateOffice
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OfficeV2'
      responses:
        '204':
          description: Updated successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - Offices
      summary: Delete office
      description: This endpoint deletes office by ID.
      operationId: deleteOffice
      parameters:
        - name: detachUsers
          in: query
          description: >-
            Whether to remove this entity's reference from associated user
            entities.
          schema:
            type: boolean
            default: false
      responses:
        '204':
          description: Deleted
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/partner-public-keys:
    parameters:
      - name: companyId
        in: path
        description: Organization identifier.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
        - Partner Public Keys
      summary: Add partner public key
      description: >
        Adds one or more public keys for a partner organization to use for token
        exchange authentication. Accessible to TMC, company, and global admins.
      operationId: addPartnerPublicKey
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddPartnerPublicKeyRequest'
      responses:
        '201':
          description: Keys created successfully.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddPartnerPublicKeyResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    get:
      tags:
        - Partner Public Keys
      summary: List partner public keys
      description: >
        Lists partner public keys for a TMC. Accessible to TMC, company, and
        global admins.
      operationId: listPartnerPublicKeys
      parameters:
        - name: status
          in: query
          description: Filter keys by status. Defaults to ACTIVE.
          required: false
          schema:
            type: string
            enum:
              - ACTIVE
              - REVOKED
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListPartnerPublicKeysResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/companies/{companyId}/partner-public-keys/{kid}:
    parameters:
      - name: companyId
        in: path
        description: Organization identifier.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
      - name: kid
        in: path
        description: Key ID (kid field from the JWK).
        required: true
        schema:
          type: string
        example: my-key-1
    delete:
      tags:
        - Partner Public Keys
      summary: Revoke partner public key
      description: >
        Revokes a partner public key identified by kid. Accessible to TMC,
        company, and global admins.
      operationId: revokePartnerPublicKey
      responses:
        '204':
          description: Key revoked successfully.
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/departments:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
        - Departments
      summary: Create department
      description: This endpoint creates a department.
      operationId: createDepartment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDepartmentRequest'
      responses:
        '201':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityId'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
    get:
      tags:
        - Departments
      summary: List departments
      description: This endpoint lists departments of a company.
      operationId: listDepartments
      deprecated: true
      x-sunset: '2026-07-01'
      parameters:
        - name: externalId
          in: query
          description: External id of the department.
          required: false
          schema:
            type: string
          example: department-external-id
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ArrayOfReference'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/companies/{companyId}/departments/{departmentId}:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
      - name: departmentId
        in: path
        description: Identifier for department.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    get:
      tags:
        - Departments
      summary: Get department
      description: This endpoint gets a department by ID.
      operationId: getDepartment
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DepartmentV2'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - Departments
      summary: Update department
      description: This endpoint updates department by ID.
      operationId: updateDepartment
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DepartmentV2'
      responses:
        '204':
          description: Updated Successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - Departments
      summary: Delete department
      description: This endpoint deletes department by ID.
      operationId: deleteDepartment
      parameters:
        - name: detachUsers
          in: query
          description: >-
            Whether to remove this entity's reference from associated user
            entities.
          schema:
            type: boolean
            default: false
      responses:
        '204':
          description: Deleted Successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/companies/{companyId}/departments/list:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
        - Departments
      summary: List departments
      description: This endpoint lists departments of a company.
      operationId: listDepartmentsV3
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListDepartmentsRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListDepartmentsResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/grades:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
        - Grades
      summary: Create grade
      description: This endpoint creates a grade.
      operationId: createGrade
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateGradeRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EntityId'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
  /v2/companies/{companyId}/grades/{gradeId}:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
      - name: gradeId
        in: path
        description: Identifier for grade.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    get:
      tags:
        - Grades
      summary: Get grade
      description: This endpoint gets a grade by ID.
      operationId: getGrade
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GradeV2'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - Grades
      summary: Update grade
      description: This endpoint updates grade by ID.
      operationId: updateGrade
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateGradeRequest'
      responses:
        '200':
          description: Updated Successfully
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - Grades
      summary: Delete grade
      description: This endpoint deletes grade by ID.
      operationId: deleteGrade
      responses:
        '200':
          description: Deleted Successfully
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/grades/list:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
        - Grades
      summary: List grades
      description: This endpoint lists grades of a company.
      operationId: listGrades
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListGradesRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListGradesResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/features:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
      - in: header
        name: X-Application-Id
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
      - name: companyRole
        in: query
        schema:
          $ref: '#/components/schemas/CompanyRole'
        example: TMC
    get:
      tags:
        - Companies
      summary: Get company features
      operationId: getCompanyFeatures
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FeatureConfigs'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    patch:
      tags:
        - Companies
      summary: Update Company Features
      operationId: updateCompanyFeaturesPatch
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateFeaturesRequest'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/travel-content-config:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    get:
      tags:
        - Companies
      summary: Get company travel content config
      operationId: getCompanyTravelContentConfig
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TravelContentConfig'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    put:
      tags:
        - Companies
      summary: Update company travel content config
      operationId: updateCompanyTravelContentConfig
      requestBody:
        description: Travel content config of a given company
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TravelContentConfig'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - Companies
      summary: Delete company travel content config
      operationId: deleteCompanyTravelContentConfig
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/white-label-config:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    put:
      tags:
        - Companies
      summary: Updates white label config
      description: >-
        This endpoint stores white label config for the company at different
        entity levels.
      operationId: updateCompanyWhiteLabelConfig
      parameters:
        - name: companyRole
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/CompanyRole'
          example: ORG
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WhiteLabelConfig'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    get:
      tags:
        - Companies
      summary: Get white label config
      description: This endpoint fetches the white label config for the company.
      operationId: getCompanyWhiteLabelConfig
      parameters:
        - name: companyRole
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/CompanyRole'
          example: ORG
        - name: applicationId
          in: query
          required: false
          schema:
            type: string
            format: uuid
          example: 1234a66b-7493-4f41-908c-58ba81055667
          description: Application context to get white label config.
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WhiteLabelConfig'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - Companies
      summary: Delete white label config
      description: This endpoint deletes the white label config for the company.
      operationId: deleteCompanyWhiteLabelConfig
      parameters:
        - name: companyRole
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/CompanyRole'
          example: ORG
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/managers-config:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    put:
      tags:
        - Companies
      summary: Updates company managers config
      description: >-
        This endpoint stores company managers config (account managers and
        customer success managers) for the company at different entity levels.
      operationId: updateCompanyManagersConfig
      parameters:
        - name: companyRole
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/CompanyRole'
          example: ORG
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CompanyManagersConfig'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    get:
      tags:
        - Companies
      summary: Get company managers config
      description: This endpoint fetches the company managers config for the company.
      operationId: getCompanyManagersConfig
      parameters:
        - name: companyRole
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/CompanyRole'
          example: ORG
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CompanyManagersConfig'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    delete:
      tags:
        - Companies
      summary: Delete company managers config
      description: This endpoint deletes the company managers config for the company.
      operationId: deleteCompanyManagersConfig
      parameters:
        - name: companyRole
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/CompanyRole'
          example: ORG
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/license/company/{companyId}/service-charge/per-trip:
    parameters:
      - name: companyId
        in: path
        description: Company ID
        required: true
        schema:
          type: string
          format: uuid
          example: f49d00fe-1eda-4304-ba79-a980f565281d
    get:
      tags:
        - Service Charge Plan
      summary: Get per-trip service charge configuration
      description: Get per-trip service charge configuration for company
      operationId: getCompanyPerTripSrvCharge
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetCompanyPerTripSrvChargeResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    post:
      tags:
        - Service Charge Plan
      summary: Set per-trip service charge configuration
      description: Set per-trip service charge configuration for company
      operationId: setCompanyPerTripSrvCharge
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SetCompanyPerTripSrvChargeRequest'
      responses:
        '204':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/service-charge/{entityType}/{entityId}/types/{type}/list:
    parameters:
      - name: entityType
        in: path
        description: Entity type for service charge
        required: true
        schema:
          $ref: '#/components/schemas/ServiceChargeEntityType'
          example: TRIP
      - name: entityId
        in: path
        description: Entity ID for service charge e.g. trip ID for entityType = TRIP
        required: true
        schema:
          type: string
          example: '1234567890'
      - name: type
        in: path
        description: Service charge type.
        required: true
        schema:
          $ref: '#/components/schemas/ServiceChargeType'
          example: TMC_CHARGE
    post:
      tags:
        - Service Charge
      summary: List service charges
      description: List service charges for a given entity
      operationId: listServiceCharges
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListServiceChargesRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListServiceChargesResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/enrollment-config:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    put:
      tags:
        - Company Enrollment
      summary: Updates Enrollment config
      description: This endpoint stores Enrollment config for the company at TMC level.
      operationId: updateCompanyEnrollmentConfig
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EnrollmentConfig'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    get:
      tags:
        - Company Enrollment
      summary: Get enrollment config
      description: This endpoint fetches the enrollment config for the company.
      operationId: getCompanyEnrollmentConfig
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EnrollmentConfig'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/color-config:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    put:
      tags:
        - Companies
      summary: Updates Color config
      description: This endpoint stores Color config for the company at some entity level.
      operationId: updateColorConfig
      parameters:
        - name: companyRole
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/CompanyRole'
          example: TMC
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ColorConfig'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    get:
      tags:
        - Companies
      summary: Get color config
      description: This endpoint fetches the color config for the given entity.
      operationId: getColorConfig
      parameters:
        - name: companyRole
          in: query
          required: true
          schema:
            $ref: '#/components/schemas/CompanyRole'
          example: TMC
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ColorConfig'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/tier-config:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
      - name: companyRole
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/CompanyRole'
        example: ORG
    put:
      tags:
        - Company Tier
      summary: Updates Tier config
      description: This endpoint stores Tier config for the company at TMC level.
      operationId: updateCompanyTierConfig
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/TierConfig'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    get:
      tags:
        - Company Tier
      summary: Get tier config
      description: This endpoint fetches the tier config for the company.
      operationId: getCompanyTierConfig
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TierConfig'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/stealth-config:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
      - name: companyRole
        in: query
        required: false
        schema:
          $ref: '#/components/schemas/CompanyRole'
        example: ORG
    put:
      tags:
        - Stealth Config
      summary: Updates Stealth config
      description: This endpoint stores Stealth config for the company.
      operationId: updateCompanyStealthConfig
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StealthConfig'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    get:
      tags:
        - Stealth Config
      summary: Get stealth config
      description: This endpoint fetches the stealth config for the company.
      operationId: getCompanyStealthConfig
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/StealthConfig'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/vendor-preferences:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
        - Companies
      summary: Upload company vendor preferences csv file
      operationId: uploadCompanyPreferences
      requestBody:
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/UploadCompanyVendorPreferencesRequest'
      responses:
        '200':
          description: OK
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v2/companies/{companyId}/preference-tiers:
    parameters:
      - name: companyId
        in: path
        description: Identifier for company.
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    put:
      tags:
        - Companies
      summary: Store tier levels with labels
      description: This endpoint store the tiers with respective label for a company.
      operationId: storePreferenceTiers
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/StorePreferenceTiersRequest'
      responses:
        '200':
          description: OK
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
    get:
      tags:
        - Companies
      summary: Read company preference tiers
      description: Read all preference tiers with respective label for a company.
      operationId: listPreferenceTiers
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListPreferenceTiersResponse'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
  /v3/tenant-encryption/{companyId}/key:
    parameters:
      - name: companyId
        in: path
        description: Tenant (company) identifier
        required: true
        schema:
          type: string
          format: uuid
        example: 4974a66b-7493-4f41-908c-58ba81093947
    post:
      tags:
        - Tenant Encryption
      summary: Create or rotate tenant CMK
      description: |
        First call provisions a Spotnana-managed CMK and DEK.
        Subsequent calls rotate the CMK and re-wrap the existing DEK.
        Returns 429 if called within the one-hour cooldown window.
        Requires the COMPANY_MANAGEMENT WRITE permission on the company.
      operationId: provisionOrRotateTenantKey
      responses:
        '200':
          description: Key provisioned or rotated
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProvisionOrRotateTenantKeyResponse'
              example:
                configId: 4974a66b-7493-4f41-908c-58ba81093947
                created: true
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '429':
          description: Key rotation cooldown not elapsed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
