{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://api-evangelist.github.io/southwest-airlines/json-schema/southwest-airlines-flight-schema.json",
  "title": "Southwest Airlines Flight",
  "description": "Represents a Southwest Airlines scheduled flight including route, timing, aircraft, and status information.",
  "type": "object",
  "properties": {
    "flightNumber": {
      "type": "string",
      "description": "Southwest Airlines flight number (e.g., WN123).",
      "example": "WN4521"
    },
    "departureAirport": {
      "type": "object",
      "description": "The origin airport for this flight.",
      "properties": {
        "iataCode": { "type": "string", "minLength": 3, "maxLength": 3 },
        "name": { "type": "string" },
        "city": { "type": "string" },
        "state": { "type": "string" }
      },
      "required": ["iataCode"]
    },
    "arrivalAirport": {
      "type": "object",
      "description": "The destination airport for this flight.",
      "properties": {
        "iataCode": { "type": "string", "minLength": 3, "maxLength": 3 },
        "name": { "type": "string" },
        "city": { "type": "string" },
        "state": { "type": "string" }
      },
      "required": ["iataCode"]
    },
    "scheduledDepartureTime": {
      "type": "string",
      "format": "date-time",
      "description": "Scheduled departure date and time in ISO 8601 format."
    },
    "scheduledArrivalTime": {
      "type": "string",
      "format": "date-time",
      "description": "Scheduled arrival date and time in ISO 8601 format."
    },
    "estimatedDepartureTime": {
      "type": "string",
      "format": "date-time",
      "description": "Updated estimated departure time if different from scheduled."
    },
    "estimatedArrivalTime": {
      "type": "string",
      "format": "date-time",
      "description": "Updated estimated arrival time if different from scheduled."
    },
    "flightStatus": {
      "type": "string",
      "enum": ["On Time", "Delayed", "Cancelled", "Departed", "Arrived", "Boarding"],
      "description": "Current operational status of the flight."
    },
    "aircraftType": {
      "type": "string",
      "description": "Aircraft model assigned to this flight (e.g., Boeing 737-800).",
      "example": "Boeing 737 MAX 8"
    },
    "tailNumber": {
      "type": "string",
      "description": "Aircraft registration tail number."
    },
    "seatsAvailable": {
      "type": "integer",
      "description": "Number of seats currently available for booking.",
      "minimum": 0
    },
    "stops": {
      "type": "array",
      "description": "Intermediate stops for connecting flights.",
      "items": {
        "type": "object",
        "properties": {
          "iataCode": { "type": "string" },
          "stopDuration": { "type": "integer", "description": "Stop duration in minutes" }
        }
      }
    }
  },
  "required": ["flightNumber", "departureAirport", "arrivalAirport", "scheduledDepartureTime", "scheduledArrivalTime"]
}
