<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="response">
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="request_index" />
                <xsd:element ref="data_source" />
                <xsd:element ref="request" />
                <xsd:element ref="errors" />
                <xsd:element ref="warnings" />
                <xsd:element ref="time_taken_ms" />
                <xsd:element ref="data" />
            </xsd:sequence>
            <xsd:attribute name="version" type="xsd:string" default="1.3" />
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="request_index" type="xsd:int" />
    <xsd:element name="data_source">
        <xsd:annotation>
            <xsd:documentation xml:lang="en"> Specific source from dataserver request ex: metars </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:attribute name="name" type="xsd:string" />
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="request">
        <xsd:annotation>
            <xsd:documentation xml:lang="en"> Request type ex: retrieve </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:attribute name="type" type="xsd:string" />
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="errors">
        <xsd:complexType>
            <xsd:sequence minOccurs="0">
                <xsd:element ref="error" />
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="warnings">
        <xsd:complexType>
            <xsd:sequence minOccurs="0">
                <xsd:element ref="warning" />
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="data">
        <xsd:complexType>
            <xsd:sequence minOccurs="0" maxOccurs="unbounded">
                <xsd:element ref="METAR" />
            </xsd:sequence>
            <xsd:attribute name="num_results" type="xsd:int" />
        </xsd:complexType>
    </xsd:element>
    <xsd:element name="warning" type="xsd:string" />
    <xsd:element name="error" type="xsd:string" />
    <xsd:element name="time_taken_ms" type="xsd:int">
        <xsd:annotation>
            <xsd:documentation xml:lang="en"> Time to process database request in milliseconds </xsd:documentation>
        </xsd:annotation>
    </xsd:element>
    <xsd:attribute name="num_results" type="xsd:int" />

    <xsd:element name="METAR">
        <xsd:annotation>
            <xsd:documentation xml:lang="en"> Individual METAR reports </xsd:documentation>
        </xsd:annotation>
        <xsd:complexType>
            <xsd:sequence>
                <xsd:element ref="raw_text" minOccurs="0" />
                <xsd:element ref="station_id" minOccurs="0" />
                <xsd:element ref="observation_time" minOccurs="0" />
                <xsd:element ref="latitude" minOccurs="0" />
                <xsd:element ref="longitude" minOccurs="0" />
                <xsd:element ref="temp_c" minOccurs="0" />
                <xsd:element ref="dewpoint_c" minOccurs="0" />
                <xsd:element ref="wind_dir_degrees" minOccurs="0" />
                <xsd:element ref="wind_speed_kt" minOccurs="0" />
                <xsd:element ref="wind_gust_kt" minOccurs="0" />
                <xsd:element ref="visibility_statute_mi" minOccurs="0" />
                <xsd:element ref="altim_in_hg" minOccurs="0" />
                <xsd:element ref="sea_level_pressure_mb" minOccurs="0" />
                <xsd:element ref="quality_control_flags" minOccurs="0" />
                <xsd:element ref="wx_string" minOccurs="0" />
                <xsd:element ref="sky_condition" minOccurs="0" maxOccurs="4" />
                <xsd:element ref="flight_category" minOccurs="0" />
                <xsd:element ref="three_hr_pressure_tendency_mb" minOccurs="0" />
                <xsd:element ref="maxT_c" minOccurs="0" />
                <xsd:element ref="minT_c" minOccurs="0" />
                <xsd:element ref="maxT24hr_c" minOccurs="0" />
                <xsd:element ref="minT24hr_c" minOccurs="0" />
                <xsd:element ref="precip_in" minOccurs="0" />
                <xsd:element ref="pcp3hr_in" minOccurs="0" />
                <xsd:element ref="pcp6hr_in" minOccurs="0" />
                <xsd:element ref="pcp24hr_in" minOccurs="0" />
                <xsd:element ref="snow_in" minOccurs="0" />
                <xsd:element ref="vert_vis_ft" minOccurs="0" />
                <xsd:element ref="metar_type" minOccurs="0" />
                <xsd:element ref="elevation_m" minOccurs="0" />
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>

    <xsd:element name="raw_text" type="xsd:string">
        <xsd:annotation>
            <xsd:documentation xml:lang="en"> Raw text of observation ex: KORD 032151Z 23006KT 10SM
            BKN110 OVC250 14/03 A3000 RMK AO2 SLP162 VIRGA OHD T01440028 </xsd:documentation>
    </xsd:annotation>
</xsd:element>
<xsd:element name="station_id" type="xsd:string">
    <xsd:annotation>
        <xsd:documentation xml:lang="en"> ICAO identifier ex: KORD </xsd:documentation>
    </xsd:annotation>
