---
title: "Create policy"
method: POST
path: "/v2/companies/{companyId}/policies"
tags: ["Company Policies"]
---

# Create policy

`POST /v2/companies/{companyId}/policies`

## Request

- Base URL: `https://api-ext-sboxmeta.partners.spotnana.com`
- URL: `https://api-ext-sboxmeta.partners.spotnana.com/v2/companies/{companyId}/policies`
- Auth: HTTP bearer

This endpoint creates a policy.

## Request body

- CreatePolicyRequest: Request containing details of policy to be created.
  - `name` string, required: Name of the policy.
  - `type` 'DEFAULT' | 'GROUP' | 'INTERNAL', required: Policy type.
  - `parentPolicyId` string, uuid: Policy to inherit the values of linked rules. If empty, consider the company default policy.
  - `currency` union, required: Currency for the policy.
    - CurrencyCodeWrapper
      - `currencyCode` string: iso code of the currency.
    - IsLinkedWrapper
      - `isLinked` boolean: If the value has to be taken from default policy.
  - `inPolicyApprovalInfo` PolicyApprovalInfo
    - `approvalProcessType` 'NONE' | 'SOFT_APPROVAL' | 'HARD_APPROVAL' | 'PASSIVE_APPROVAL' | 'PREVENT_BOOKING' | 'PRE_APPROVAL', required
    - `designatedApprovers` UserId[]: List of designated approvers.
      - `id` string, uuid, required
    - `isManagerApprover` boolean
    - `isEmployeeLevelDesignatedApprover` boolean: Indicate whether the policy is approved by employee level designated approver or not.
    - `shouldNotifyManager` boolean: Indicate whether approval emails should be cc'ed to manager or not.
    - `travelTypes` string[]: List of travel types for which this ApprovalInfo is applicable.
    - `approvalConditions` ApprovalCondition[]: List of approval conditions. OR operator is applied between the approval conditions.
      - `rules` ApprovalRule[]
        - `travelRegionRule` TravelRegionRule: Rule to evaluate travel region, INTERNATIONAL or DOMESTIC.
          - `travelRegionType` 'DOMESTIC' | 'INTERNATIONAL': Travel region Type
    - `defaultApprovers` UserId[]: List of designated default approvers.
      - `id` string, uuid, required
  - `outOfPolicyApprovalInfo` PolicyApprovalInfo
    - `approvalProcessType` 'NONE' | 'SOFT_APPROVAL' | 'HARD_APPROVAL' | 'PASSIVE_APPROVAL' | 'PREVENT_BOOKING' | 'PRE_APPROVAL', required
    - `designatedApprovers` UserId[]: List of designated approvers.
      - `id` string, uuid, required
    - `isManagerApprover` boolean
    - `isEmployeeLevelDesignatedApprover` boolean: Indicate whether the policy is approved by employee level designated approver or not.
    - `shouldNotifyManager` boolean: Indicate whether approval emails should be cc'ed to manager or not.
    - `travelTypes` string[]: List of travel types for which this ApprovalInfo is applicable.
    - `approvalConditions` ApprovalCondition[]: List of approval conditions. OR operator is applied between the approval conditions.
      - `rules` ApprovalRule[]
        - `travelRegionRule` TravelRegionRule: Rule to evaluate travel region, INTERNATIONAL or DOMESTIC.
          - `travelRegionType` 'DOMESTIC' | 'INTERNATIONAL': Travel region Type
    - `defaultApprovers` UserId[]: List of designated default approvers.
      - `id` string, uuid, required
  - `inPolicyApprovalInfos` PolicyApprovalInfo[]
    - `approvalProcessType` 'NONE' | 'SOFT_APPROVAL' | 'HARD_APPROVAL' | 'PASSIVE_APPROVAL' | 'PREVENT_BOOKING' | 'PRE_APPROVAL', required
    - `designatedApprovers` UserId[]: List of designated approvers.
      - `id` string, uuid, required
    - `isManagerApprover` boolean
    - `isEmployeeLevelDesignatedApprover` boolean: Indicate whether the policy is approved by employee level designated approver or not.
    - `shouldNotifyManager` boolean: Indicate whether approval emails should be cc'ed to manager or not.
    - `travelTypes` string[]: List of travel types for which this ApprovalInfo is applicable.
    - `approvalConditions` ApprovalCondition[]: List of approval conditions. OR operator is applied between the approval conditions.
      - `rules` ApprovalRule[]
        - `travelRegionRule` TravelRegionRule: Rule to evaluate travel region, INTERNATIONAL or DOMESTIC.
          - `travelRegionType` 'DOMESTIC' | 'INTERNATIONAL': Travel region Type
    - `defaultApprovers` UserId[]: List of designated default approvers.
      - `id` string, uuid, required
  - `outOfPolicyApprovalInfos` PolicyApprovalInfo[]
    - `approvalProcessType` 'NONE' | 'SOFT_APPROVAL' | 'HARD_APPROVAL' | 'PASSIVE_APPROVAL' | 'PREVENT_BOOKING' | 'PRE_APPROVAL', required
    - `designatedApprovers` UserId[]: List of designated approvers.
      - `id` string, uuid, required
    - `isManagerApprover` boolean
    - `isEmployeeLevelDesignatedApprover` boolean: Indicate whether the policy is approved by employee level designated approver or not.
    - `shouldNotifyManager` boolean: Indicate whether approval emails should be cc'ed to manager or not.
    - `travelTypes` string[]: List of travel types for which this ApprovalInfo is applicable.
    - `approvalConditions` ApprovalCondition[]: List of approval conditions. OR operator is applied between the approval conditions.
      - `rules` ApprovalRule[]
        - `travelRegionRule` TravelRegionRule: Rule to evaluate travel region, INTERNATIONAL or DOMESTIC.
          - `travelRegionType` 'DOMESTIC' | 'INTERNATIONAL': Travel region Type
    - `defaultApprovers` UserId[]: List of designated default approvers.
      - `id` string, uuid, required
  - `outOfPolicyAgentApprovalInfos` PolicyApprovalInfo[]
    - `approvalProcessType` 'NONE' | 'SOFT_APPROVAL' | 'HARD_APPROVAL' | 'PASSIVE_APPROVAL' | 'PREVENT_BOOKING' | 'PRE_APPROVAL', required
    - `designatedApprovers` UserId[]: List of designated approvers.
      - `id` string, uuid, required
    - `isManagerApprover` boolean
    - `isEmployeeLevelDesignatedApprover` boolean: Indicate whether the policy is approved by employee level designated approver or not.
    - `shouldNotifyManager` boolean: Indicate whether approval emails should be cc'ed to manager or not.
    - `travelTypes` string[]: List of travel types for which this ApprovalInfo is applicable.
    - `approvalConditions` ApprovalCondition[]: List of approval conditions. OR operator is applied between the approval conditions.
      - `rules` ApprovalRule[]
        - `travelRegionRule` TravelRegionRule: Rule to evaluate travel region, INTERNATIONAL or DOMESTIC.
          - `travelRegionType` 'DOMESTIC' | 'INTERNATIONAL': Travel region Type
    - `defaultApprovers` UserId[]: List of designated default approvers.
      - `id` string, uuid, required
  - `enableAgentActionOverride` boolean: True if agent can override the PREVENT_BOOKING action. If enabled, outOfPolicyAgentApprovalInfos for all travel types should be provided.
  - `userGroups` UserGroup[], required
    - `userIds` UserId[]
      - `id` string, uuid, required
    - `legalEntityIds` EntityId[]
      - `id` string, uuid, required
    - `officeIds` EntityId[]
      - `id` string, uuid, required
    - `departments` string[]: List of department ids.
    - `costCenters` string[]: List of cost center ids.
    - `grades` string[]: List of grade ids.
    - `positionTitles` string[]
    - `personas` Persona[]
    - `customFieldIds` CustomFieldId[]
      - `type` 'QUESTION' | 'MEETING' | 'BUDGET' | 'BREX_TOKEN', required: The type of custom field.
      - `externalId` string, required: Meeting id or budget id based on custom field type.
    - `countryCodes` string[]
    - `workerTypes` WorkerType[]
    - `accountingCodes` string[]
  - `commonPolicyRules` CommonPolicyRules: Details of policy that is common to all travel type.
    - `restrictedContinents` union: Details containing about the continent restrictions or use default policy restrictions.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `continentProps` ContinentProps: List of continent with their type of restriction.
          - `restrictions` ContinentRestriction[], required
            - `type` 'BLOCK_TRAVEL_TO_CONTINENT' | 'ALLOW_WITHIN_CONTINENT', required
            - `continentCode` string, required: 2-letter continent code.
    - `restrictedCountries` union: Details containing country related restrictions or use default policy restrictions.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `countryProps` CountryProps: List of country related restrictions.
          - `restrictions` CountryRestriction[], required
            - `type` 'BLOCK_TRAVEL_TO_COUNTRY' | 'ALLOW_WITHIN_COUNTRY', required
            - `countryCode` string, required: ISO 2-letter country code.
  - `carPolicyRules` CarPolicyRules: Details of rules related to car.
    - `maxCarPricePerNumberOfDays` union: Car rule to describe whether to use default policy rules or list of rules for max price for given number of days.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `maxCarPricePerNumberOfDaysProps` MaxCarPricePerNumberOfDaysProps: Max price for given number days for a car booking.
          - `maxPrice` SimpleMoney, required: Money object containing just amount and currency code.
            - `amount` number, double, required: Amount
            - `currencyCode` string, required: The 3-letter currency code defined in ISO 4217.
          - `isTaxIncluded` boolean
    - `allowedCarTypes` union: Car rule to describe whether to use default policy rule or use different set of allowed car types for booking.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `allowedCarTypesProps` AllowedCarTypesProps: List of allowed car types.
          - `carTypes` CarType[], required
  - `hotelPolicyRules` HotelPolicyRules: Details of rules related to hotel.
    - `restrictedHotels` union: Hotel rule to describe whether to use default policy rule or a different set of restricted hotels.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `hotelCodesProps` HotelCodesProps: List of hotel codes.
          - `hotelCodes` string[], required
    - `maxHotelPriceByLocation` union: Hotel Rule to describe whether to use default policy rule or different set of rules for max booking price for different locations.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `maxHotelPriceByLocationProps` MaxHotelPriceByLocationProps: List of max price of a hotel booking in a location.
          - `maxDefaultPrice` SimpleMoney: Money object containing just amount and currency code.
            - `amount` number, double, required: Amount
            - `currencyCode` string, required: The 3-letter currency code defined in ISO 4217.
          - `isTaxIncluded` boolean
          - `maxPricePerLocationList` MaxPriceInLocation[], required
            - `maxPrice` SimpleMoney, required: Money object containing just amount and currency code.
              - …
            - `address` PostalAddress, required: Postal Address Details
              - …
            - `isTaxIncluded` boolean
    - `hotelAdvanceBookingWindow` union: Hotel rule to describe whether to use default policy or different rule for advance booking.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `hotelAdvanceBookingWindowProps` HotelAdvanceBookingWindowProps: Number of advance days for a hotel booking.
          - `numDaysInAdvance` integer, required
    - `hotelCancellation` union: Hotel rule to describe whether to use default policy or allow booking of any specific type of cancellation.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `hotelCancellationProps` HotelCancellationProps: Different types of cancellation rules for hotel booking.
          - `type` 'NONE' | 'REFUNDABLE' | 'REFUNDABLE_WITH_PENALTY' | 'DONT_ALLOW', required
          - `conditionalRefundability` ConditionalRefundability: Configuration for time-based exceptions to hotel refundability or cancellation policy rules. When enabled, otherwise restricted hotel rates may be allowed if booking occurs within the configured window before check-in.
            - `enableGracePeriodLogic` boolean: When true, applies the configured booking-window exception.
            - `allowedBookingWindowHours` integer: Number of hours before check-in during which the exception applies. Only evaluated when enableGracePeriodLogic is true.
    - `hotelChainCodes` union: Hotel rule to describe whether to use default policy or use a different set of allowed hotel chain codes.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `hotelChainCodesProps` HotelChainCodesProps: List of hotel chain codes.
          - `hotelChainCodes` string[], required
    - `hotelStarRating` union: Hotel rule to describe whether to use default policy rule or use the specific range of star rated hotels.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
        - `approvalProcessType` 'NONE' | 'SOFT_APPROVAL' | 'HARD_APPROVAL' | 'PASSIVE_APPROVAL' | 'PREVENT_BOOKING' | 'PRE_APPROVAL': Out of policy action to take when hotel star rating rule is violated.
      - object
        - `hotelStarRatingProps` HotelStarRatingProps: Range of hotel star ratings with optional major chain exemptions.
          - `ratingRange` DoubleRange, required
            - `min` number, double: Minimum value - inclusive.
            - `max` number, double: Maximum value - inclusive.
          - `majorChainRatingRange` DoubleRange
            - `min` number, double: Minimum value - inclusive.
            - `max` number, double: Maximum value - inclusive.
          - `enableMajorChainExemptions` boolean: Master toggle for major chain exemptions. When false, all major chain exemption ranges are ignored.
          - `ratingRangeByLocation` LocationStarRating[]: Location-specific star rating overrides. More specific locations take precedence (City > Country > Region).
            - `ratingRange` DoubleRange, required
              - …
            - `address` PostalAddress, required: Postal Address Details
              - …
            - `majorChainRatingRange` DoubleRange
              - …
            - `enableMajorChainExemption` boolean: Per-location toggle for major chain exemption.
        - `approvalProcessType` 'NONE' | 'SOFT_APPROVAL' | 'HARD_APPROVAL' | 'PASSIVE_APPROVAL' | 'PREVENT_BOOKING' | 'PRE_APPROVAL': Out of policy action to take when hotel star rating rule is violated.
    - `hotelMedianRateNightly` union: Defines the attributes/filters used to identify candidate hotels for calculating the median nightly rate in hotel search. The calculated median rate serves as the reference value for MaxHotelBookingPriceProps when enforcing price limits.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `hotelMedianRateProps` HotelMedianRateProps: Props for hotel median rate calculation.
          - `searchRadius` Length, required: Specifies the length or a distance.
            - `length` number, double, required: Distance from search point.
            - `unit` 'UNKNOWN_UNIT' | 'KM' | 'MILE' | 'CENTIMETER' | 'METER', required: Unit of measure being applied.
          - `ratingRange` DoubleRange, required
            - `min` number, double: Minimum value - inclusive.
            - `max` number, double: Maximum value - inclusive.
          - `hideRateStatistics` boolean: If true, rate statistics will be hidden.
          - `prepaidQualifier` 'INCLUDE_PREPAID' | 'EXCLUDE_PREPAID' | 'PREPAID_ONLY': Filter for prepaid rates to include in median calculation.
          - `refundableOnly` boolean: If true, only refundable rates will be included in median calculation.
          - `statisticalMethod` 'MEDIAN' | 'MEAN': Statistical method used to calculate the recommended maximum hotel rate. Defaults to MEDIAN. Buffer and statistical method can be adjusted per policy.
          - `preferredPropertiesRateStatsLimit` PreferredPropertiesRateStatsLimit: Configures limiting hotel rate statistics to preferred properties. The enable flag and minimum threshold are evaluated together; when enabled, calculation falls back to all properties if the minimum is not met.
            - `limitCalculationToPreferredProperties` boolean: When enabled, rate statistics are calculated using preferred properties only.
            - `minimumPreferredPropertiesRequired` integer: Minimum preferred properties required before limiting calculation to preferred properties. Must be greater than 0 when enabled.
    - `hotelCentralTierExemption` union: Central tier exemption configuration for hotel rules. Configures which hotel preference tiers bypass individual policy rules. Properties in selected tiers are considered in-policy regardless of the rule configuration.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `hotelCentralTierExemptionProps` union: Props for hotel central tier exemption. Choose one exemption mode.
          - object
            - `allRulesAllTiers` boolean: When true, all preference tiers are exempted for all hotel rules.
          - object
            - `ruleTierExemptionConfig` RuleTierExemptionConfig: Per-rule tier exemption configuration with defaults.
              - …
  - `airPolicyRules` AirPolicyRules: Details of rules related to air.
    - `restrictedAirlines` union: Air rule to describe whether to use default policy or use the specific set of airlines that are restricted.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `restrictedAirlinesProps` RestrictedAirlinesProps: List of IATA Airline code.
          - `airlineCodes` string[], required
    - `restrictedAirCrafts` union: Air rule to describe whether to use default policy or use the specific set of air crafts that are restricted.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `restrictedAirCraftsProps` RestrictedAirCraftsProps: List of IATA Aircraft code.
          - `airCraftCodes` string[], required
    - `maxFlightBookingPriceByDuration` union: Air rule to describe whether to use default policy or different set of max booking price for different flight durations.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `maxFlightBookingPriceByDurationProps` MaxFlightBookingPriceByDurationProps: List of max price of flight booking for different flight duration.
          - `maxPricePerDurationList` MaxFlightPricePerDuration[], required
            - `maxPrice` SimpleMoney, required: Money object containing just amount and currency code.
              - …
            - `durationRange` Int32Range, required
              - …
          - `isTaxIncluded` boolean
    - `flightCabinUpgrade` union: Air rule to describe whether to use default policy or specific rules regarding flight cabin upgrade.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `flightCabinUpgradeProps` FlightCabinUpgradeProps: Details whether flight cabin upgrade is allowed or not if cheaper.
          - `isAllowed` boolean, required
    - `flightAdvanceBookingWindow` union: Air rule to describe whether to use default policy or a different advance booking window for a flight.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `flightAdvanceBookingWindowProps` FlightAdvanceBookingWindowProps: Number of days in advance one can book a flight.
          - `numDaysInAdvance` integer, required
    - `flightTicketsRefundable` union: Air rule to describe whether to use default policy or different rule regarding refundable flight tickets.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
        - `approvalProcessType` 'NONE' | 'SOFT_APPROVAL' | 'HARD_APPROVAL' | 'PASSIVE_APPROVAL' | 'PREVENT_BOOKING' | 'PRE_APPROVAL': Out of policy action to take when a rule is violated.
      - object
        - `flightTicketsRefundableProps` FlightTicketsRefundableProps: Different type of refund policy allowed for flight ticket booking.
          - `type` 'NONE' | 'REFUNDABLE' | 'REFUNDABLE_WITH_PENALTY' | 'DONT_ALLOW', required
          - `types` string[]: List of allowed refundability types for flight ticket booking.
          - `maxCancellationFee` SimpleMoney: Money object containing just amount and currency code.
            - `amount` number, double, required: Amount
            - `currencyCode` string, required: The 3-letter currency code defined in ISO 4217.
        - `approvalProcessType` 'NONE' | 'SOFT_APPROVAL' | 'HARD_APPROVAL' | 'PASSIVE_APPROVAL' | 'PREVENT_BOOKING' | 'PRE_APPROVAL': Out of policy action to take when a rule is violated.
    - `flightTicketsChangeable` union: Air rule to describe whether to use default policy or different rule regarding flight tickets exchange.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
        - `approvalProcessType` 'NONE' | 'SOFT_APPROVAL' | 'HARD_APPROVAL' | 'PASSIVE_APPROVAL' | 'PREVENT_BOOKING' | 'PRE_APPROVAL': Out of policy action to take when a rule is violated.
      - object
        - `flightTicketsChangeableProps` FlightTicketsChangeableProps: Different type of ticket exchange policy allowed for flight ticket booking.
          - `type` 'NONE' | 'CHANGEABLE' | 'CHANGEABLE_WITH_PENALTY' | 'DONT_ALLOW', required
          - `types` string[]: List of allowed changeability types for flight ticket booking.
          - `maxChangeFee` SimpleMoney: Money object containing just amount and currency code.
            - `amount` number, double, required: Amount
            - `currencyCode` string, required: The 3-letter currency code defined in ISO 4217.
        - `approvalProcessType` 'NONE' | 'SOFT_APPROVAL' | 'HARD_APPROVAL' | 'PASSIVE_APPROVAL' | 'PREVENT_BOOKING' | 'PRE_APPROVAL': Out of policy action to take when a rule is violated.
    - `highestFlightCabinByDurationDomestic` union: Air rule to describe whether to use default policy or different set of rules for cabin based on flight duration.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `highestFlightCabinByDurationProps` HighestFlightCabinByDurationProps: List of highest cabin that can be booked for different flight durations.
          - `highestCabinForDurationList` HighestCabinForDuration[], required
            - `cabin` 'UNKNOWN_CABIN' | 'ECONOMY' | 'PREMIUM_ECONOMY' | 'BUSINESS' | 'FIRST', required: Flight cabin
            - `durationRange` Int32Range, required
              - …
    - `highestFlightCabinByDurationInternational` union: Air rule to describe whether to use default policy or different set of rules for cabin based on flight duration.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `highestFlightCabinByDurationProps` HighestFlightCabinByDurationProps: List of highest cabin that can be booked for different flight durations.
          - `highestCabinForDurationList` HighestCabinForDuration[], required
            - `cabin` 'UNKNOWN_CABIN' | 'ECONOMY' | 'PREMIUM_ECONOMY' | 'BUSINESS' | 'FIRST', required: Flight cabin
            - `durationRange` Int32Range, required
              - …
    - `highestFlightCabinOvernight` union: Air rule to describe whether to use default policy or different cabin rule for overnight flight.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `highestFlightCabinOvernightProps` HighestFlightCabinOvernightProps: Highest cabin that can be booked for overnight flight.
          - `cabin` 'UNKNOWN_CABIN' | 'ECONOMY' | 'PREMIUM_ECONOMY' | 'BUSINESS' | 'FIRST', required: Flight cabin
          - `overnightTimeParams` OvernightTimeParams: This defines what is considered as overnight.
            - `nightTimeStart` TimeLocal, required: ISO8601 Local Time
              - …
            - `nightTimeEnd` TimeLocal, required: ISO8601 Local Time
              - …
            - `includeLayover` boolean, required: Whether layover time should be included in the overnight time.
            - `nightTimeOverlapMinutes` integer, required: The minimum night flight time needed to qualify as an overnight flight.
    - `differenceBetweenFlightFareAndMedianFare` union: Air rule to describe whether to use default policy or different rule for difference between a flight fare and median fare of the flights for a destination. Note: Median fare was calculated based on number of stops, cabin class and flight duration.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `differenceBetweenFlightFareAndMedianFareProps` DifferenceBetweenFlightFareAndMedianFareProps: Allowed difference between flight's total fare and median fare for all flights for that destination.
          - `percentage` integer, required: Percentage difference between flight's total fare and median fare for all flights for that destination.
    - `co2EmissionPerPassengerPerKm` union: Air rule to describe whether to use default policy or different rule regarding CO2 emission.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `co2EmissionPerPassengerPerKmProps` Co2EmissionPerPassengerPerKmProps: Maximum allowed Co2 emission (in grams) per passenger per flight distance covered (in Kms).
          - `emission` number, double, required
    - `maxFlightBookingPriceInternational` union: Max allowed flight booking price for that selected cabin.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `maxFlightBookingPriceProps` MaxFlightBookingPriceProps: Air rule to describing how the maximum allowed flight price will be calculated and set for policy.
          - `type` 'MINIMUM' | 'MEDIAN' | 'LOWEST_LOGICAL_FARE', required
          - `sign` 'MORE' | 'LESS', required
          - `difference` union, required
            - object
              - …
            - object: Number expressed as a fraction of 100.
              - …
          - `isTaxIncluded` boolean
    - `maxFlightBookingPriceDomestic` union: Max allowed flight booking price for that selected cabin.
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `maxFlightBookingPriceProps` MaxFlightBookingPriceProps: Air rule to describing how the maximum allowed flight price will be calculated and set for policy.
          - `type` 'MINIMUM' | 'MEDIAN' | 'LOWEST_LOGICAL_FARE', required
          - `sign` 'MORE' | 'LESS', required
          - `difference` union, required
            - object
              - …
            - object: Number expressed as a fraction of 100.
              - …
          - `isTaxIncluded` boolean
    - `lowestLogicalFare` union
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `props` LowestLogicalFareProps: Properties which will be used to filter candidates for a given flight in order to calculate lowest possible fare for the group.
          - `flightTimeWindowInHoursDomestic` integer: Time window (in hours) applied at both departure and arrival to get time bounds of candidate flights for domestic travel.
          - `flightTimeWindowInHoursInternational` integer: Time window (in hours) applied at both departure and arrival to get time bounds of candidate flights for international travel.
          - `maxLayoverDurationInHoursDomestic` integer: Maximum layover duration (in hours) possible for candidate flights for domestic travel.
          - `maxLayoverDurationInHoursInternational` integer: Maximum layover duration (in hours) possible for candidate flights for international travel.
          - `maxLayoverDurationMinutesDomestic` integer: Maximum layover duration (in minutes) possible for candidate flights for domestic travel.
          - `maxLayoverDurationMinutesInternational` integer: Maximum layover duration (in minutes) possible for candidate flights for international travel.
          - `flightTimeWindowMinutesDomestic` integer: Time window (in minutes) applied at both departure and arrival to get time bounds of candidate flights for domestic travel.
          - `flightTimeWindowMinutesInternational` integer: Time window (in minutes) applied at both departure and arrival to get time bounds of candidate flights for international travel.
          - `maxNumberOfStops` 'ANY' | 'ONE_OR_LESS' | 'TWO_OR_LESS' | 'FEWEST': Maximum number of stops possible in a leg to be for it to be considered as a valid llf candidate.
          - `airportConnectionChanges` 'NOT_ALLOWED': Is more than one distinct airport possible in a leg.
          - `rejectMixCabinFlights` boolean: When true, reject flights with mixed cabin classes from LLF candidates.
          - `sameFlightOnlyDomestic` boolean: When true, LLF candidates are restricted to the traveler's exact selected flight (matched by marketing flight number) instead of a time-window search for domestic travel.
          - `sameFlightOnlyInternational` boolean: When true, LLF candidates are restricted to the traveler's exact selected flight (matched by marketing flight number) instead of a time-window search for international travel.
          - `carrier` object: Carriers which may be excluded / included for llf calculation.
            - `type` 'PREFERRED' | 'EXCLUDE': Whether to include / exclude carriers.
            - `airlines` string[]: List of airline codes.
  - `isRestrictive` boolean: True if policy is a restrictive policy.
  - `rules` UniversalRule[]: A list of general policy rules for all travel types air, hotel, car and rail.
    - `ruleType` 'BASIC_ECONOMY_FARES_DOMESTIC' | 'BASIC_ECONOMY_FARES_INTERNATIONAL' | 'CABIN_CLASS_NOT_ALLOWED_DOMESTIC' | 'CABIN_CLASS_NOT_ALLOWED_INTERNATIONAL' | 'HOTEL_RATE_CONDITIONS_NOT_ALLOWED' | 'CAR_TYPES_NOT_ALLOWED' | 'RAIL_ADVANCE_BOOKING_WINDOW' | 'MAX_RAIL_BOOKING_PRICE_BY_DURATION' | 'HIGHEST_RAIL_TRAVEL_CLASS_BY_DURATION' | 'RAIL_TICKETS_REFUNDABLE' | 'HOTEL_RESTRICTED_KEYWORDS' | 'FLIGHT_ADVANCE_BOOKING_WINDOW_DOMESTIC' | 'FLIGHT_ADVANCE_BOOKING_WINDOW_INTERNATIONAL' | 'ALLOWED_AIR_ADDONS' | 'MAX_HOTEL_BOOKING_PRICE' | 'CAR_ENGINE_TYPES_NOT_ALLOWED' | 'LOWEST_FARE_PER_HOTEL_PROPERTY' | 'AIR_RESTRICTED_FARES' | 'RESTRICT_AIRPORT_TRANSFERS' | 'HOTEL_LPR_FILTER' | 'HOTEL_PROPERTY_TYPE' | 'LIMO_TYPES_NOT_ALLOWED' | 'AIR_ANCILLARY', required: Policy Rule type.
    - `action` Action
      - `preventBooking` PreventBooking: Whether to allow booking if a rule is violated.
        - `prevent` boolean
        - `reason` string
    - `policyValue` union
      - object
        - `isLinked` boolean: If the value has to be taken from default policy.
      - object
        - `universalProps` union: Universal Props.
          - object
            - `cabinClassNotAllowedDomesticProps` CabinClassNotAllowedDomesticProps: List of cabins which should not be allowed.
              - …
          - object
            - `cabinClassNotAllowedInternationalProps` CabinClassNotAllowedInternationalProps: List of cabins which should not be allowed.
              - …
          - object
            - `carTypesNotAllowedProps` CarTypesNotAllowedProps: List of allowed car types.
              - …
          - object
            - `carEngineTypesNotAllowedProps` CarEngineTypesNotAllowedProps: List of car engine types.
              - …
          - object
            - `hotelRateConditionsNotAllowedProps` HotelRateConditionsNotAllowedProps: List of cancellation types and payment options which should not be allowed.
              - …
          - object
            - `railAdvanceBookingWindowProps` RailAdvanceBookingWindowProps: Number of days in advance one can book a Rail ticket.
              - …
          - object
            - `maxRailBookingPriceByDurationProps` MaxRailBookingPriceByDurationProps: List of max price of rail booking for different rail duration.
              - …
          - object
            - `railTicketsRefundableProps` RailTicketsRefundableProps: Different type of refund policy allowed for rail ticket booking.
              - …
          - object
            - `highestRailTravelClassByDurationProps` HighestRailTravelClassByDurationProps: List of highest travel class that can be booked for different rail durations.
              - …
          - object
            - `hotelRestrictedKeywordsProps` HotelRestrictedKeywordsProps: List of keywords that should not be allowed in hotel name/description.
              - …
          - object
            - `flightAdvanceBookingWindowDomesticProps` FlightAdvanceBookingWindowDomesticProps: Number of days in advance one can book a domestic flight.
              - …
          - object
            - `flightAdvanceBookingWindowInternationalProps` FlightAdvanceBookingWindowInternationalProps: Number of days in advance one can book an international flight.
              - …
          - object
            - `allowedAirAddonsProps` AllowedAirAddonsProps: Add-ons which can be booked on a central card as part of an air reservation.
              - …
          - object
            - `maxHotelBookingPriceProps` MaxHotelBookingPriceProps: Defines the maximum allowed hotel booking price relative to the median nightly rate calculated using HotelMedianRate. This rule enforces whether a booking can exceed or must remain below the median rate by a configured difference value.
              - …
          - object
            - `lowestFarePerHotelPropertyProps` LowestFarePerHotelPropertyProps: Props for lowest fare per hotel property rule.
              - …
          - object
            - `airRestrictedFaresProps` AirRestrictedFaresProps: Airline fare restrictions.
              - …
          - object
            - `restrictAirportTransfersProps` RestrictAirportTransfersProps: Restrict airport transfers configuration.
              - …
          - object
            - `hotelLprFilterProps` union: Properties for LPR filter configuration.
              - …
          - object
            - `hotelPropertyTypeProps` HotelPropertyTypeProps: Properties for hotel property type restriction rule.
              - …
          - object
            - `limoTypesNotAllowedProps` LimoTypesNotAllowedProps: Properties for restricting limo car types.
              - …
          - object
            - `airAncillaryProps` AirAncillaryProps: Properties for allowing or denying specific air ancillaries.
              - …
  - `airOopReasonCodes` union: OOP reason codes value. Either linked to default policy or actual values.
    - object
      - `props` OopReasonCodesProps: Out of policy reason codes.
        - `reasonCodes` OopReasonCodeUde[]
          - `entityId` string
          - `displayInfo` string: Question display name that the user will see. For eg, 'Choose the purpose of your trip'.
          - `questionFormat` 'INPUT_BOX' | 'RADIO_BUTTON' | 'CHECKBOX' | 'CHECKBOX_WITH_PERCENTAGE': Question types. INPUT_BOX will make user enter a free flowing text. RADIO_BUTTON will have multiple options, user can select only one. CHECKBOX questions contain the possible set of options, from which the user can choose multiple options. CHECKBOX_WITH_PERCENTAGE is similar to checkbox, with the difference being that each option having an additional input field whose values must add up to 100.
          - `options` Option[]: List of potential options for any question. Options will be present if the question type provides options to select.
            - `displayCode` string, required: The code which is sent in answer response.
            - `displayValue` string: The text to be displayed to the user beside this option.
          - `isRequired` boolean: Whether its compulsory to answer the question or not.
          - `isDisabled` boolean: Whether the question is disabled or not. If true, this should not be asked.
    - object
      - `isLinked` boolean: If the value has to be taken from default policy.
  - `hotelOopReasonCodes` union: OOP reason codes value. Either linked to default policy or actual values.
    - object
      - `props` OopReasonCodesProps: Out of policy reason codes.
        - `reasonCodes` OopReasonCodeUde[]
          - `entityId` string
          - `displayInfo` string: Question display name that the user will see. For eg, 'Choose the purpose of your trip'.
          - `questionFormat` 'INPUT_BOX' | 'RADIO_BUTTON' | 'CHECKBOX' | 'CHECKBOX_WITH_PERCENTAGE': Question types. INPUT_BOX will make user enter a free flowing text. RADIO_BUTTON will have multiple options, user can select only one. CHECKBOX questions contain the possible set of options, from which the user can choose multiple options. CHECKBOX_WITH_PERCENTAGE is similar to checkbox, with the difference being that each option having an additional input field whose values must add up to 100.
          - `options` Option[]: List of potential options for any question. Options will be present if the question type provides options to select.
            - `displayCode` string, required: The code which is sent in answer response.
            - `displayValue` string: The text to be displayed to the user beside this option.
          - `isRequired` boolean: Whether its compulsory to answer the question or not.
          - `isDisabled` boolean: Whether the question is disabled or not. If true, this should not be asked.
    - object
      - `isLinked` boolean: If the value has to be taken from default policy.
  - `carOopReasonCodes` union: OOP reason codes value. Either linked to default policy or actual values.
    - object
      - `props` OopReasonCodesProps: Out of policy reason codes.
        - `reasonCodes` OopReasonCodeUde[]
          - `entityId` string
          - `displayInfo` string: Question display name that the user will see. For eg, 'Choose the purpose of your trip'.
          - `questionFormat` 'INPUT_BOX' | 'RADIO_BUTTON' | 'CHECKBOX' | 'CHECKBOX_WITH_PERCENTAGE': Question types. INPUT_BOX will make user enter a free flowing text. RADIO_BUTTON will have multiple options, user can select only one. CHECKBOX questions contain the possible set of options, from which the user can choose multiple options. CHECKBOX_WITH_PERCENTAGE is similar to checkbox, with the difference being that each option having an additional input field whose values must add up to 100.
          - `options` Option[]: List of potential options for any question. Options will be present if the question type provides options to select.
            - `displayCode` string, required: The code which is sent in answer response.
            - `displayValue` string: The text to be displayed to the user beside this option.
          - `isRequired` boolean: Whether its compulsory to answer the question or not.
          - `isDisabled` boolean: Whether the question is disabled or not. If true, this should not be asked.
    - object
      - `isLinked` boolean: If the value has to be taken from default policy.
  - `railOopReasonCodes` union: OOP reason codes value. Either linked to default policy or actual values.
    - object
      - `props` OopReasonCodesProps: Out of policy reason codes.
        - `reasonCodes` OopReasonCodeUde[]
          - `entityId` string
          - `displayInfo` string: Question display name that the user will see. For eg, 'Choose the purpose of your trip'.
          - `questionFormat` 'INPUT_BOX' | 'RADIO_BUTTON' | 'CHECKBOX' | 'CHECKBOX_WITH_PERCENTAGE': Question types. INPUT_BOX will make user enter a free flowing text. RADIO_BUTTON will have multiple options, user can select only one. CHECKBOX questions contain the possible set of options, from which the user can choose multiple options. CHECKBOX_WITH_PERCENTAGE is similar to checkbox, with the difference being that each option having an additional input field whose values must add up to 100.
          - `options` Option[]: List of potential options for any question. Options will be present if the question type provides options to select.
            - `displayCode` string, required: The code which is sent in answer response.
            - `displayValue` string: The text to be displayed to the user beside this option.
          - `isRequired` boolean: Whether its compulsory to answer the question or not.
          - `isDisabled` boolean: Whether the question is disabled or not. If true, this should not be asked.
    - object
      - `isLinked` boolean: If the value has to be taken from default policy.
  - `category` 'EMPLOYEE' | 'GUEST': Category of the policy.

