{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/amadeus/refs/heads/main/json-schema/flight-offers-search-search-criteria-schema.json",
  "title": "SearchCriteria",
  "description": "SearchCriteria schema from Flight Offers Search",
  "type": "object",
  "properties": {
    "excludeAllotments": {
      "description": "This option allows to exclude the isAllotment flag associated to a booking class in the search response when it exist.",
      "type": "boolean",
      "example": false
    },
    "addOneWayOffers": {
      "description": "This option allows activate the one-way combinable feature",
      "type": "boolean",
      "example": true
    },
    "maxFlightOffers": {
      "description": "Maximum number of flight offers returned (Max 250)",
      "type": "number",
      "default": 250,
      "example": 250
    },
    "maxPrice": {
      "description": "maximum price per traveler. By default, no limit is applied. If specified, the value should be a positive number with no decimals",
      "type": "integer",
      "example": 100
    },
    "allowAlternativeFareOptions": {
      "description": "This option allows to default to a standard fareOption if no offers are found for the selected fareOption.",
      "type": "boolean",
      "example": true
    },
    "oneFlightOfferPerDay": {
      "description": "Requests the system to find at least one flight-offer per day, if possible, when a range of dates is specified. Default is false.",
      "type": "boolean",
      "example": true
    },
    "additionalInformation": {
      "title": "AdditionalInformation",
      "type": "object",
      "properties": {
        "chargeableCheckedBags": {
          "description": "If true, returns the price of the first additional bag when the airline is an \"Amadeus Ancillary Services\" member.",
          "type": "boolean",
          "example": true
        },
        "brandedFares": {
          "description": "If true, returns the fare family name for each flight-offer which supports fare family",
          "type": "boolean",
          "example": true
        }
      }
    },
    "pricingOptions": {
      "title": "pricingOptions",
      "description": "fare filter options",
      "type": "object",
      "properties": {
        "includedCheckedBagsOnly": {
          "type": "boolean",
          "description": "If true, returns the flight-offers with included checked bags only",
          "example": true
        },
        "refundableFare": {
          "type": "boolean",
          "description": "If true, returns the flight-offers with refundable fares only",
          "example": true
        },
        "noRestrictionFare": {
          "type": "boolean",
          "description": "If true, returns the flight-offers with no restriction fares only",
          "example": true
        },
        "noPenaltyFare": {
          "type": "boolean",
          "description": "If true, returns the flight-offers with no penalty fares only",
          "example": true
        }
      }
    },
    "flightFilters": {
      "type": "object",
      "properties": {
        "crossBorderAllowed": {
          "description": "Allows to search a location outside the borders when a radius around a location is specified. Default is false.",
          "type": "boolean",
          "example": false
        },
        "moreOvernightsAllowed": {
          "description": "This flag enables/disables the possibility to have more overnight flights in Low Fare Search",
          "type": "boolean",
          "example": false
        },
        "returnToDepartureAirport": {
          "description": "This option force to retrieve flight-offer with a departure and a return in the same airport",
          "type": "boolean",
          "example": false
        },
        "railSegmentAllowed": {
          "description": "This flag enable/disable filtering of rail segment (TGV AIR, RAIL ...)",
          "type": "boolean",
          "example": true
        },
        "busSegmentAllowed": {
          "description": "This flag enable/disable filtering of bus segment",
          "type": "boolean",
          "example": true
        },
        "maxFlightTime": {
          "description": "Maximum flight time as a percentage relative to the shortest flight time available for the itinerary",
          "type": "number",
          "example": 200
        },
        "carrierRestrictions": {
          "description": "Restriction towards carriers.",
          "type": "object",
          "properties": {
            "blacklistedInEUAllowed": {
              "description": "This flag enable/disable filtering of blacklisted airline by EU. The list of the banned airlines is published in the Official Journal of the European Union, where they are included as annexes A and B to the Commission Regulation. The blacklist of an airline can concern all its flights or some specific aircraft types pertaining to the airline",
              "type": "boolean",
              "default": false,
              "example": true
            },
            "excludedCarrierCodes": {
              "description": "This option ensures that the system will only consider these airlines.",
              "type": "array",
              "minItems": 1,
              "maxItems": 99,
              "items": {
                "type": "string"
              }
            },
            "includedCarrierCodes": {
              "description": "This option ensures that the system will only consider these airlines.",
              "type": "array",
              "minItems": 1,
              "maxItems": 99,
              "items": {
                "type": "string"
              }
            }
          }
        },
        "cabinRestrictions": {
          "title": "CabinRestrictions",
          "description": "Restriction towards cabins.",
          "type": "array",
          "minItems": 1,
          "maxItems": 6,
          "items": {
            "$ref": "#/definitions/Extended_CabinRestriction"
          }
        },
        "connectionRestriction": {
          "description": "Restriction towards number of connections.",
          "type": "object",
          "properties": {
            "maxNumberOfConnections": {
              "description": "The maximal number of connections for each itinerary. Value can be 0, 1 or 2.",
              "type": "number",
              "example": 2
            },
            "nonStopPreferred": {
              "description": "When this option is requested, recommendations made of Non-Stop flights only are favoured by the search, on the whole itinerary, with a weight of 75%.",
              "type": "boolean",
              "example": false
            },
            "airportChangeAllowed": {
              "description": "Allow to change airport during connection",
              "type": "boolean",
              "example": false
            },
            "technicalStopsAllowed": {
              "description": "This option allows the single segment to have one or more intermediate stops (technical stops).",
              "type": "boolean",
              "example": true
            }
          }
        }
      }
    }
  }
}