{
  "openapi": "3.1.0",
  "info": {
    "title": "Custom Field API",
    "version": "v3"
  },
  "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": {
      "AdditionalInfo": {
        "type": "object",
        "title": "AdditionalInfo",
        "description": "Additional data need to be sent along with the custom field response.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "VARIABLE": "#/components/schemas/Variable",
            "EXPRESSION": "#/components/schemas/Expression"
          }
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/Variable"
          },
          {
            "$ref": "#/components/schemas/Expression"
          }
        ]
      },
      "AirItineraryContext": {
        "type": "object",
        "title": "AirItineraryContext",
        "description": "Air Itinerary Context",
        "required": [
          "itineraryType",
          "searchId",
          "rateOptionId"
        ],
        "properties": {
          "itineraryType": {
            "type": "string",
            "description": "Type of itinerary",
            "default": "AIR"
          },
          "searchId": {
            "type": "string",
            "description": "The search key related to booking"
          },
          "rateOptionId": {
            "type": "string",
            "description": "The 'id' of the selected itinerary in the air search response"
          }
        }
      },
      "AnyPolicyPredicate": {
        "type": "object",
        "title": "AnyViolationPredicate",
        "description": "Any policy.",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "example": "ANY_POLICY",
            "default": "ANY_POLICY"
          }
        }
      },
      "ApplicableCustomFieldV3": {
        "type": "object",
        "title": "ApplicableCustomFieldV3",
        "description": "Applicable Custom field.",
        "required": [
          "id",
          "name",
          "armId",
          "action"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Custom field id.",
            "readOnly": true
          },
          "name": {
            "type": "string",
            "description": "Name of this field to be viewed by the user and consumed by downstream service.\n",
            "example": "Air Reason Code"
          },
          "translatedName": {
            "type": "string",
            "description": "Name of this field to be viewed by the user, translated to their preferred language.\n",
            "example": "Air Reason Code"
          },
          "armId": {
            "type": "string",
            "format": "uuid",
            "description": "Arm id which is applicable.",
            "example": "f49d00fe-1eda-4304-ba79-a980f565281d"
          },
          "description": {
            "$ref": "#/components/schemas/DisplayText"
          },
          "includeLocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IncludeLocation"
            }
          },
          "action": {
            "description": "Action available for the custom field.",
            "$ref": "#/components/schemas/CustomFieldAction"
          }
        }
      },
      "Arm": {
        "type": "object",
        "title": "Arm",
        "description": "A set of audiences along with their corresponding action.",
        "required": [
          "action",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Arm id."
          },
          "name": {
            "type": "string",
            "description": "Name of the arm.",
            "example": "US Employee"
          },
          "audiences": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldAudience"
            },
            "default": []
          },
          "action": {
            "$ref": "#/components/schemas/CustomFieldAction"
          }
        }
      },
      "AutoOption": {
        "type": "object",
        "title": "AutoOption",
        "description": "An item representing a auto selectable code for a custom field.",
        "required": [
          "name",
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "example": "AUTO",
            "default": "AUTO"
          },
          "hidden": {
            "type": "boolean",
            "description": "Whether this code will be hidden to the user.",
            "example": true,
            "default": false
          },
          "description": {
            "type": "string",
            "description": "Description of the code.",
            "example": "Lower fare declined"
          },
          "name": {
            "type": "string",
            "description": "Code which represents the auto selected option for the custom field.",
            "example": "LD"
          },
          "additionalInfos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdditionalInfo"
            },
            "default": []
          }
        }
      },
      "BookingContext": {
        "type": "object",
        "title": "BookingContext",
        "description": "Booking context for given booking flow.",
        "required": [
          "tripId",
          "itinerary"
        ],
        "properties": {
          "tripId": {
            "type": "string",
            "description": "Identifier of the trip"
          },
          "itinerary": {
            "$ref": "#/components/schemas/ItineraryContext"
          },
          "bookingFlowType": {
            "$ref": "#/components/schemas/BookingFlowTypeV3"
          },
          "paymentSourceIds": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "pnrCreationProcessType": {
            "$ref": "#/components/schemas/CreatedVia",
            "default": "OBT"
          },
          "inlineQCFailureRules": {
            "description": "A list of failed inline QC rules",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/InlineQCFailureRule"
            }
          }
        }
      },
      "BookingFlowTypeV3": {
        "type": "string",
        "title": "BookingFlowType",
        "description": "Specifies the booking flow stage—such as creating, modifying, or canceling a booking.",
        "enum": [
          "NEW_BOOKING",
          "MODIFY_BOOKING",
          "CANCEL_BOOKING"
        ],
        "example": "NEW_BOOKING"
      },
      "BookingFlowTypeV3Predicate": {
        "type": "object",
        "title": "BookingFlowTypeV3Predicate",
        "description": "Compare the booking flow type with the values.",
        "required": [
          "type",
          "comparator",
          "bookingFlowTypes"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "BOOKING_FLOW_TYPE"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "bookingFlowTypes": {
            "type": "array",
            "description": "List of booking flow types to compare.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/BookingFlowTypeV3"
            }
          }
        }
      },
      "BookingInitiatorTypePredicate": {
        "type": "object",
        "title": "BookingInitiatorTypePredicate",
        "description": "Compare the initiator type of the order with the values.",
        "required": [
          "type",
          "comparator",
          "initiatorTypes"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "BOOKING_INITIATOR_TYPE"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "initiatorTypes": {
            "type": "array",
            "description": "List of initiator types to compare.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/InitiatorType"
            }
          }
        }
      },
      "BookingType": {
        "title": "BookingType",
        "description": "What type of travel booking it is.",
        "type": "string",
        "enum": [
          "AIR",
          "HOTEL",
          "CAR",
          "RAIL",
          "LIMO"
        ],
        "example": "AIR"
      },
      "BookingTypeV3Predicate": {
        "title": "BookingTypeV3Predicate",
        "type": "object",
        "description": "Compare the booking type of the order with the values.",
        "required": [
          "type",
          "comparator",
          "bookingTypes"
        ],
        "properties": {
          "type": {
            "type": "string",
            "example": "BOOKING_TYPE",
            "default": "BOOKING_TYPE"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "bookingTypes": {
            "type": "array",
            "description": "List of booking types to compare.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/BookingType"
            }
          }
        }
      },
      "BulkUploadResponse": {
        "type": "object",
        "title": "BulkUploadResponse",
        "description": "Response to file upload which includes the ID of the task set to process it",
        "required": [
          "taskId"
        ],
        "properties": {
          "taskId": {
            "description": "ID corresponding to the resulting upload task",
            "type": "string",
            "format": "uuid"
          }
        }
      },
      "CarItineraryContext": {
        "type": "object",
        "title": "CarItineraryContext",
        "description": "Car Itinerary Context",
        "required": [
          "itineraryType",
          "searchId",
          "carId"
        ],
        "properties": {
          "itineraryType": {
            "type": "string",
            "description": "Type of itinerary",
            "default": "CAR"
          },
          "searchId": {
            "type": "string",
            "description": "Search key related to the booking"
          },
          "carId": {
            "type": "string",
            "description": "Car ID of the selected car"
          }
        }
      },
      "City": {
        "type": "object",
        "title": "City",
        "description": "The city name and country.",
        "required": [
          "cityName",
          "countryCode",
          "administrativeDivCode"
        ],
        "properties": {
          "cityName": {
            "type": "string",
            "description": "The city name.",
            "example": "Palo Alto"
          },
          "administrativeDivCode": {
            "type": "string",
            "example": "CA"
          },
          "countryCode": {
            "type": "string",
            "description": "Two letter country code.",
            "example": "US"
          }
        }
      },
      "CompanyRole": {
        "type": "string",
        "description": "Role of the company.",
        "enum": [
          "ORG",
          "TMC",
          "PARTNER_TMC",
          "HR_FEED_CONNECTOR",
          "TRIPS_DATA_CONNECTOR",
          "GLOBAL"
        ],
        "example": "ORG"
      },
      "CostCenterPredicate": {
        "type": "object",
        "title": "CostCenterPredicate",
        "description": "Compare the cost center of the traveler with the values.",
        "required": [
          "type",
          "comparator",
          "costCenters"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "COST_CENTER"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "costCenters": {
            "type": "array",
            "description": "List of cost center Ids to compare.",
            "minItems": 1,
            "items": {
              "type": "string",
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426655440000"
            }
          }
        }
      },
      "CreateArmRequest": {
        "type": "object",
        "title": "CreateArmRequest",
        "description": "A set of audiences along with their corresponding action.",
        "required": [
          "action",
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the arm.",
            "example": "US Employee"
          },
          "audiences": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldAudience"
            },
            "default": []
          },
          "action": {
            "$ref": "#/components/schemas/CustomFieldActionCreateRequest"
          }
        }
      },
      "CreateArmResponse": {
        "type": "object",
        "title": "CreateArmResponse",
        "description": "Arm Id and option group id if option source of arm is manual",
        "required": [
          "armId"
        ],
        "properties": {
          "armId": {
            "type": "string",
            "format": "uuid",
            "description": "Arm id."
          },
          "optionGroupId": {
            "type": "string",
            "format": "uuid",
            "description": "Option group id if option source of arm is manual."
          }
        }
      },
      "CreateCustomFieldRequestV3": {
        "type": "object",
        "title": "CreateCustomFieldRequestV3",
        "description": "Request for creating a custom field.",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of this field to be viewed by the user and consumed by mid-office systems.",
            "example": "Air Reason Code"
          },
          "description": {
            "$ref": "#/components/schemas/DisplayText"
          },
          "includeLocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IncludeLocation"
            }
          },
          "managementTags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Tag"
            }
          },
          "respondOnlyOnceLevel": {
            "$ref": "#/components/schemas/RespondOnlyOnceLevel"
          }
        }
      },
      "CreatedVia": {
        "title": "CreatedViaEnum",
        "type": "string",
        "description": "Indicates the source of creation of PNR, like SHELL, OBT, etc.",
        "readOnly": true,
        "enum": [
          "OFFLINE",
          "OBT",
          "SHELL",
          "PASSIVE",
          "API"
        ]
      },
      "CustomFieldAction": {
        "type": "object",
        "title": "Action",
        "description": "An automatic or a user action to select one of the items as a response to the field.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "AUTO": "#/components/schemas/AutoOption",
            "USER": "#/components/schemas/UserOption"
          }
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/AutoOption"
          },
          {
            "$ref": "#/components/schemas/UserOption"
          }
        ]
      },
      "CustomFieldActionCreateRequest": {
        "type": "object",
        "title": "CustomFieldActionCreateRequest",
        "description": "An automatic or a user action to select one of the items as a response to the field.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "AUTO": "#/components/schemas/AutoOption",
            "USER": "#/components/schemas/UserOptionCreateRequest"
          }
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/AutoOption"
          },
          {
            "$ref": "#/components/schemas/UserOptionCreateRequest"
          }
        ]
      },
      "CustomFieldAudience": {
        "type": "object",
        "title": "Audience",
        "description": "A list of audiences for the custom field.",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Name of the audience.",
            "example": "US Employee"
          },
          "predicates": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldPredicate"
            },
            "default": []
          }
        }
      },
      "CustomFieldInfo": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CustomFieldV3"
          }
        ],
        "title": "CustomFieldInfo",
        "description": "Custom field info.",
        "required": [
          "definedAt",
          "createdAt"
        ],
        "properties": {
          "definedAt": {
            "$ref": "#/components/schemas/EntityLevel"
          },
          "enabled": {
            "type": "boolean",
            "default": false,
            "description": "Boolean to enable or disable custom field.",
            "example": true
          },
          "createdAt": {
            "$ref": "#/components/schemas/DateTimeOffset"
          },
          "parentInfos": {
            "type": "array",
            "description": "Custom field information of a parent.",
            "items": {
              "$ref": "#/components/schemas/Reference"
            }
          }
        }
      },
      "CustomFieldOptionSource": {
        "type": "object",
        "title": "CustomFieldOptionSource",
        "description": "Custom field option source.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "MANUAL": "#/components/schemas/CustomFieldV3ManualOptions",
            "PROFILE": "#/components/schemas/Profile"
          }
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/CustomFieldV3ManualOptions"
          },
          {
            "$ref": "#/components/schemas/Profile"
          }
        ]
      },
      "CustomFieldOptionSourceCreateRequest": {
        "type": "object",
        "title": "CustomFieldOptionSourceCreateRequest",
        "description": "Custom field option source.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "MANUAL": "#/components/schemas/CustomFieldV3ManualOptionsCreateRequest",
            "PROFILE": "#/components/schemas/Profile"
          }
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/CustomFieldV3ManualOptionsCreateRequest"
          },
          {
            "$ref": "#/components/schemas/Profile"
          }
        ]
      },
      "CustomFieldPredicate": {
        "type": "object",
        "title": "Predicate",
        "description": "One of the Predicates for the audience.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "BOOKING_TYPE": "#/components/schemas/BookingTypeV3Predicate",
            "BOOKING_INITIATOR_TYPE": "#/components/schemas/BookingInitiatorTypePredicate",
            "TRIP_USAGE_TYPE": "#/components/schemas/TripUsageTypePredicate",
            "TRAVEL_REGION_TYPE": "#/components/schemas/TravelRegionTypePredicate",
            "DESTINATION_COUNTRY": "#/components/schemas/DestinationCountryV3Predicate",
            "DESTINATION_CITY": "#/components/schemas/DestinationCityPredicate",
            "ORIGIN_CITY": "#/components/schemas/OriginCityPredicate",
            "ORIGIN_COUNTRY": "#/components/schemas/OriginCountryPredicate",
            "PREFERRED_VENDOR_TYPE": "#/components/schemas/PreferredVendorTypePredicate",
            "SEARCH_COUNTRY": "#/components/schemas/SearchCountryV3Predicate",
            "LEGAL_ENTITY": "#/components/schemas/LegalEntityV3Predicate",
            "DEPARTMENT": "#/components/schemas/DepartmentPredicate",
            "OFFICE": "#/components/schemas/OfficePredicate",
            "COST_CENTER": "#/components/schemas/CostCenterPredicate",
            "WORKER_TYPE": "#/components/schemas/WorkerTypeV3Predicate",
            "TRAVELER_LEGAL_ENTITY_COUNTRY": "#/components/schemas/TravelerLegalEntityCountryV3Predicate",
            "TRAVELER_PERSONA": "#/components/schemas/TravelerPersonaV3Predicate",
            "TRAVELER_COUNTRY": "#/components/schemas/TravelerCountryPredicate",
            "POLICY": "#/components/schemas/PolicyV3Predicate",
            "CUSTOM_FIELD_RESPONSE": "#/components/schemas/CustomFieldResponsePredicate",
            "BOOKING_FLOW_TYPE": "#/components/schemas/BookingFlowTypeV3Predicate",
            "PNR_CREATION_PROCESS_TYPE": "#/components/schemas/PnrCreationProcessTypePredicate",
            "POLICY_ACTION": "#/components/schemas/PolicyActionPredicate",
            "SELECTED_FARE": "#/components/schemas/SelectedFarePredicate",
            "PERSONAL_UPGRADE": "#/components/schemas/PersonalUpgradePredicate",
            "REPORTING_FOP_TYPE": "#/components/schemas/ReportingFopTypePredicate",
            "PNR_CREATION_REASON": "#/components/schemas/PnrCreationReasonPredicate",
            "INLINE_QC_RULE_PREDICATE": "#/components/schemas/InlineQCRulePredicate",
            "LLF_FARE": "#/components/schemas/LlfFarePredicate"
          }
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/BookingTypeV3Predicate"
          },
          {
            "$ref": "#/components/schemas/BookingInitiatorTypePredicate"
          },
          {
            "$ref": "#/components/schemas/TripUsageTypePredicate"
          },
          {
            "$ref": "#/components/schemas/TravelRegionTypePredicate"
          },
          {
            "$ref": "#/components/schemas/DestinationCountryV3Predicate"
          },
          {
            "$ref": "#/components/schemas/DestinationCityPredicate"
          },
          {
            "$ref": "#/components/schemas/OriginCityPredicate"
          },
          {
            "$ref": "#/components/schemas/OriginCountryPredicate"
          },
          {
            "$ref": "#/components/schemas/PreferredVendorTypePredicate"
          },
          {
            "$ref": "#/components/schemas/SearchCountryV3Predicate"
          },
          {
            "$ref": "#/components/schemas/LegalEntityV3Predicate"
          },
          {
            "$ref": "#/components/schemas/DepartmentPredicate"
          },
          {
            "$ref": "#/components/schemas/OfficePredicate"
          },
          {
            "$ref": "#/components/schemas/CostCenterPredicate"
          },
          {
            "$ref": "#/components/schemas/WorkerTypeV3Predicate"
          },
          {
            "$ref": "#/components/schemas/TravelerLegalEntityCountryV3Predicate"
          },
          {
            "$ref": "#/components/schemas/TravelerPersonaV3Predicate"
          },
          {
            "$ref": "#/components/schemas/TravelerCountryPredicate"
          },
          {
            "$ref": "#/components/schemas/PolicyV3Predicate"
          },
          {
            "$ref": "#/components/schemas/CustomFieldResponsePredicate"
          },
          {
            "$ref": "#/components/schemas/BookingFlowTypeV3Predicate"
          },
          {
            "$ref": "#/components/schemas/PnrCreationProcessTypePredicate"
          },
          {
            "$ref": "#/components/schemas/PolicyActionPredicate"
          },
          {
            "$ref": "#/components/schemas/SelectedFarePredicate"
          },
          {
            "$ref": "#/components/schemas/PersonalUpgradePredicate"
          },
          {
            "$ref": "#/components/schemas/ReportingFopTypePredicate"
          },
          {
            "$ref": "#/components/schemas/PnrCreationReasonPredicate"
          },
          {
            "$ref": "#/components/schemas/InlineQCRulePredicate"
          },
          {
            "$ref": "#/components/schemas/LlfFarePredicate"
          }
        ]
      },
      "CustomFieldResponsePredicate": {
        "type": "object",
        "title": "CustomFieldResponsePredicate",
        "description": "Compare the custom field responses with the values.",
        "required": [
          "type",
          "id",
          "comparator",
          "values"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "CUSTOM_FIELD_RESPONSE"
          },
          "id": {
            "type": "string",
            "format": "uuid"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "values": {
            "type": "array",
            "minItems": 1,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "CustomFieldResponsesContext": {
        "type": "object",
        "title": "CustomFieldResponsesContext",
        "description": "Custom field responses which are already responded and auto added.",
        "required": [
          "customFieldResponses"
        ],
        "properties": {
          "customFieldResponses": {
            "description": "A list of custom field responses, automated or user-entered.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldV3Response"
            }
          }
        }
      },
      "CustomFieldSelectedOption": {
        "type": "object",
        "title": "CustomFieldSelectedOption",
        "description": "Selected response for the custom field.",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Value of the selection"
          },
          "translatedName": {
            "type": "string",
            "description": "Translated value of the selection"
          },
          "description": {
            "type": "string",
            "description": "Description of the selection"
          },
          "translatedDescription": {
            "type": "string",
            "description": "Translated description of the selection"
          },
          "additionalUserInput": {
            "type": "string",
            "description": "Additional user input"
          },
          "additionalInfos": {
            "type": "array",
            "description": "Actual values of the additional infos",
            "items": {
              "type": "string"
            }
          },
          "additionalInfoConfigs": {
            "type": "array",
            "description": "Additional info configs for the selected option",
            "items": {
              "$ref": "#/components/schemas/AdditionalInfo"
            }
          }
        }
      },
      "CustomFieldV3": {
        "type": "object",
        "title": "CustomFieldV3",
        "description": "Custom field.",
        "required": [
          "id",
          "name"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Custom field id."
          },
          "name": {
            "type": "string",
            "description": "Name of this field to be viewed by the user and consumed by mid-office systems.",
            "example": "Air Reason Code"
          },
          "description": {
            "$ref": "#/components/schemas/DisplayText"
          },
          "includeLocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IncludeLocation"
            }
          },
          "managementTags": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Tag"
            }
          },
          "respondOnlyOnceLevel": {
            "$ref": "#/components/schemas/RespondOnlyOnceLevel"
          }
        }
      },
      "CustomFieldV3ManualOptions": {
        "type": "object",
        "title": "CustomFieldV3ManualOptions",
        "description": "Manual options.",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "MANUAL",
            "example": "MANUAL"
          },
          "optionGroupId": {
            "type": "string",
            "format": "uuid",
            "description": "Identifier of options group",
            "example": "f49d00fe-1eda-4304-ba79-a980f565281d"
          }
        }
      },
      "CustomFieldV3ManualOptionsCreateRequest": {
        "type": "object",
        "title": "CustomFieldV3ManualOptionsCreateRequest",
        "description": "Manual options.",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "MANUAL",
            "example": "MANUAL"
          }
        }
      },
      "CustomFieldV3Option": {
        "type": "object",
        "title": "CustomFieldV3Option",
        "description": "Single option schema.",
        "required": [
          "name"
        ],
        "properties": {
          "name": {
            "type": "string",
            "description": "Unique name of the option",
            "example": "XC"
          },
          "description": {
            "type": "string",
            "description": "User understandable details for the given name",
            "example": "Air exchange code"
          },
          "additionalInfos": {
            "type": "array",
            "description": "Option level additional infos.",
            "items": {
              "$ref": "#/components/schemas/AdditionalInfo"
            }
          },
          "translatedName": {
            "type": "string",
            "description": "Translated name of the option, matching the users preferred language",
            "example": "XC"
          },
          "translatedDescription": {
            "type": "string",
            "description": "Translated description of the option, matching the users preferred language",
            "example": "Código de intercambio de aire"
          }
        }
      },
      "CustomFieldV3Response": {
        "type": "object",
        "title": "CustomFieldV3Response",
        "description": "Custom field responses.",
        "required": [
          "fieldId",
          "armId",
          "selectedOptions"
        ],
        "properties": {
          "fieldId": {
            "type": "string",
            "format": "uuid",
            "description": "Custom field id"
          },
          "fieldName": {
            "type": "string",
            "description": "Name of the custom field"
          },
          "armId": {
            "type": "string",
            "format": "uuid",
            "description": "Arm id which is applicable"
          },
          "includeLocations": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/IncludeLocation"
            }
          },
          "selectedOptions": {
            "type": "array",
            "description": "The list of options that are selected by user or auto populated.",
            "items": {
              "$ref": "#/components/schemas/CustomFieldSelectedOption"
            }
          }
        }
      },
      "CustomValueFormat": {
        "type": "object",
        "title": "CustomValueFormat",
        "description": "Option format for custom value.",
        "required": [
          "isCustomValueAllowed"
        ],
        "properties": {
          "isCustomValueAllowed": {
            "type": "boolean",
            "description": "Indicates whether the user can enter a custom value.",
            "default": false,
            "example": true
          },
          "userInputFormat": {
            "description": "Format details if user can enter a custom value.",
            "$ref": "#/components/schemas/UserInputFormat"
          }
        }
      },
      "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"
          }
        }
      },
      "DepartmentPredicate": {
        "type": "object",
        "title": "DepartmentPredicate",
        "description": "Compare the department of the traveler with the values.",
        "required": [
          "type",
          "comparator",
          "departments"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "DEPARTMENT"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "departments": {
            "type": "array",
            "description": "List of department Ids to compare.",
            "minItems": 1,
            "items": {
              "type": "string",
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426655440000"
            }
          }
        }
      },
      "DestinationCityPredicate": {
        "type": "object",
        "title": "DestinationCityPredicate",
        "description": "Compare the destination city with the values.",
        "required": [
          "type",
          "comparator",
          "cities"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "DESTINATION_CITY"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "cities": {
            "type": "array",
            "description": "List of cities to compare.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/City"
            }
          }
        }
      },
      "DestinationCountryV3Predicate": {
        "type": "object",
        "title": "DestinationCountryV3Predicate",
        "description": "Compare the destination country with the values.",
        "required": [
          "type",
          "comparator",
          "countries"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "DESTINATION_COUNTRY"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "countries": {
            "type": "array",
            "description": "List of 2-letter country codes to compare.",
            "minItems": 1,
            "items": {
              "type": "string",
              "example": "US"
            }
          }
        }
      },
      "DisplayText": {
        "type": "object",
        "title": "DisplayText",
        "description": "User-facing description of the custom field.",
        "required": [
          "value"
        ],
        "properties": {
          "value": {
            "type": "string",
            "description": "Description of the custom field.",
            "example": "This field will capture the reason for out of policy booking"
          }
        }
      },
      "DynamicFare": {
        "type": "object",
        "title": "DynamicFare",
        "description": "Dynamic Fare.",
        "required": [
          "type",
          "fareType"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "DYNAMIC_FARE"
          },
          "fareType": {
            "type": "string",
            "description": "Fare type.",
            "enum": [
              "LLF"
            ]
          }
        }
      },
      "EntityId": {
        "type": "object",
        "description": "Identifier of an object",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "example": "b93dc51f-12dd-46c7-b7d6-1cb12cd3f5b3"
          }
        }
      },
      "EntityLevel": {
        "type": "string",
        "enum": [
          "TMC_LEVEL",
          "APPLICATION_LEVEL",
          "COMPANY_LEVEL",
          "LEGAL_ENTITY_LEVEL",
          "USER_LEVEL"
        ],
        "description": "Entity level for which this config needs to be set."
      },
      "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."
                }
              }
            }
          }
        }
      },
      "Expression": {
        "type": "object",
        "title": "Expression",
        "description": "Expression consisting of variables and constants which needs to be sent along with custom\nfield response.\n",
        "required": [
          "type",
          "formatExpression"
        ],
        "properties": {
          "type": {
            "type": "string",
            "example": "EXPRESSION",
            "default": "EXPRESSION"
          },
          "formatExpression": {
            "type": "string",
            "description": "The expression must be of format : `<any_text> ${expression} <any_text>`.The expression \ncan consist of a combination of variables and mathematical operations.\n Variable names must be same as VariableName Enum.\n  To define mathematical operations, the operation name should follow the format\n`math.<math_op>(arg1, arg2)`. Both `arg1` and `arg2` can be variables or constants. \nThe supported math operations (math_op) include: `add, mul, div, sub, min,\nand max`. All keywords, such as `<math_op>, math, and var` must be written in lowercase.\n",
            "example": "Result:  ${math.mul(LLF,5)}  ${ADD_COLLECT_AMOUNT}"
          },
          "variables": {
            "type": "array",
            "description": "Reference names of the variables present in the expression.",
            "deprecated": true,
            "x-sunset": "2026-07-01",
            "items": {
              "$ref": "#/components/schemas/VariableName"
            }
          }
        }
      },
      "FareValueV3": {
        "type": "object",
        "title": "FareValueV3",
        "description": "Fare value which can either be static or dynamic.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "STATIC_FARE": "#/components/schemas/StaticFare",
            "DYNAMIC_FARE": "#/components/schemas/DynamicFare"
          }
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/StaticFare"
          },
          {
            "$ref": "#/components/schemas/DynamicFare"
          }
        ]
      },
      "Field": {
        "type": "object",
        "title": "Field",
        "description": "Custom Field information",
        "required": [
          "id"
        ],
        "properties": {
          "id": {
            "type": "string",
            "format": "uuid",
            "description": "Custom field id."
          },
          "enabled": {
            "type": "boolean",
            "default": false,
            "description": "Boolean to enable or disable custom field.",
            "example": true
          }
        }
      },
      "GetApplicableCustomFieldsRequest": {
        "type": "object",
        "title": "GetApplicableCustomFieldsRequest",
        "description": "Request for fetching applicable custom fields.",
        "required": [
          "userId",
          "bookingContext"
        ],
        "properties": {
          "userId": {
            "type": "string",
            "description": "User id for whom the custom fields must be applicable.",
            "format": "uuid"
          },
          "bookingContext": {
            "$ref": "#/components/schemas/BookingContext"
          },
          "customFieldResponsesContext": {
            "$ref": "#/components/schemas/CustomFieldResponsesContext"
          }
        }
      },
      "GetApplicableCustomFieldsResponse": {
        "type": "object",
        "title": "GetApplicableCustomFieldsResponse",
        "description": "Response for fetching applicable custom fields.",
        "required": [
          "hasNewCustomFields",
          "customFields"
        ],
        "properties": {
          "hasNewCustomFields": {
            "type": "boolean",
            "description": "Indicates if there are new custom fields that are applicable."
          },
          "customFields": {
            "description": "List of applicable custom fields including the ones which are already responded. It\nalso includes the selected response which user has already selected previously.\n",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ApplicableCustomFieldV3"
            }
          }
        }
      },
      "GetCustomFieldOptionListRequestV3": {
        "type": "object",
        "title": "GetCustomFieldOptionListRequestV3",
        "description": "Request for fetching options for given custom field.",
        "required": [
          "paginationParams",
          "fetchEffectiveAdditionalInfos"
        ],
        "properties": {
          "paginationParams": {
            "$ref": "#/components/schemas/OffsetBasedPaginationRequestParams"
          },
          "nameSearchText": {
            "type": "string",
            "description": "Only the option that contain the specified text in name will be returned."
          },
          "fetchEffectiveAdditionalInfos": {
            "type": "boolean",
            "description": "Indicates whether the additional infos should be fetched for each option\nfrom arm level if individual option does not have definition of additional infos.\n",
            "default": false
          }
        }
      },
      "GetCustomFieldOptionListResponseV3": {
        "type": "object",
        "title": "GetCustomFieldOptionListResponseV3",
        "description": "Response object for option list",
        "required": [
          "paginationParams"
        ],
        "properties": {
          "paginationParams": {
            "$ref": "#/components/schemas/OffsetBasedPaginationResponseParams"
          },
          "options": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldV3Option"
            }
          }
        }
      },
      "HotelItineraryContext": {
        "type": "object",
        "title": "HotelItineraryContext",
        "description": "Hotel Itinerary Context",
        "required": [
          "itineraryType",
          "bookingKey"
        ],
        "properties": {
          "itineraryType": {
            "type": "string",
            "description": "Type of itinerary",
            "default": "HOTEL"
          },
          "bookingKey": {
            "type": "string",
            "description": "Booking key of selected hotel room"
          }
        }
      },
      "IncludeLocation": {
        "type": "string",
        "title": "IncludeLocation",
        "description": "Various traveler notifications (e.g. emails) where the responses to this field should be included.",
        "enum": [
          "BOOKING_CONFIRMATION_EMAILS",
          "APPROVAL_EMAILS",
          "COMPANY_REPORTS",
          "CONSOLIDATED_ITINERARY_EMAILS"
        ],
        "example": "APPROVAL_EMAILS"
      },
      "InitiatorType": {
        "title": "InitiatorType",
        "description": "Initiator type.",
        "type": "string",
        "enum": [
          "AGENT",
          "NON_AGENT"
        ]
      },
      "InlineQCFailureRule": {
        "type": "object",
        "title": "InlineQCFailureRule",
        "description": "Inline QC failure rule",
        "properties": {
          "ruleId": {
            "type": "string",
            "description": "Rule Id"
          },
          "ruleType": {
            "$ref": "#/components/schemas/QcRuleType"
          }
        }
      },
      "InlineQCRulePredicate": {
        "type": "object",
        "title": "InlineQCRulePredicate",
        "description": "Compares the inline qc rule that failed with the values",
        "required": [
          "type",
          "ruleTypes",
          "comparator"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "INLINE_QC_RULE_PREDICATE"
          },
          "ruleTypes": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/QcRuleType"
            }
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          }
        }
      },
      "ItineraryContext": {
        "type": "object",
        "title": "ItineraryContext",
        "description": "Itinerary Context for different types of itineraries",
        "discriminator": {
          "propertyName": "itineraryType",
          "mapping": {
            "AIR": "#/components/schemas/AirItineraryContext",
            "HOTEL": "#/components/schemas/HotelItineraryContext",
            "CAR": "#/components/schemas/CarItineraryContext",
            "RAIL": "#/components/schemas/RailItineraryContext",
            "LIMO": "#/components/schemas/LimoItineraryContext",
            "OUTSIDE_BOOKING": "#/components/schemas/OutsideBookingContext",
            "PNR": "#/components/schemas/PNRContext"
          }
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/AirItineraryContext"
          },
          {
            "$ref": "#/components/schemas/HotelItineraryContext"
          },
          {
            "$ref": "#/components/schemas/CarItineraryContext"
          },
          {
            "$ref": "#/components/schemas/RailItineraryContext"
          },
          {
            "$ref": "#/components/schemas/LimoItineraryContext"
          },
          {
            "$ref": "#/components/schemas/OutsideBookingContext"
          },
          {
            "$ref": "#/components/schemas/PNRContext"
          }
        ]
      },
      "LegalEntityV3Predicate": {
        "type": "object",
        "title": "LegalEntityV3Predicate",
        "description": "Compare the traveler legal entity with the values.",
        "required": [
          "type",
          "comparator",
          "legalEntities"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "LEGAL_ENTITY"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "legalEntities": {
            "type": "array",
            "description": "List of legal entity Ids to compare.",
            "minItems": 1,
            "items": {
              "type": "string",
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426655440000"
            }
          }
        }
      },
      "LimoItineraryContext": {
        "type": "object",
        "title": "LimoItineraryContext",
        "description": "Limo Itinerary Context",
        "required": [
          "itineraryType",
          "limoId"
        ],
        "properties": {
          "itineraryType": {
            "type": "string",
            "description": "Type of itinerary",
            "default": "LIMO"
          },
          "limoId": {
            "type": "string",
            "description": "Selected Limo option"
          }
        }
      },
      "ListArmsFilter": {
        "type": "object",
        "title": "ListArmsFilter",
        "properties": {
          "tripUsageTypes": {
            "type": "array",
            "description": "List of trip usage types to filter ARMs.",
            "items": {
              "$ref": "#/components/schemas/TripUsageType"
            }
          }
        }
      },
      "ListArmsRequest": {
        "type": "object",
        "title": "ListArmsRequest",
        "properties": {
          "searchText": {
            "type": "string",
            "description": "Search text to filter the ARMs."
          },
          "filter": {
            "$ref": "#/components/schemas/ListArmsFilter"
          }
        }
      },
      "ListArmsResponse": {
        "type": "object",
        "title": "ListArmsResponse",
        "properties": {
          "arms": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/Arm"
            }
          }
        }
      },
      "ListCustomFieldFilter": {
        "type": "object",
        "title": "ListCustomFieldFilter",
        "properties": {
          "definedAtList": {
            "type": "array",
            "description": "List of entity levels at which the custom field is defined.",
            "items": {
              "$ref": "#/components/schemas/CompanyRole"
            }
          },
          "enabled": {
            "type": "boolean",
            "description": "Boolean to enable or disable custom field.",
            "example": true
          },
          "customFieldIds": {
            "type": "array",
            "description": "Specific custom fields ids to filter.",
            "items": {
              "type": "string",
              "format": "uuid"
            }
          },
          "tripUsageTypes": {
            "type": "array",
            "description": "List of trip usage types to filter custom fields.",
            "items": {
              "$ref": "#/components/schemas/TripUsageType"
            }
          }
        }
      },
      "ListCustomFieldRequestV3": {
        "type": "object",
        "title": "ListCustomFieldRequestV3",
        "required": [
          "paginationParams"
        ],
        "properties": {
          "paginationParams": {
            "$ref": "#/components/schemas/OffsetBasedPaginationRequestParams"
          },
          "searchText": {
            "type": "string",
            "description": "Search text to filter the custom fields."
          },
          "filter": {
            "$ref": "#/components/schemas/ListCustomFieldFilter"
          }
        }
      },
      "ListCustomFieldResponseV3": {
        "type": "object",
        "title": "ListCustomFieldResponseV3 - paginationParams",
        "properties": {
          "paginationParams": {
            "$ref": "#/components/schemas/OffsetBasedPaginationResponseParams"
          },
          "fields": {
            "type": "array",
            "description": "List of custom field info",
            "items": {
              "$ref": "#/components/schemas/CustomFieldInfo"
            }
          }
        }
      },
      "LlfFarePredicate": {
        "type": "object",
        "title": "LlfFarePredicate",
        "description": "Compare the LLF (lowest logical fare) of the itinerary with the given amount. The LLF fare is zero when no LLF candidate exists for the itinerary, so a `GREATER` check against zero is equivalent to \"an LLF alternative is present\".",
        "required": [
          "type",
          "comparator",
          "money"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "LLF_FARE"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "money": {
            "$ref": "#/components/schemas/SimpleMoney"
          }
        }
      },
      "NonRegexUserInputFormat": {
        "type": "object",
        "title": "NonRegexUserInputFormat",
        "description": "Option format for user input without regex.",
        "required": [
          "type",
          "allowedChars"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "NON_REGEX",
            "example": "NON_REGEX"
          },
          "allowedChars": {
            "type": "string",
            "description": "The allowed characters for user input.",
            "enum": [
              "ALL",
              "ALPHA_NUMERIC",
              "NUMERIC"
            ]
          },
          "maxLength": {
            "type": "integer",
            "description": "The maximum length of any user entered text input.",
            "example": 10,
            "default": 256,
            "maximum": 256
          },
          "minLength": {
            "type": "integer",
            "description": "The minimum length of any user entered text input.",
            "example": 1,
            "default": 1,
            "minimum": 1
          }
        }
      },
      "OfficePredicate": {
        "type": "object",
        "title": "OfficePredicate",
        "description": "Compare the office of the traveler with the values.",
        "required": [
          "type",
          "comparator",
          "offices"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "OFFICE"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "offices": {
            "type": "array",
            "description": "List of office Ids to compare.",
            "minItems": 1,
            "items": {
              "type": "string",
              "format": "uuid",
              "example": "123e4567-e89b-12d3-a456-426655440000"
            }
          }
        }
      },
      "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."
          }
        }
      },
      "OptionListSelectionFormat": {
        "type": "object",
        "title": "OptionListSelectionFormat",
        "description": "Option format for list of options.",
        "required": [
          "type",
          "optionListTypeFormat",
          "customValueFormat"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "OPTION_LIST",
            "example": "OPTION_LIST"
          },
          "optionListTypeFormat": {
            "description": "Format details on what type of option list.",
            "$ref": "#/components/schemas/OptionListTypeFormat"
          },
          "customValueFormat": {
            "description": "Format details if user can enter a custom value.",
            "$ref": "#/components/schemas/CustomValueFormat"
          }
        }
      },
      "OptionListTypeFormat": {
        "type": "object",
        "title": "OptionListTypeFormat",
        "description": "Option format for select options.",
        "required": [
          "isMultiSelect"
        ],
        "properties": {
          "isMultiSelect": {
            "type": "boolean",
            "description": "Indicates whether the user can select multiple options.",
            "default": false,
            "example": true
          },
          "isPctType": {
            "type": "boolean",
            "description": "Indicates whether the user can select multiple options with percentage.",
            "default": false,
            "example": true
          }
        }
      },
      "OriginCityPredicate": {
        "type": "object",
        "title": "OriginCityPredicate",
        "description": "Compare the origin city with the values.",
        "required": [
          "type",
          "comparator",
          "cities"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "ORIGIN_CITY"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "cities": {
            "type": "array",
            "description": "List of cities to compare.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/City"
            }
          }
        }
      },
      "OriginCountryPredicate": {
        "type": "object",
        "title": "OriginCountryPredicate",
        "description": "Compare the destination country with the values.",
        "required": [
          "type",
          "comparator",
          "countries"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "ORIGIN_COUNTRY"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "countries": {
            "type": "array",
            "description": "List of 2-letter country codes to compare.",
            "minItems": 1,
            "items": {
              "type": "string",
              "example": "US"
            }
          }
        }
      },
      "OutsideBookingContext": {
        "type": "object",
        "title": "OutsideBookingContext",
        "description": "Manual or Shell pnr context",
        "deprecated": true,
        "x-sunset": "2027-07-01",
        "required": [
          "itineraryType",
          "pnrId"
        ],
        "properties": {
          "itineraryType": {
            "type": "string",
            "description": "Type of itinerary",
            "default": "OUTSIDE_BOOKING"
          },
          "pnrId": {
            "type": "string",
            "description": "Pnr id for non-finalized shell or manual form pnr"
          }
        }
      },
      "PNRContext": {
        "type": "object",
        "title": "PnrContext",
        "description": "Pnr context",
        "required": [
          "itineraryType",
          "pnrId"
        ],
        "properties": {
          "itineraryType": {
            "type": "string",
            "description": "Type of itinerary",
            "default": "PNR"
          },
          "pnrId": {
            "type": "string",
            "description": "Pnr id for the booking"
          }
        }
      },
      "Persona": {
        "type": "string",
        "title": "Persona",
        "description": "Persona of the user",
        "enum": [
          "UNKNOWN_PERSONA",
          "EMPLOYEE",
          "GUEST",
          "PERSONAL",
          "RELATIVE",
          "ADHOC"
        ],
        "example": "EMPLOYEE"
      },
      "PersonalUpgradePredicate": {
        "type": "object",
        "title": "PersonalUpgradePredicate",
        "description": "Evaluate if the booking is personal upgrade.",
        "required": [
          "type",
          "comparator",
          "isPersonalUpgrade"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "PERSONAL_UPGRADE"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "isPersonalUpgrade": {
            "type": "boolean",
            "description": "Indicates whether the booking is personal upgrade or not."
          }
        }
      },
      "PnrCreationProcessTypePredicate": {
        "title": "PnrCreationProcessTypePredicate",
        "type": "object",
        "description": "Compare the pnr source type of the order with the values.",
        "required": [
          "type",
          "comparator",
          "pnrCreationProcessTypes"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "PNR_CREATION_PROCESS_TYPE"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "pnrCreationProcessTypes": {
            "type": "array",
            "description": "List of pnr creation process types to compare.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/CreatedVia"
            }
          }
        }
      },
      "PnrCreationReasonPredicate": {
        "allOf": [
          {
            "$ref": "#/components/schemas/StringSetPredicate"
          }
        ],
        "title": "PnrCreationReasonPredicate",
        "description": "Compare the pnr creation reason with the values.",
        "required": [
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "PNR_CREATION_REASON"
          }
        }
      },
      "PolicyActionPredicate": {
        "title": "OutOfPolicyActionPredicate",
        "type": "object",
        "description": "Compare the policy action of the order with the values.",
        "required": [
          "type",
          "isOutOfPolicy",
          "comparator",
          "actionTypes"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "POLICY_ACTION"
          },
          "isOutOfPolicy": {
            "type": "boolean",
            "description": "Indicates whether the policy is out of policy or not."
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "actionTypes": {
            "type": "array",
            "description": "List of policy action types to compare.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/PolicyActionType"
            }
          }
        }
      },
      "PolicyActionType": {
        "title": "PolicyActionType",
        "description": "Policy action type.",
        "type": "string",
        "enum": [
          "HARD_APPROVAL",
          "SOFT_APPROVAL",
          "PASSIVE_APPROVAL",
          "SPLIT_PAYMENT",
          "PREVENT_BOOKING"
        ]
      },
      "PolicyCondition": {
        "type": "object",
        "title": "PolicyCondition",
        "description": "Policy condition.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "ANY_POLICY": "#/components/schemas/AnyPolicyPredicate",
            "POLICY_ID": "#/components/schemas/PolicyIdPredicate"
          }
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/AnyPolicyPredicate"
          },
          {
            "$ref": "#/components/schemas/PolicyIdPredicate"
          }
        ]
      },
      "PolicyIdPredicate": {
        "type": "object",
        "title": "PolicyPredicate",
        "description": "Predicate that compares policies based on a comparator.",
        "required": [
          "type",
          "comparator",
          "policyIds"
        ],
        "properties": {
          "type": {
            "type": "string",
            "example": "POLICY_ID",
            "default": "POLICY_ID"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "policyIds": {
            "type": "array",
            "description": "List of policy identifiers to compare.",
            "minItems": 1,
            "items": {
              "type": "string",
              "format": "uuid",
              "example": "f49d00fe-1eda-4304-ba79-a980f565281d"
            }
          }
        }
      },
      "PolicyV3Predicate": {
        "title": "PolicyV3Predicate",
        "type": "object",
        "description": "Compare the policy of the order with the values.",
        "required": [
          "type",
          "isOutOfPolicy",
          "condition"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "POLICY"
          },
          "isOutOfPolicy": {
            "type": "boolean",
            "description": "Indicates whether the policy is out of policy or not."
          },
          "condition": {
            "$ref": "#/components/schemas/PolicyCondition"
          }
        }
      },
      "PreferredType": {
        "title": "PreferredType",
        "type": "string",
        "description": "Preference type.",
        "enum": [
          "NOT_PREFERRED",
          "COMPANY_PREFERRED",
          "SPOTTERS_CHOICE",
          "COMPANY_BLOCKED",
          "TMC_PREFERRED"
        ]
      },
      "PreferredVendorTypePredicate": {
        "type": "object",
        "title": "PreferredVendorTypePredicate",
        "description": "Compare the preferred type of the order with the values.",
        "required": [
          "type",
          "comparator",
          "preferredVendorTypes"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "PREFERRED_VENDOR_TYPE"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "preferredVendorTypes": {
            "type": "array",
            "description": "List of preferred types to compare.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/PreferredType"
            }
          }
        }
      },
      "Profile": {
        "type": "object",
        "title": "Profile",
        "description": "Different profile attribute to be used as a user selectable option group.",
        "required": [
          "type",
          "attributeType"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "PROFILE",
            "example": "PROFILE"
          },
          "attributeType": {
            "$ref": "#/components/schemas/ProfileAttribute"
          },
          "attributeName": {
            "type": "string",
            "description": "When type is COMPANY_DEFINED_USER_ATTRIBUTE, then the attribute_name \ncontains the name of the attribute to provide the option values.\n",
            "example": "ssAuthId"
          }
        }
      },
      "ProfileAttribute": {
        "type": "string",
        "title": "ProfileAttribute",
        "description": "The level at which the field will be stored.",
        "enum": [
          "LEGAL_ENTITY",
          "OFFICE",
          "COMPANY_DEFINED_USER_ATTRIBUTE",
          "DEPARTMENT",
          "COST_CENTER"
        ],
        "example": "OFFICE"
      },
      "QcRuleType": {
        "type": "string",
        "enum": [
          "SEGMENT_GAP_RULE",
          "OSI_REMARK",
          "DUPLICATE_TICKET_RULE",
          "VENDOR_CONFIRMATION_MISSING_RULE",
          "LAST_NAME_MISPELLED_RULE",
          "DUPLICATE_BOOKING_RULE",
          "DATE_OF_BIRTH_RULE",
          "SECURE_FLIGHT_INFO_RULE",
          "PASSPORT_INFO_RULE",
          "TICKET_LESS_CARRIER_RULE",
          "VENDOR_CONFIRMED_STATUS_RULE",
          "VALIDATING_CARRIER_RULE",
          "OB_FEE_PRESENT_RULE",
          "FRAUD_CITY_CHECK_RULE",
          "FILE_FINISHING_RULE",
          "FARE_THRESHOLD_MANUAL_VERIFICATION_CHECK_RULE",
          "BLOCKED_AIRLINES_RULE",
          "LAST_NAME_VALID_RULE",
          "FRAUD_AIRPORT_MANUAL_VERIFICATION_CHECK_RULE",
          "PNR_COMMISSION_RULE",
          "DYNAMIC_OSI_REMARK_RULE",
          "DYNAMIC_SSR_REMARK_RULE",
          "COMMISSION_STALE_RULE",
          "EXCHANGE_COMMISSION_CHECK_RULE",
          "ADD_OTH_SEGMENT_RULE",
          "IRD_MULTI_SEGMENT_RULE",
          "FOP_CONDITIONS_CHECK_RULE",
          "ADD_AGENCY_REMARKS",
          "CHECK_MCO_RULE",
          "OVERRIDE_VALIDATING_CARRIER_RULE",
          "EDIT_PRICE_QUOTE_RULE",
          "TRIP_CONTINUITY_RULE",
          "PNR_PURCHASE_RULE",
          "FRAUD_COUNTRY_AND_PNR_PURCHASE_RULE",
          "FRAUD_AIRPORT_AND_PNR_PURCHASE_RULE",
          "REMARK_CHECK_RULE",
          "FLIGHT_METROPOLITAN_RULE",
          "FLIGHT_LAYOVER_RULE",
          "HOTEL_METROPOLITAN_RULE",
          "TIME_CONTINUITY_RULE",
          "CAR_METROPOLITAN_RULE",
          "CAR_TIME_CONTINUITY_RULE",
          "SSR_OSI_VALIDATION_RULE",
          "PNR_QUEUING_RULE",
          "GST_INFO_RULE",
          "CONTACT_INFO_RULE",
          "REDEEMING_MCO_RULE",
          "REDEEMING_UNUSED_CREDIT_NAME_CHANGE_RULE",
          "FARE_THRESHOLD_ON_BOOKING_OR_EXCHANGE_RULE",
          "ADD_AGENCY_ADDRESS_RULE",
          "BSP_EXCHANGE_VALID_EMD_RULE",
          "HOTEL_CANCELLATION_RULE",
          "ADD_ACCOUNTING_LINE_RULE",
          "EXTERNAL_COMMISSIONS_PROCESSING_RULE",
          "PRE_TICKETING_FARE_THRESHOLD_RULE"
        ],
        "example": "FLIGHT_LAYOVER_RULE"
      },
      "RailItineraryContext": {
        "type": "object",
        "title": "CarItineraryContext",
        "description": "Car Itinerary Context",
        "required": [
          "itineraryType",
          "searchKey"
        ],
        "properties": {
          "itineraryType": {
            "type": "string",
            "description": "Type of itinerary",
            "default": "RAIL"
          },
          "searchKey": {
            "type": "string",
            "description": "Search key related to the booking"
          }
        }
      },
      "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"
          }
        }
      },
      "RegexUserInputFormat": {
        "type": "object",
        "title": "RegexUserInputFormat",
        "description": "Option format for user input with regex.",
        "required": [
          "type",
          "regex"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "REGEX",
            "example": "REGEX"
          },
          "regex": {
            "type": "string",
            "description": "Regex to validate the user input.",
            "example": "^[a-zA-Z0-9]*$"
          }
        }
      },
      "ReorderCustomFieldsRequest": {
        "type": "object",
        "title": "ReorderCustomFieldsRequest",
        "required": [
          "targetFieldId",
          "direction",
          "fieldIdsToMove"
        ],
        "properties": {
          "targetFieldId": {
            "type": "string",
            "format": "uuid",
            "description": "The custom field id of the target position to which the fields needs to be moved."
          },
          "direction": {
            "type": "string",
            "description": "This is used to determine the direction of movement - before or after the target field",
            "enum": [
              "BEFORE",
              "AFTER"
            ]
          },
          "fieldIdsToMove": {
            "type": "array",
            "minItems": 1,
            "description": "Custom field ids who have to be moved below or above the target custom field.",
            "items": {
              "type": "string",
              "format": "uuid",
              "description": "Custom field id."
            }
          }
        }
      },
      "ReportingFopType": {
        "title": "ReportingFopType",
        "description": "Reporting fop type.",
        "type": "string",
        "enum": [
          "UATP",
          "VIRTUAL_CARD",
          "DIRECT_BILLING"
        ]
      },
      "ReportingFopTypePredicate": {
        "type": "object",
        "title": "ReportingFopTypePredicate",
        "description": "Compare the reporting fop type with the values.",
        "required": [
          "type",
          "comparator",
          "reportingFopTypes"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "REPORTING_FOP_TYPE"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "reportingFopTypes": {
            "type": "array",
            "description": "List of reporting fop types to compare.",
            "items": {
              "$ref": "#/components/schemas/ReportingFopType"
            }
          }
        }
      },
      "RespondOnlyOnceLevel": {
        "type": "string",
        "description": "User can respond this field only once at given level.",
        "enum": [
          "TRIP"
        ],
        "example": "TRIP"
      },
      "RuleEngineComparator": {
        "type": "string",
        "description": "The comparator to compare rule values.",
        "enum": [
          "IN",
          "ANY_IN",
          "NOT_IN_ANY",
          "NOT_IN",
          "EQUAL_GREATER",
          "EQUAL_LESSER",
          "GREATER",
          "LESSER",
          "CONTAINS",
          "EQ",
          "NOT_EQ"
        ]
      },
      "SearchCountryV3Predicate": {
        "type": "object",
        "title": "SearchCountryV3Predicate",
        "description": "Compare the search country with the values.",
        "required": [
          "type",
          "comparator",
          "countries"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "SEARCH_COUNTRY"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "countries": {
            "type": "array",
            "description": "List of 2 letter country codes to compare.",
            "minItems": 1,
            "items": {
              "type": "string",
              "example": "US"
            }
          }
        }
      },
      "SelectedFarePredicate": {
        "title": "SelectedFarePredicate",
        "type": "object",
        "description": "Compare the itinerary fare of the order with the values.",
        "required": [
          "type",
          "comparator",
          "value"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "SELECTED_FARE"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "value": {
            "$ref": "#/components/schemas/FareValueV3"
          }
        }
      },
      "SelectionFormat": {
        "type": "object",
        "title": "SelectionFormat",
        "description": "Option Selection format",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "OPTION_LIST": "#/components/schemas/OptionListSelectionFormat",
            "TEXT_INPUT": "#/components/schemas/TextInputSelectionFormat"
          }
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/OptionListSelectionFormat"
          },
          {
            "$ref": "#/components/schemas/TextInputSelectionFormat"
          }
        ]
      },
      "SimpleMoney": {
        "type": "object",
        "title": "SimpleMoney",
        "description": "Money object containing just amount and currency code.",
        "required": [
          "amount",
          "currencyCode"
        ],
        "properties": {
          "amount": {
            "type": "number",
            "format": "double",
            "description": "Amount",
            "example": 510
          },
          "currencyCode": {
            "type": "string",
            "description": "The 3-letter currency code defined in ISO 4217.",
            "example": "GBP"
          }
        }
      },
      "StaticFare": {
        "type": "object",
        "title": "StaticFare",
        "description": "Static fare.",
        "required": [
          "type",
          "money"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "STATIC_FARE"
          },
          "money": {
            "$ref": "#/components/schemas/SimpleMoney"
          }
        }
      },
      "StringSetPredicate": {
        "type": "object",
        "title": "StringSetPredicate",
        "description": "Base predicate for comparing entity attributes.",
        "required": [
          "comparator",
          "values"
        ],
        "properties": {
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "values": {
            "type": "array",
            "description": "List of values to compare.",
            "minItems": 1,
            "items": {
              "type": "string"
            }
          }
        }
      },
      "Tag": {
        "type": "object",
        "title": "Tag",
        "description": "These tags are to be used for management purposes to encode the source and attributes \nneeded to identify the fields for given management page.\n",
        "required": [
          "key",
          "value"
        ],
        "properties": {
          "key": {
            "type": "string",
            "description": "The name or identifier of the tag.",
            "example": "OOP Reason Code"
          },
          "value": {
            "type": "string",
            "description": "The display name of the tag, used as an alternative on the management page.",
            "example": "Out of Policy Code"
          }
        }
      },
      "TextInputSelectionFormat": {
        "type": "object",
        "title": "TextInputSelectionFormat",
        "description": "Option format for text input.",
        "required": [
          "type",
          "userInputFormat"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "TEXT_INPUT",
            "example": "TEXT_INPUT"
          },
          "userInputFormat": {
            "description": "Format details of the text user can input.",
            "$ref": "#/components/schemas/UserInputFormat"
          }
        }
      },
      "TravelRegionType": {
        "type": "string",
        "title": "TravelRegionType",
        "description": "Travel region Type",
        "enum": [
          "DOMESTIC",
          "INTERNATIONAL"
        ],
        "example": "DOMESTIC"
      },
      "TravelRegionTypePredicate": {
        "type": "object",
        "title": "TravelRegionTypePredicate",
        "description": "Compare the travel region type of the trip with the given values.",
        "required": [
          "type",
          "comparator",
          "travelRegionTypes"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "TRAVEL_REGION_TYPE"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "travelRegionTypes": {
            "type": "array",
            "description": "List of travel region types to compare.",
            "items": {
              "$ref": "#/components/schemas/TravelRegionType"
            }
          }
        }
      },
      "TravelerCountryPredicate": {
        "type": "object",
        "title": "TravelerCountryPredicate",
        "description": "Compare the country of the traveler with the values.",
        "required": [
          "type",
          "comparator",
          "countryCodes"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "TRAVELER_COUNTRY"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "countryCodes": {
            "type": "array",
            "description": "List of traveler country codes to compare.",
            "items": {
              "type": "string",
              "example": "US"
            }
          }
        }
      },
      "TravelerLegalEntityCountryV3Predicate": {
        "type": "object",
        "title": "TravelerLegalEntityCountryV3Predicate",
        "description": "Compare the legal entity country of the traveler with the values.",
        "required": [
          "type",
          "comparator",
          "countryCodes"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "TRAVELER_LEGAL_ENTITY_COUNTRY"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "countryCodes": {
            "type": "array",
            "description": "List of legal entity country codes to compare.",
            "items": {
              "type": "string",
              "example": "US"
            }
          }
        }
      },
      "TravelerPersonaV3Predicate": {
        "type": "object",
        "title": "TravelerPersonaV3Predicate",
        "description": "Compare the persona of the traveler with the values.",
        "required": [
          "type",
          "comparator",
          "personas"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "TRAVELER_PERSONA"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "personas": {
            "type": "array",
            "description": "List of personas to compare",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/Persona"
            }
          }
        }
      },
      "TripUsageType": {
        "title": "TripUsageType",
        "description": "Trip usage type.",
        "type": "string",
        "enum": [
          "STANDARD",
          "EVENT"
        ]
      },
      "TripUsageTypePredicate": {
        "type": "object",
        "title": "TripUsageTypePredicate",
        "description": "Compare the trip usage type of the order with the values.",
        "required": [
          "type",
          "comparator",
          "tripUsageTypes"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "TRIP_USAGE_TYPE"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "tripUsageTypes": {
            "type": "array",
            "description": "List of trip usage types to compare.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/TripUsageType"
            }
          }
        }
      },
      "UpdateCustomFieldOptionGroupRequestV3": {
        "type": "object",
        "title": "UpdateCustomFieldOptionGroupRequestV3",
        "description": "Request for updating a custom field options group.",
        "properties": {
          "toUpdate": {
            "type": "array",
            "description": "Array of option to insert or update. Any existing option with same name will be updated and if there is no exiting item having same name as specified, then a new option will be inserted.",
            "items": {
              "$ref": "#/components/schemas/CustomFieldV3Option"
            }
          },
          "toDelete": {
            "type": "array",
            "description": "Array of option that need to be deleted",
            "items": {
              "type": "string",
              "example": "XC"
            }
          }
        }
      },
      "UpdateCustomFieldStatusRequest": {
        "type": "object",
        "title": "UpdateCustomFieldStatusRequest",
        "properties": {
          "fieldsToUpdate": {
            "type": "array",
            "description": "Custom fields whose status has to be updated",
            "items": {
              "$ref": "#/components/schemas/Field"
            },
            "default": []
          },
          "fieldsToDelete": {
            "type": "array",
            "description": "The field ids for deletion.",
            "items": {
              "type": "string",
              "format": "uuid"
            },
            "default": []
          }
        }
      },
      "UserInputFormat": {
        "type": "object",
        "title": "UserInputFormat",
        "description": "Option format for user input.",
        "discriminator": {
          "propertyName": "type",
          "mapping": {
            "NON_REGEX": "#/components/schemas/NonRegexUserInputFormat",
            "REGEX": "#/components/schemas/RegexUserInputFormat"
          }
        },
        "oneOf": [
          {
            "$ref": "#/components/schemas/NonRegexUserInputFormat"
          },
          {
            "$ref": "#/components/schemas/RegexUserInputFormat"
          }
        ]
      },
      "UserOption": {
        "type": "object",
        "title": "UserOption",
        "description": "An option representing a user selectable option for a custom field.",
        "required": [
          "format",
          "type"
        ],
        "x-ignoreBreakingChanges": [
          "UserOption->preSelectedOptions"
        ],
        "properties": {
          "type": {
            "type": "string",
            "example": "USER",
            "default": "USER"
          },
          "name": {
            "type": "string",
            "description": "Name of the option.",
            "example": "US employee codes"
          },
          "required": {
            "type": "boolean",
            "description": "Indicates whether the user can opt not to select any of the options.",
            "default": false,
            "example": true
          },
          "format": {
            "$ref": "#/components/schemas/SelectionFormat"
          },
          "additionalInfos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdditionalInfo"
            }
          },
          "userOptionSource": {
            "$ref": "#/components/schemas/CustomFieldOptionSource"
          },
          "preSelectedOptions": {
            "readOnly": true,
            "description": "Pre-selected options for the user.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldSelectedOption"
            }
          },
          "readOnly": {
            "type": "boolean",
            "readOnly": true,
            "description": "Indicates whether the user can change the pre-selected options.",
            "default": false,
            "example": true
          },
          "hidden": {
            "type": "boolean",
            "description": "Whether this code will be hidden to the user.",
            "example": true,
            "default": false
          }
        }
      },
      "UserOptionCreateRequest": {
        "type": "object",
        "title": "UserOptionCreateRequest",
        "description": "An option representing a user selectable option for a custom field.",
        "required": [
          "format",
          "type"
        ],
        "properties": {
          "type": {
            "type": "string",
            "example": "USER",
            "default": "USER"
          },
          "name": {
            "type": "string",
            "description": "Name of the option.",
            "example": "US employee codes"
          },
          "required": {
            "type": "boolean",
            "description": "Indicates whether the user can opt not to select any of the options.",
            "default": false,
            "example": true
          },
          "format": {
            "$ref": "#/components/schemas/SelectionFormat"
          },
          "additionalInfos": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AdditionalInfo"
            }
          },
          "userOptionSource": {
            "$ref": "#/components/schemas/CustomFieldOptionSourceCreateRequest"
          },
          "preSelectedOptions": {
            "readOnly": true,
            "description": "Pre-selected options for the user.",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/CustomFieldV3Option"
            }
          },
          "readOnly": {
            "type": "boolean",
            "readOnly": true,
            "description": "Indicates whether the user can change the pre-selected options.",
            "default": false,
            "example": true
          }
        }
      },
      "Variable": {
        "type": "object",
        "title": "Variable",
        "description": "Variable defining the additional value to be sent along with custom field response.",
        "required": [
          "type",
          "name"
        ],
        "properties": {
          "type": {
            "type": "string",
            "example": "VARIABLE",
            "default": "VARIABLE"
          },
          "name": {
            "$ref": "#/components/schemas/VariableName"
          }
        }
      },
      "VariableName": {
        "type": "string",
        "title": "VariableName",
        "description": "Name of the variable.",
        "enum": [
          "PUBLISHED_FARE",
          "LLF",
          "ADD_COLLECT_AMOUNT",
          "SELECTED_FARE",
          "SPLIT_PAYMENT_FARE"
        ],
        "example": "LLF",
        "x-ignoreBreakingChanges": [
          "VariableName->ADD_COLLECT_AMOUNT",
          "VariableName->SELECTED_FARE",
          "VariableName->SPLIT_PAYMENT_FARE"
        ]
      },
      "WorkerType": {
        "type": "string",
        "description": "The type of worker.",
        "enum": [
          "EMPLOYEE",
          "CONTINGENT",
          "SEASONAL",
          "INTERN",
          "GUEST"
        ],
        "example": "EMPLOYEE",
        "x-enumValidFrom": {
          "GUEST": "2025-06-03"
        }
      },
      "WorkerTypeV3Predicate": {
        "type": "object",
        "title": "WorkerTypeV3Predicate",
        "description": "Compare the worker type with the values.",
        "required": [
          "type",
          "comparator",
          "workerTypes"
        ],
        "properties": {
          "type": {
            "type": "string",
            "default": "WORKER_TYPE"
          },
          "comparator": {
            "$ref": "#/components/schemas/RuleEngineComparator"
          },
          "workerTypes": {
            "type": "array",
            "description": "List of worker types to compare.",
            "minItems": 1,
            "items": {
              "$ref": "#/components/schemas/WorkerType"
            }
          }
        }
      }
    }
  },
  "tags": [
    {
      "name": "Custom Field V3",
      "description": "APIs to manage company custom fields."
    }
  ],
  "paths": {
    "/v3/companies/{companyId}/custom-fields/reorder": {
      "parameters": [
        {
          "name": "companyId",
          "in": "path",
          "description": "Identifier for company.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        }
      ],
      "post": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Reorder custom fields",
        "operationId": "reorderCustomFields",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ReorderCustomFieldsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v3/companies/{companyId}/custom-fields/update-status": {
      "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": true,
          "schema": {
            "$ref": "#/components/schemas/CompanyRole"
          },
          "example": "ORG"
        }
      ],
      "patch": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Update custom field status",
        "operationId": "updateCustomFieldStatus",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomFieldStatusRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v3/companies/{companyId}/custom-fields": {
      "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": true,
          "schema": {
            "$ref": "#/components/schemas/CompanyRole"
          },
          "example": "ORG"
        }
      ],
      "post": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Create custom field",
        "description": "This endpoint creates a custom field.",
        "operationId": "createCustomFieldV3",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateCustomFieldRequestV3"
              }
            }
          }
        },
        "responses": {
          "200": {
            "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"
          }
        }
      }
    },
    "/v3/companies/{companyId}/custom-fields/{customFieldId}": {
      "parameters": [
        {
          "name": "companyId",
          "in": "path",
          "description": "Identifier for company.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        },
        {
          "name": "customFieldId",
          "in": "path",
          "description": "Identifier for custom field.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        }
      ],
      "put": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Update custom field",
        "description": "This endpoint updates a custom field.",
        "operationId": "updateCustomFieldV3",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CustomFieldV3"
              }
            }
          }
        },
        "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"
          }
        }
      },
      "get": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Get custom field",
        "description": "This endpoint gets a custom field.",
        "operationId": "readCustomFieldV3",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CustomFieldV3"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Delete custom field",
        "description": "This endpoint deletes a custom field.",
        "operationId": "deleteCustomFieldV3",
        "responses": {
          "200": {
            "description": "Deleted Successfully"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v3/companies/{companyId}/custom-fields/list": {
      "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": true,
          "schema": {
            "$ref": "#/components/schemas/CompanyRole"
          },
          "example": "ORG"
        }
      ],
      "post": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "List custom field",
        "operationId": "listCustomFieldV3",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListCustomFieldRequestV3"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListCustomFieldResponseV3"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v3/companies/{companyId}/custom-fields/{customFieldId}/option-groups/{optionGroupId}": {
      "parameters": [
        {
          "name": "companyId",
          "in": "path",
          "description": "Identifier for company.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        },
        {
          "name": "customFieldId",
          "in": "path",
          "description": "Identifier for custom field.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        },
        {
          "name": "optionGroupId",
          "in": "path",
          "description": "Identifier for the options group",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        }
      ],
      "patch": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Update option for the given options group",
        "description": "Updates (replaces) all the options of the given group with the provided ones.",
        "operationId": "updateCustomFieldOptionGroupV3",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/UpdateCustomFieldOptionGroupRequestV3"
              }
            }
          }
        },
        "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"
          }
        }
      },
      "post": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Upload file of options to be processed",
        "operationId": "bulkUploadOptions",
        "requestBody": {
          "required": true,
          "content": {
            "multipart/form-data": {
              "schema": {
                "type": "object",
                "properties": {
                  "file": {
                    "type": "string",
                    "format": "binary",
                    "description": "File of bulk records"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BulkUploadResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v3/companies/{companyId}/custom-fields/{customFieldId}/arms": {
      "parameters": [
        {
          "name": "companyId",
          "in": "path",
          "description": "Identifier for company.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        },
        {
          "name": "customFieldId",
          "in": "path",
          "description": "Identifier for custom field.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        }
      ],
      "post": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Create custom field arm",
        "description": "This endpoint creates a custom field arm.",
        "operationId": "createArm",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/CreateArmRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/CreateArmResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          }
        }
      }
    },
    "/v3/companies/{companyId}/custom-fields/{customFieldId}/arms/{armId}": {
      "parameters": [
        {
          "name": "companyId",
          "in": "path",
          "description": "Identifier for company.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        },
        {
          "name": "customFieldId",
          "in": "path",
          "description": "Identifier for custom field.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        },
        {
          "name": "armId",
          "in": "path",
          "description": "Identifier for arm.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        }
      ],
      "put": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Update arm",
        "description": "This endpoint updates an arm.",
        "operationId": "updateArm",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/Arm"
              }
            }
          }
        },
        "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"
          }
        }
      },
      "get": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Get arm",
        "description": "This endpoint gets an arm.",
        "operationId": "getArm",
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Arm"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/BadRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      },
      "delete": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Delete arm",
        "description": "This endpoint deletes an arm.",
        "operationId": "deleteArm",
        "responses": {
          "200": {
            "description": "Deleted Successfully"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v3/companies/{companyId}/custom-fields/{customFieldId}/arms/list": {
      "parameters": [
        {
          "name": "companyId",
          "in": "path",
          "description": "Identifier for company.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        },
        {
          "name": "customFieldId",
          "in": "path",
          "description": "Identifier for custom field.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        }
      ],
      "post": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "List arms",
        "operationId": "listArms",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/ListArmsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ListArmsResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v3/companies/{companyId}/custom-fields/{customFieldId}/arms/{armId}/option-list": {
      "parameters": [
        {
          "name": "companyId",
          "in": "path",
          "description": "Identifier for company.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        },
        {
          "name": "customFieldId",
          "in": "path",
          "description": "Identifier for custom field.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        },
        {
          "name": "armId",
          "in": "path",
          "description": "Identifier for arm.",
          "required": true,
          "schema": {
            "type": "string",
            "format": "uuid"
          },
          "example": "4974a66b-7493-4f41-908c-58ba81093947"
        }
      ],
      "post": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Get options for a custom field.",
        "operationId": "getCustomFieldV3OptionList",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetCustomFieldOptionListRequestV3"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetCustomFieldOptionListResponseV3"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    },
    "/v3/applicable-custom-fields": {
      "post": {
        "tags": [
          "Custom Field V3"
        ],
        "summary": "Get applicable custom fields",
        "operationId": "getApplicableCustomFields",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/GetApplicableCustomFieldsRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "OK",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/GetApplicableCustomFieldsResponse"
                }
              }
            }
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "403": {
            "$ref": "#/components/responses/Forbidden"
          },
          "404": {
            "$ref": "#/components/responses/NotFound"
          }
        }
      }
    }
  }
}