<?xml version="1.0" standalone="yes"?>
<xs:schema version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema">

  <xs:element name="Codeshare" type="codeshareV1"/>

  <xs:element name="Operator" type="operatorV1"/>

  <xs:element name="ScheduledFlight" type="scheduledFlightV1"/>

  <xs:element name="airline" type="airlineV1"/>

  <xs:element name="airport" type="airportV1"/>

  <xs:element name="apiResponseError" type="apiResponseError"/>

  <xs:element name="appendix" type="appendices"/>

  <xs:element name="equipment" type="equipmentV1"/>

  <xs:element name="request" nillable="true" type="xs:anyType"/>

  <xs:element name="response" nillable="true" type="xs:anyType"/>

  <xs:complexType name="responseByFlight">
    <xs:complexContent>
      <xs:extension base="responseBase">
        <xs:sequence>
          <xs:element ref="request" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="responseBase">
    <xs:sequence>
      <xs:element name="scheduledFlights" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="scheduledFlight" type="scheduledFlightV1" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element ref="appendix" minOccurs="0"/>
      <xs:element name="error" type="apiResponseError" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="requestByFlight">
    <xs:complexContent>
      <xs:extension base="requestBase">
        <xs:sequence>
          <xs:element name="carrier" type="requestedAirlineV1" minOccurs="0"/>
          <xs:element name="codeType" type="requestedString" minOccurs="0"/>
          <xs:element name="flightNumber" type="requestedString" minOccurs="0"/>
          <xs:element name="departing" type="xs:boolean"/>
          <xs:element name="date" type="requestedDate" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="requestBase">
    <xs:sequence>
      <xs:element name="url" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="requestedAirlineV1">
    <xs:sequence>
      <xs:element name="requestedCode" type="xs:string" minOccurs="0"/>
      <xs:element name="fsCode" type="xs:string" minOccurs="0"/>
      <xs:element ref="airline" minOccurs="0"/>
      <xs:element name="error" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="airlineV1">
    <xs:sequence>
      <xs:element name="fs" type="xs:string"/>
      <xs:element name="iata" type="xs:string" minOccurs="0"/>
      <xs:element name="icao" type="xs:string" minOccurs="0"/>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="phoneNumber" type="xs:string" minOccurs="0"/>
      <xs:element name="active" type="xs:boolean"/>
      <xs:element name="dateFrom" type="xs:string" minOccurs="0"/>
      <xs:element name="dateTo" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="requestedString">
    <xs:sequence>
      <xs:element name="requested" type="xs:string" minOccurs="0"/>
      <xs:element name="interpreted" type="xs:string" minOccurs="0"/>
      <xs:element name="error" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="requestedDate">
    <xs:sequence>
      <xs:element name="year" type="xs:string" minOccurs="0"/>
      <xs:element name="month" type="xs:string" minOccurs="0"/>
      <xs:element name="day" type="xs:string" minOccurs="0"/>
      <xs:element name="interpreted" type="xs:string" minOccurs="0"/>
      <xs:element name="error" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="scheduledFlightV1">
    <xs:sequence>
      <xs:element name="carrierFsCode" type="xs:string" minOccurs="0"/>
      <xs:element name="carrier" type="airlineV1" minOccurs="0"/>
      <xs:element name="flightNumber" type="xs:string"/>
      <xs:element name="brand" type="xs:string" minOccurs="0"/>
      <xs:element name="departureAirport" type="airportV1" minOccurs="0"/>
      <xs:element name="departureAirportFsCode" type="xs:string" minOccurs="0"/>
      <xs:element name="arrivalAirport" type="airportV1" minOccurs="0"/>
      <xs:element name="arrivalAirportFsCode" type="xs:string" minOccurs="0"/>
      <xs:element name="stops" type="xs:int"/>
      <xs:element name="departureTerminal" type="xs:string" minOccurs="0"/>
      <xs:element name="arrivalTerminal" type="xs:string" minOccurs="0"/>
      <xs:element name="departureTime" type="xs:string"/>
      <xs:element name="arrivalTime" type="xs:string"/>
      <xs:element name="flightEquipmentIataCode" type="xs:string" minOccurs="0"/>
      <xs:element name="flightEquipment" type="equipmentV1" minOccurs="0"/>
      <xs:element name="isCodeshare" type="xs:boolean"/>
      <xs:element name="isWetlease" type="xs:boolean"/>
      <xs:element name="serviceType" type="xs:string"/>
      <xs:element name="serviceClasses" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="serviceClass" type="xs:string" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="trafficRestrictions" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="trafficRestriction" type="xs:string" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="operator" type="operatorV1" minOccurs="0"/>
      <xs:element name="codeshares" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="codeshare" type="codeshareV1" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="wetleaseOperator" type="airlineV1" minOccurs="0"/>
      <xs:element name="wetleaseOperatorFsCode" type="xs:string" minOccurs="0"/>
      <xs:element name="referenceCode" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="airportV1">
    <xs:sequence>
      <xs:element name="fs" type="xs:string"/>
      <xs:element name="iata" type="xs:string" minOccurs="0"/>
      <xs:element name="icao" type="xs:string" minOccurs="0"/>
      <xs:element name="faa" type="xs:string" minOccurs="0"/>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="street1" type="xs:string" minOccurs="0"/>
      <xs:element name="street2" type="xs:string" minOccurs="0"/>
      <xs:element name="city" type="xs:string"/>
      <xs:element name="cityCode" type="xs:string" minOccurs="0"/>
      <xs:element name="stateCode" type="xs:string" minOccurs="0"/>
      <xs:element name="postalCode" type="xs:string" minOccurs="0"/>
      <xs:element name="countryCode" type="xs:string"/>
      <xs:element name="countryName" type="xs:string"/>
      <xs:element name="regionName" type="xs:string"/>
      <xs:element name="timeZoneRegionName" type="xs:string"/>
      <xs:element name="weatherZone" type="xs:string" minOccurs="0"/>
      <xs:element name="localTime" type="xs:string"/>
      <xs:element name="utcOffsetHours" type="xs:double"/>
      <xs:element name="latitude" type="xs:double"/>
      <xs:element name="longitude" type="xs:double"/>
      <xs:element name="elevationFeet" type="xs:int" minOccurs="0"/>
      <xs:element name="classification" type="xs:int"/>
      <xs:element name="active" type="xs:boolean"/>
      <xs:element name="dateFrom" type="xs:string" minOccurs="0"/>
      <xs:element name="dateTo" type="xs:string" minOccurs="0"/>
      <xs:element name="delayIndexUrl" type="xs:string" minOccurs="0"/>
      <xs:element name="weatherUrl" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="equipmentV1">
    <xs:sequence>
      <xs:element name="iata" type="xs:string"/>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="turboProp" type="xs:boolean"/>
      <xs:element name="jet" type="xs:boolean"/>
      <xs:element name="widebody" type="xs:boolean"/>
      <xs:element name="regional" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="operatorV1">
    <xs:sequence>
      <xs:element name="carrierFsCode" type="xs:string"/>
      <xs:element name="flightNumber" type="xs:string"/>
      <xs:element name="serviceType" type="xs:string" minOccurs="0"/>
      <xs:element name="serviceClasses" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="serviceClass" type="xs:string" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="trafficRestrictions" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="trafficRestrictions" type="xs:string" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="codeshareV1">
    <xs:sequence>
      <xs:element name="carrier" type="airlineV1" minOccurs="0"/>
      <xs:element name="carrierFsCode" type="xs:string" minOccurs="0"/>
      <xs:element name="flightNumber" type="xs:string"/>
      <xs:element name="serviceType" type="xs:string" minOccurs="0"/>
      <xs:element name="serviceClasses" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="serviceClass" type="xs:string" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="trafficRestrictions" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="trafficRestriction" type="xs:string" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="referenceCode" type="xs:long" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="appendices">
    <xs:sequence>
      <xs:element name="airlines" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="airline" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="airports" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="airport" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="equipments" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element ref="equipment" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="apiResponseError">
    <xs:sequence>
      <xs:element name="httpStatusCode" type="xs:int"/>
      <xs:element name="errorCode" type="xs:string" minOccurs="0"/>
      <xs:element name="errorId" type="xs:string" minOccurs="0"/>
      <xs:element name="errorMessage" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="responseByAirport">
    <xs:complexContent>
      <xs:extension base="responseBase">
        <xs:sequence>
          <xs:element ref="request" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="requestByAirport">
    <xs:complexContent>
      <xs:extension base="requestBase">
        <xs:sequence>
          <xs:element name="airport" type="requestedAirportV1" minOccurs="0"/>
          <xs:element name="codeType" type="requestedString" minOccurs="0"/>
          <xs:element name="departing" type="xs:boolean"/>
          <xs:element name="date" type="requestedDate" minOccurs="0"/>
          <xs:element name="hourOfDay" type="requestedInteger" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="requestedAirportV1">
    <xs:sequence>
      <xs:element name="requestedCode" type="xs:string" minOccurs="0"/>
      <xs:element name="fsCode" type="xs:string" minOccurs="0"/>
      <xs:element ref="airport" minOccurs="0"/>
      <xs:element name="error" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="requestedInteger">
    <xs:sequence>
      <xs:element name="requested" type="xs:string" minOccurs="0"/>
      <xs:element name="interpreted" type="xs:int" minOccurs="0"/>
      <xs:element name="error" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="responseByRoute">
    <xs:complexContent>
      <xs:extension base="responseBase">
        <xs:sequence>
          <xs:element ref="request" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="requestByRoute">
    <xs:complexContent>
      <xs:extension base="requestBase">
        <xs:sequence>
          <xs:element name="departureAirport" type="requestedAirportV1" minOccurs="0"/>
          <xs:element name="arrivalAirport" type="requestedAirportV1" minOccurs="0"/>
          <xs:element name="codeType" type="requestedString" minOccurs="0"/>
          <xs:element name="departing" type="xs:boolean"/>
          <xs:element name="date" type="requestedDate" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:schema>