## Response `201`

Created

- EntityId: Identifier of an object
  - `id` string, uuid, required

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden

## Changes

- **2026-10-08** `acc1e7cac8c4`: 1 info
  - added the new `SIXT` enum value to the request property `rules/items/policyValue/oneOf[subschema #2: UniversalPropsWrapper]/universalProps/oneOf[subschema #21: AirAncillaryPropsWrapper]/airAncillaryProps/ancillaryWithConditions/items/notAllowedConditions/items/blockedThirdPartySources/items/`
- **2026-09-10** `40073a2635de`: 3 info
  - added the new optional request property `airPolicyRules/lowestLogicalFare/oneOf[subschema #2: LlfPropsWrapper]/props/rejectMixCabinFlights`
  - added the new optional request property `airPolicyRules/lowestLogicalFare/oneOf[subschema #2: LlfPropsWrapper]/props/sameFlightOnlyDomestic`
  - added the new optional request property `airPolicyRules/lowestLogicalFare/oneOf[subschema #2: LlfPropsWrapper]/props/sameFlightOnlyInternational`
- **2026-09-02** `b87a2518db7f`: 1 info
  - added the new `HILTON` enum value to the request property `rules/items/policyValue/oneOf[subschema #2: UniversalPropsWrapper]/universalProps/oneOf[subschema #21: AirAncillaryPropsWrapper]/airAncillaryProps/ancillaryWithConditions/items/notAllowedConditions/items/blockedThirdPartySources/items/`
- …earlier changes not shown

[Operation history](https://skmtc.dev/spotnana/apis/policy-api/changes/v2/companies/:companyId/policies/post.md)

---

[API](https://skmtc.dev/spotnana/apis/policy-api.md) - [All operations](https://skmtc.dev/spotnana/apis/policy-api/llms.txt) - [OpenAPI document](https://skmtc.dev/spotnana/apis/policy-api/revisions/acc1e7cac8c4?raw)
