﻿<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
  <xs:element name="information-response">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="organization-information">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="organization-id" type="xs:string" />
              <xs:element name="organization-name" type="xs:string" />
              <xs:element name="last-update-time" type="xs:dateTime" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="incidents">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="unbounded" name="incident">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element minOccurs="1" name="incident-id" type="xs:string" />
                    <xs:element minOccurs="1" name="event-id" type="xs:string" />
                    <xs:element minOccurs="1" name="event-type-id">
                      <xs:annotation>
                        <xs:documentation>The ID corresponding to the type of the event based on the TOCS event types. A list of possible event types can be found via the Incidents Metadata feed</xs:documentation>
                      </xs:annotation>
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:enumeration value="AL" />
                          <xs:enumeration value="CN" />
                          <xs:enumeration value="DV" />
                          <xs:enumeration value="DS" />
                          <xs:enumeration value="DR" />
                          <xs:enumeration value="MS" />
                          <xs:enumeration value="OB" />
                          <xs:enumeration value="LE" />
                          <xs:enumeration value="RW" />
                          <xs:enumeration value="SP" />
                          <xs:enumeration value="V" />
                          <xs:enumeration value="H" />
                          <xs:enumeration value="WT" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="event-subtype-id" type="xs:string">
                      <xs:annotation>
                        <xs:documentation>The ID corresponding to the sub-type of the event based on the TOCS event sub-types. A list of possible event sub-types can be found via the Incidents Metadata feed</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="update-time" type="xs:dateTime" />
                    <xs:element name="create-time" type="xs:dateTime" />
                    <xs:element name="is-active" type="xs:boolean">
                      <xs:annotation>
                        <xs:documentation>A boolean value which determines whether the work zone of the event is currently active or not. Possible values: true or false.</xs:documentation>
                      </xs:annotation>
                    </xs:element>
                    <xs:element name="impact-id">
                      <xs:simpleType>
                        <xs:restriction base="xs:string">
                          <xs:pattern value="[0-8]|A" />
                        </xs:restriction>
                      </xs:simpleType>
                    </xs:element>
                    <xs:element name="impact-desc" type="xs:string" />
                    <xs:element name="headline" type="xs:string" />
                    <xs:element name="comments" type="xs:string" />
                    <xs:element name="location">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="location-name" type="xs:string" />
                          <xs:element name="route-id" type="xs:string" />
                          <xs:element name="hwy-id" type="xs:string" />
                          <xs:element name="direction">
                            <xs:simpleType>
                              <xs:restriction base="xs:string">
                                <xs:enumeration value="NB" />
                                <xs:enumeration value="SB" />
                                <xs:enumeration value="WB" />
                                <xs:enumeration value="EB" />
                                <xs:enumeration value="" />
                              </xs:restriction>
                            </xs:simpleType>
                          </xs:element>
                          <xs:element minOccurs="0" name="geometry-wkt-line" type="xs:string" />
                          <xs:element name="start-location">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="location-desc" type="xs:string" />
                                <xs:element name="start-lat" type="xs:double" />
                                <xs:element name="start-long" type="xs:double" />
                                <xs:element name="start-milepost" type="xs:decimal" />
                                <xs:element name="start-point-geometry-wkt" type="xs:string" />
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                          <xs:element minOccurs="0" name="end-location">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" name="location-desc" type="xs:string" />
                                <xs:element minOccurs="0" name="end-lat" type="xs:double" />
                                <xs:element minOccurs="0" name="end-long" type="xs:double" />
                                <xs:element minOccurs="0" name="end-milepost" type="xs:decimal" />
                                <xs:element minOccurs="0" name="end-point-geometry-wkt" type="xs:string" />
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="travel-lanes">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element name="decreasing-direction" type="xs:string" />
                          <xs:element name="decreasing-lane-count" type="xs:int" />
                          <xs:element name="increasing-direction" type="xs:string" />
                          <xs:element name="increasing-lane-count" type="xs:int" />
                          <xs:element name="lane-edge-reference" type="xs:string" />
                          <xs:element minOccurs="0" nillable="true" name="affected-lanes">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" name="lane">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="lane-id">
                                        <xs:simpleType>
                                          <xs:restriction base="xs:string">
                                            <xs:enumeration value="A" />
                                            <xs:enumeration value="B" />
                                            <xs:enumeration value="C" />
                                            <xs:enumeration value="D" />
                                            <xs:enumeration value="E" />
                                            <xs:enumeration value="M" />
                                            <xs:enumeration value="S" />
                                            <xs:enumeration value="I" />
                                            <xs:enumeration value="X" />
                                          </xs:restriction>
                                        </xs:simpleType>
                                      </xs:element>
                                      <xs:element name="lane-type">
                                         <xs:simpleType>
                                          <xs:restriction base="xs:string">
                                            <xs:enumeration value="lane" />
                                            <xs:enumeration value="left-lane" />
                                            <xs:enumeration value="left-middle-lane" />
                                            <xs:enumeration value="middle-lane" />
                                            <xs:enumeration value="right-middle-lane" />
                                            <xs:enumeration value="right-lane" />
                                            <xs:enumeration value="median" />
                                            <xs:enumeration value="shoulder" />
                                            <xs:enumeration value="intersection" />
                                            <xs:enumeration value="cross-street" />
                                          </xs:restriction>
                                        </xs:simpleType>
                                      </xs:element>
                                      <xs:element name="direction">
                                        <xs:simpleType>
                                          <xs:restriction base="xs:string">
                                            <xs:enumeration value="NB" />
                                            <xs:enumeration value="SB" />
                                            <xs:enumeration value="WB" />
                                            <xs:enumeration value="EB" />
                                            <xs:enumeration value="BTH" />
                                            <xs:enumeration value="" />
                                          </xs:restriction>
                                        </xs:simpleType>
                                      </xs:element>
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element name="off-hwy-lanes">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element minOccurs="0" name="affected-lanes">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" maxOccurs="unbounded" name="lane">
                                  <xs:complexType>
                                    <xs:sequence>
                                      <xs:element name="lane-id">
                                        <xs:simpleType>
                                          <xs:restriction base="xs:string">
                                            <xs:enumeration value="F" />
                                            <xs:enumeration value="OF" />
                                            <xs:enumeration value="ON" />
                                            <xs:enumeration value="RA" />
                                          </xs:restriction>
                                        </xs:simpleType>
                                      </xs:element>
                                      <xs:element name="lane-type">
                                       <xs:simpleType>
                                          <xs:restriction base="xs:string">
                                            <xs:enumeration value="frontage-road" />
                                            <xs:enumeration value="off-ramp" />
                                            <xs:enumeration value="on-ramp" />
                                            <xs:enumeration value="rest-area" />
                                          </xs:restriction>
                                        </xs:simpleType>
                                      </xs:element>
                                      <xs:element name="direction">
                                        <xs:simpleType>
                                          <xs:restriction base="xs:string">
                                            <xs:enumeration value="NB" />
                                            <xs:enumeration value="SB" />
                                            <xs:enumeration value="WB" />
                                            <xs:enumeration value="EB" />
                                            <xs:enumeration value="" />
                                          </xs:restriction>
                                        </xs:simpleType>
                                      </xs:element>
                                    </xs:sequence>
                                  </xs:complexType>
                                </xs:element>
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="schedule">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element minOccurs="0" name="project-schedule">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element minOccurs="0" name="start-date-time" type="xs:dateTime" />
                                <xs:element minOccurs="0" name="end-date-time" type="xs:dateTime" />
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                    <xs:element minOccurs="0" name="info-url" type="xs:string" />
                    <xs:element minOccurs="0" name="files">
                      <xs:complexType>
                        <xs:sequence>
                          <xs:element minOccurs="0" maxOccurs="unbounded" name="file">
                            <xs:complexType>
                              <xs:sequence>
                                <xs:element name="url" type="xs:string" />
                                <xs:element name="file-description" type="xs:string" />
                              </xs:sequence>
                            </xs:complexType>
                          </xs:element>
                        </xs:sequence>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>