<?xml version="1.0" standalone="yes"?>
<xs:schema elementFormDefault="qualified" version="1.0" targetNamespace="http://mobikat.net/service/streetNetwork/parameters/types" xmlns:tns="http://mobikat.net/service/streetNetwork/parameters/types" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:ns1="http://mobikat.net/service/common/types">

  <xs:import namespace="http://mobikat.net/service/common/types" schemaLocation="http://routing.mobikat.net/rest/parameters/schema?file=schema2.xsd"/>

  <xs:element name="DefineTrafficSituationRequest" type="tns:DefineTrafficSituationRequest"/>

  <xs:element name="DeleteTrafficSituationRequest" type="tns:DeleteTrafficSituationRequest"/>

  <xs:element name="EnableTrafficSituationRequest" type="tns:EnableTrafficSituationRequest"/>

  <xs:element name="ListStreetSectionsRequest" type="tns:ListStreetSectionsRequest"/>

  <xs:element name="ListStreetSectionsResponse" type="tns:ListStreetSectionsResponse"/>

  <xs:element name="ListTrafficSituationsRequest" type="tns:ListTrafficSituationsRequest"/>

  <xs:element name="ListTrafficSituationsResponse" type="tns:ListTrafficSituationsResponse"/>

  <xs:element name="StreetSectionsInAreaRequest" type="tns:StreetSectionsInAreaRequest"/>

  <xs:element name="StreetSectionsInAreaResponse" type="tns:StreetSectionsInAreaResponse"/>

  <xs:complexType name="DefineTrafficSituationRequest">
    <xs:complexContent>
      <xs:extension base="ns1:RequestBase">
        <xs:sequence>
          <xs:element name="trafficSituation" type="tns:TrafficSituation"/>
          <xs:element name="overwrite" type="xs:boolean" default="true" minOccurs="0"/>
          <xs:element name="checkLastUpdate" type="xs:boolean" default="false" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="TrafficSituation">
    <xs:sequence>
      <xs:element name="id" type="xs:string"/>
      <xs:element name="comment" type="xs:string" minOccurs="0"/>
      <xs:element name="categories" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="disabled" type="xs:boolean"/>
      <xs:element name="validityPeriods" type="tns:TimePeriod" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="limitations" type="tns:Limitation" maxOccurs="unbounded"/>
      <xs:element name="lastUpdate" type="xs:dateTime" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="TimePeriod">
    <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="comment" type="xs:string"/>
      <xs:element name="dateFrom" type="xs:dateTime"/>
      <xs:element name="dateTo" type="xs:dateTime"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Limitation">
    <xs:sequence>
      <xs:element name="id" type="xs:string" minOccurs="0"/>
      <xs:element name="comment" type="xs:string" minOccurs="0"/>
      <xs:element name="type" type="tns:LimitationType"/>
      <xs:element name="value" type="xs:double"/>
      <xs:element name="streetSectionParts" type="tns:StreetSectionPart" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="StreetSectionPart">
    <xs:sequence>
      <xs:element name="streetSectionId" type="xs:long"/>
      <xs:element name="start" type="xs:double"/>
      <xs:element name="end" type="xs:double"/>
      <xs:element name="direction1" type="xs:boolean"/>
      <xs:element name="direction2" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="DeleteTrafficSituationRequest">
    <xs:complexContent>
      <xs:extension base="ns1:RequestBase">
        <xs:sequence>
          <xs:element name="trafficSituationIds" type="xs:string" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="EnableTrafficSituationRequest">
    <xs:complexContent>
      <xs:extension base="ns1:RequestBase">
        <xs:sequence>
          <xs:element name="trafficSituationIds" type="xs:string" maxOccurs="unbounded"/>
          <xs:element name="disabled" type="xs:boolean"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ListStreetSectionsResponse">
    <xs:complexContent>
      <xs:extension base="ns1:ResponseBase">
        <xs:sequence>
          <xs:element name="streetSections" type="tns:StreetSection" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="StreetSection">
    <xs:sequence>
      <xs:element name="id" type="xs:long"/>
      <xs:element name="name" type="xs:string" minOccurs="0"/>
      <xs:element name="streetName" type="xs:string" minOccurs="0"/>
      <xs:element name="streetNumber" type="xs:string" minOccurs="0"/>
      <xs:element name="coordinates" type="xs:string" minOccurs="0"/>
      <xs:element name="direction1" type="xs:boolean"/>
      <xs:element name="direction2" type="xs:boolean"/>
      <xs:element name="intersectionParts" type="tns:intersectionPart" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="intersectionPart">
    <xs:sequence>
      <xs:element name="start" type="xs:double" default="0.0"/>
      <xs:element name="end" type="xs:double"/>
      <xs:element name="coordinates" type="xs:string" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ListStreetSectionsRequest">
    <xs:complexContent>
      <xs:extension base="ns1:RequestBase">
        <xs:sequence>
          <xs:element name="ids" type="xs:long" maxOccurs="unbounded"/>
          <xs:element name="includeCoordinates" type="xs:boolean" default="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ListTrafficSituationsResponse">
    <xs:complexContent>
      <xs:extension base="ns1:ResponseBase">
        <xs:sequence>
          <xs:element name="trafficSituations" type="tns:TrafficSituation" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="ListTrafficSituationsRequest">
    <xs:complexContent>
      <xs:extension base="ns1:RequestBase">
        <xs:sequence>
          <xs:element name="filter" type="tns:TrafficSituationFilter"/>
          <xs:element name="includeLimitations" type="xs:boolean" default="false" minOccurs="0"/>
          <xs:element name="includeValidityPeriods" type="xs:boolean" default="false" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="TrafficSituationFilter">
    <xs:sequence>
      <xs:element name="trafficSituationIds" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="categories" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="disabled" type="xs:boolean" minOccurs="0"/>
      <xs:element name="valid" type="xs:boolean" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="StreetSectionsInAreaResponse">
    <xs:complexContent>
      <xs:extension base="ns1:ResponseBase">
        <xs:sequence>
          <xs:element name="streetSections" type="tns:StreetSection" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="StreetSectionsInAreaRequest">
    <xs:complexContent>
      <xs:extension base="ns1:RequestBase">
        <xs:sequence>
          <xs:element name="areaWkt" type="xs:string"/>
          <xs:element name="fullyInside" type="xs:boolean" minOccurs="0"/>
          <xs:element name="intersectionType" type="tns:IntersectionType" minOccurs="0"/>
          <xs:element name="includeCoordinates" type="xs:boolean" default="true" minOccurs="0"/>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:simpleType name="LimitationType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="closed"/>
      <xs:enumeration value="velocityFactor"/>
      <xs:enumeration value="maxVelocity"/>
      <xs:enumeration value="velocity"/>
      <xs:enumeration value="minTime"/>
      <xs:enumeration value="time"/>
      <xs:enumeration value="timePenalty"/>
      <xs:enumeration value="ignoreOneWay"/>
    </xs:restriction>
  </xs:simpleType>

  <xs:simpleType name="IntersectionType">
    <xs:restriction base="xs:string">
      <xs:enumeration value="fullyInside"/>
      <xs:enumeration value="partlyInside"/>
      <xs:enumeration value="exactly"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