</xsd:element>
<xsd:element name="observation_time" type="xsd:string">
    <xsd:annotation>
        <xsd:documentation xml:lang="en"> The obsservation time (ISO 8601 date format) ex:
        2023-11-06T20:51:00Z </xsd:documentation>
</xsd:annotation>
        </xsd:element>
        <xsd:element name="latitude" type="xsd:float">
            <xsd:annotation>
                <xsd:documentation xml:lang="en"> Latitude of site in degrees ex: 41.9602 </xsd:documentation>
            </xsd:annotation>
        </xsd:element>
        <xsd:element name="longitude" type="xsd:float">
            <xsd:annotation>
                <xsd:documentation xml:lang="en"> Longitude of site in degrees ex: -87.9316 </xsd:documentation>
            </xsd:annotation>
        </xsd:element>
        <xsd:element name="temp_c" type="xsd:float" />
        <xsd:element name="dewpoint_c" type="xsd:float" />
        <xsd:element name="wind_dir_degrees" type="xsd:string">
            <xsd:annotation>
                <xsd:documentation xml:lang="en"> Wind direction in degrees or VRB for variable winds
                ex: 230, VRB </xsd:documentation>
        </xsd:annotation>
    </xsd:element>
    <xsd:element name="wind_speed_kt" type="xsd:int" />
    <xsd:element name="wind_gust_kt" type="xsd:int" />
    <xsd:element name="visibility_statute_mi" type="xsd:string">
        <xsd:annotation>
            <xsd:documentation xml:lang="en"> Visibility in statute miles, 10+ is greater than 10 sm
            ex: 3, 10+ </xsd:documentation>
    </xsd:annotation>
</xsd:element>
<xsd:element name="altim_in_hg" type="xsd:float" />
<xsd:element name="sea_level_pressure_mb" type="xsd:float" />
<xsd:element name="quality_control_flags">
    <xsd:complexType>
        <xsd:sequence>
            <xsd:element ref="corrected" minOccurs="0" maxOccurs="1" />
            <xsd:element ref="auto" minOccurs="0" maxOccurs="1" />
            <xsd:element ref="auto_station" minOccurs="0" maxOccurs="1" />
            <xsd:element ref="maintenance_indicator_on" minOccurs="0" maxOccurs="1" />
            <xsd:element ref="no_signal" minOccurs="0" maxOccurs="1" />
            <xsd:element ref="lightning_sensor_off" minOccurs="0" maxOccurs="1" />
            <xsd:element ref="freezing_rain_sensor_off" minOccurs="0" maxOccurs="1" />
            <xsd:element ref="present_weather_sensor_off" minOccurs="0" maxOccurs="1" />
        </xsd:sequence>
    </xsd:complexType>
</xsd:element>

<xsd:element name="corrected" type="xsd:string" />
<xsd:element name="auto" type="xsd:string" />
<xsd:element name="auto_station" type="xsd:string" />
<xsd:element name="maintenance_indicator_on" type="xsd:string" />
<xsd:element name="no_signal" type="xsd:string" />
<xsd:element name="lightning_sensor_off" type="xsd:string" />
<xsd:element name="freezing_rain_sensor_off" type="xsd:string" />
<xsd:element name="present_weather_sensor_off" type="xsd:string" />

<xsd:element name="wx_string" type="xsd:string" />

<xsd:element name="sky_condition">
    <xsd:complexType>
        <xsd:attribute name="sky_cover" type="xsd:string" />
        <xsd:attribute name="cloud_base_ft_agl" type="xsd:int" />
    </xsd:complexType>
</xsd:element>
<xsd:element name="flight_category" type="xsd:string" />
<xsd:element name="three_hr_pressure_tendency_mb" type="xsd:float" />
<xsd:element name="maxT_c" type="xsd:float" />
<xsd:element name="minT_c" type="xsd:float" />
<xsd:element name="maxT24hr_c" type="xsd:float" />
<xsd:element name="minT24hr_c" type="xsd:float" />
<xsd:element name="precip_in" type="xsd:float" />
<xsd:element name="pcp3hr_in" type="xsd:float" />
<xsd:element name="pcp6hr_in" type="xsd:float" />
<xsd:element name="pcp24hr_in" type="xsd:float" />
<xsd:element name="snow_in" type="xsd:float" />
<xsd:element name="vert_vis_ft" type="xsd:int" />
<xsd:element name="metar_type" type="xsd:string">
    <xsd:annotation>
        <xsd:documentation xml:lang="en"> Type of encoding ex: METAR, SPECI, SYNOP, BUOY, CMAN </xsd:documentation>
    </xsd:annotation>
</xsd:element>
<xsd:element name="elevation_m" type="xsd:float">
    <xsd:annotation>
        <xsd:documentation xml:lang="en"> Elevation of site in meters ex: 202 </xsd:documentation>
    </xsd:annotation>
</xsd:element>
</xsd:schema>
