{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/provecart-com/json-schema/provecart-com-booking-mandate-in-schema.json",
  "title": "BookingMandateIn",
  "x-generated": "2026-11-05",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/provecart-com-openapi.json#/components/schemas/BookingMandateIn",
  "properties": {
    "user_id": {
      "type": "string",
      "title": "User Id"
    },
    "travelers": {
      "items": {
        "$ref": "#/$defs/BookingTravelerIn"
      },
      "type": "array",
      "title": "Travelers"
    },
    "origin": {
      "$ref": "#/$defs/BookingEndpointIn"
    },
    "destination": {
      "$ref": "#/$defs/BookingEndpointIn"
    },
    "acceptable_alternates_origin": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Acceptable Alternates Origin"
    },
    "acceptable_alternates_destination": {
      "items": {
        "type": "string"
      },
      "type": "array",
      "title": "Acceptable Alternates Destination"
    },
    "airport_substitution": {
      "type": "string",
      "title": "Airport Substitution",
      "default": "review"
    },
    "departure_date": {
      "type": "string",
      "title": "Departure Date"
    },
    "return_date": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Return Date"
    },
    "date_flex_days": {
      "type": "integer",
      "title": "Date Flex Days",
      "default": 0
    },
    "departure_window": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Departure Window"
    },
    "cabin": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Cabin"
    },
    "fare_terms": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Fare Terms"
    },
    "max_connections": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Connections"
    },
    "min_connection_minutes": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Min Connection Minutes"
    },
    "max_layover_minutes": {
      "anyOf": [
        {
          "type": "integer"
        },
        {
          "type": "null"
        }
      ],
      "title": "Max Layover Minutes"
    },
    "allow_overnight_layover": {
      "type": "boolean",
      "title": "Allow Overnight Layover",
      "default": true
    },
    "allow_airport_change_connection": {
      "type": "boolean",
      "title": "Allow Airport Change Connection",
      "default": true
    },
    "hotel": {
      "anyOf": [
        {
          "additionalProperties": true,
          "type": "object"
        },
        {
          "type": "null"
        }
      ],
      "title": "Hotel"
    },
    "max_total_price": {
      "type": "number",
      "title": "Max Total Price"
    },
    "price_basis": {
      "type": "string",
      "title": "Price Basis",
      "default": "all_in"
    },
    "currency": {
      "type": "string",
      "title": "Currency",
      "default": "USD"
    },
    "merchant_allowlist": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Merchant Allowlist"
    },
    "merchant_blocklist": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Merchant Blocklist"
    },
    "expires_at": {
      "type": "string",
      "title": "Expires At"
    }
  },
  "type": "object",
  "required": [
    "user_id",
    "travelers",
    "origin",
    "destination",
    "departure_date",
    "max_total_price",
    "expires_at"
  ],
  "$defs": {
    "BookingEndpointIn": {
      "properties": {
        "airport": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Airport"
        },
        "city": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "City"
        }
      },
      "type": "object",
      "title": "BookingEndpointIn"
    },
    "BookingTravelerIn": {
      "properties": {
        "name": {
          "type": "string",
          "title": "Name"
        },
        "dob": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "title": "Dob"
        }
      },
      "type": "object",
      "required": [
        "name"
      ],
      "title": "BookingTravelerIn"
    }
  }
}