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

  <xs:import schemaLocation="schema2.xsd"/>

  <xs:complexType name="interpretedRequest" final="extension restriction">
    <xs:all>
      <xs:element name="endpoint" type="AirportsEndpoint" minOccurs="0"/>
      <xs:element name="year" type="inputParameter" minOccurs="0"/>
      <xs:element name="month" type="inputParameter" minOccurs="0"/>
      <xs:element name="day" type="inputParameter" minOccurs="0"/>
      <xs:element name="code" type="inputParameter" minOccurs="0"/>
      <xs:element name="longitude" type="inputParameter" minOccurs="0"/>
      <xs:element name="latitude" type="inputParameter" minOccurs="0"/>
      <xs:element name="radiusMiles" type="inputParameter" minOccurs="0"/>
      <xs:element name="url" type="xs:string" minOccurs="0"/>
      <xs:element name="extendedOptions" type="inputParameter" minOccurs="0"/>
    </xs:all>
  </xs:complexType>
</xs:schema>

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

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

  <xs:element name="response" type="airportsResponse"/>

  <xs:complexType name="airportsResponse" final="extension restriction">
    <xs:all>
      <xs:element name="airports" minOccurs="0">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="airport" type="airport" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="airport" type="airport" minOccurs="0"/>
      <xs:element name="error" type="apiResponseError" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="airport" final="extension restriction">
    <xs:sequence>
      <xs:element name="fs" type="xs:string" minOccurs="0"/>
      <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" minOccurs="0"/>
      <xs:element name="cityCode" type="xs:string" minOccurs="0"/>
      <xs:element name="district" 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" minOccurs="0"/>
      <xs:element name="countryName" type="xs:string" minOccurs="0"/>
      <xs:element name="regionName" type="xs:string" minOccurs="0"/>
      <xs:element name="regionIata" type="xs:string" minOccurs="0"/>
      <xs:element name="timeZoneRegionName" type="xs:string" minOccurs="0"/>
      <xs:element name="weatherZone" type="xs:string" minOccurs="0"/>
      <xs:element name="localTime" type="xs:string" minOccurs="0"/>
      <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="apiResponseError">
    <xs:all>
      <xs:element name="httpStatusCode" type="xs:int"/>
      <xs:element name="errorId" type="xs:string" minOccurs="0"/>
      <xs:element name="errorMessage" type="xs:string" minOccurs="0"/>
      <xs:element name="errorCode" type="xs:string" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="inputParameter">
    <xs:all>
      <xs:element name="airport" type="airport" minOccurs="0"/>
      <xs:element name="airline" type="airline" minOccurs="0"/>
      <xs:element ref="equipment" minOccurs="0"/>
      <xs:element name="fsCode" type="xs:string" minOccurs="0"/>
      <xs:element name="interpreted" type="xs:string" minOccurs="0"/>
      <xs:element name="requestedCode" type="xs:string" minOccurs="0"/>
      <xs:element name="requested" type="xs:string" minOccurs="0"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="airline" final="extension restriction">
    <xs:sequence>
      <xs:element name="fs" type="xs:string" minOccurs="0"/>
      <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" minOccurs="0"/>
      <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:element name="category" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="equipment" final="extension restriction">
    <xs:sequence>
      <xs:element name="iata" type="xs:string" minOccurs="0"/>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="turboProp" type="xs:boolean" minOccurs="0"/>
      <xs:element name="jet" type="xs:boolean" minOccurs="0"/>
      <xs:element name="widebody" type="xs:boolean" minOccurs="0"/>
      <xs:element name="regional" type="xs:boolean" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:simpleType name="AirportsEndpoint">
    <xs:restriction base="xs:string">
      <xs:enumeration value="all"/>
      <xs:enumeration value="active"/>
      <xs:enumeration value="activeOnDate"/>
      <xs:enumeration value="anyCode"/>
      <xs:enumeration value="anyCodeOnDate"/>
      <xs:enumeration value="fsCode"/>
      <xs:enumeration value="icaoCode"/>
      <xs:enumeration value="icaoCodeOnDate"/>
      <xs:enumeration value="iataCode"/>
      <xs:enumeration value="iataCodeOnDate"/>
      <xs:enumeration value="cityCode"/>
      <xs:enumeration value="countryCode"/>
      <xs:enumeration value="withinRadius"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

