<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:st="http://www.axis.com/webservice/camerastation/schema" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xop="http://www.w3.org/2004/08/xop/include" targetNamespace="http://www.axis.com/webservice/camerastation/schema" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <!--===============================-->
  <!--         Generic Types         -->
  <!--===============================-->
  <xs:simpleType name="ReferenceToken">
    <xs:restriction base="xs:string">
      <xs:maxLength value="64"/>
    </xs:restriction>
  </xs:simpleType>
  <!--===============================-->
  <xs:complexType name="Version">
    <xs:sequence>
      <xs:element name="Major" type="xs:int"/>
      <xs:element name="Minor" type="xs:int"/>
    </xs:sequence>
  </xs:complexType>
  <!--===============================-->
  <!--         CameraStation Types         -->
  <!--===============================-->
  <xs:simpleType name="RecordingSourceReference">
    <xs:restriction base="st:ReferenceToken"/>
  </xs:simpleType>
  <!--===============================-->
  <xs:complexType name="VideoAttributes">
    <xs:sequence>
      <xs:element name="Width" type="xs:int"/>
      <xs:element name="Height" type="xs:int"/>
      <xs:element name="Quality" type="xs:float"/>
      <xs:element name="Framerate" type="st:Framerate"/>
      <xs:element name="Bitrate" type="xs:int"/>
      <xs:element name="Encoding" type="st:VideoEncoding"/>
    </xs:sequence>
  </xs:complexType>
  <!--===============================-->
  <xs:simpleType name="Framerate">
    <xs:restriction base="xs:float">
      <xs:minInclusive value="0"/>
    </xs:restriction>
  </xs:simpleType>
  <!--===============================-->
  <xs:simpleType name="VideoEncoding">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Undefined"/>
      <xs:enumeration value="JPEG"/>
      <xs:enumeration value="MPEG4"/>
      <xs:enumeration value="H264"/>
    </xs:restriction>
  </xs:simpleType>
  <!--===============================-->
  <xs:complexType name="AudioAttributes">
    <xs:sequence>
      <xs:element name="Samplerate" type="xs:int"/>
      <xs:element name="Bitrate" type="xs:int"/>
      <xs:element name="Encoding" type="st:AudioEncoding"/>
    </xs:sequence>
  </xs:complexType>
  <!--===============================-->
  <xs:simpleType name="AudioEncoding">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Undefined"/>
      <xs:enumeration value="G711"/>
      <xs:enumeration value="G726"/>
      <xs:enumeration value="AAC"/>
    </xs:restriction>
  </xs:simpleType>
  <!--===============================-->
  <xs:complexType name="Filter">
    <xs:sequence>
      <xs:element name="IncludeFunctions" type="st:FilterFunction" minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="ExcludeFunctions" type="st:FilterFunction" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>
  <!--===============================-->
  <xs:complexType name="FilterFunction">
    <xs:sequence>
      <xs:element name="Operand" type="st:FilterOperand"/>
      <xs:element name="Operator" type="st:FilterOperator"/>
      <xs:element name="Value" type="st:FilterValue"/>
    </xs:sequence>
  </xs:complexType>
  <!--===============================-->
  <xs:simpleType name="FilterOperator">
    <xs:restriction base="xs:string">
      <xs:enumeration value="Equals"/>
      <xs:enumeration value="NotEqual"/>
      <xs:enumeration value="LessThan"/>
      <xs:enumeration value="GreaterThan"/>
      <xs:enumeration value="Contains"/>
    </xs:restriction>
  </xs:simpleType>
  <!--===============================-->
  <xs:simpleType name="FilterOperand">
    <xs:restriction base="xs:string">
      <xs:enumeration value="RecordingToken"/>
      <xs:enumeration value="RecordingBlockToken"/>
      <xs:enumeration value="SourceToken"/>
      <xs:enumeration value="SourceName"/>
      <xs:enumeration value="SourceAddress"/>
      <xs:enumeration value="Content"/>
      <xs:enumeration value="UserData"/>
      <xs:enumeration value="StartTime"/>
      <xs:enumeration value="StopTime"/>
      <xs:enumeration value="VideoWidth"/>
      <xs:enumeration value="VideoHeight"/>
      <xs:enumeration value="VideoQuality"/>
      <xs:enumeration value="VideoFramerate"/>
      <xs:enumeration value="VideoBitrate"/>
      <xs:enumeration value="VideoEncoding"/>
      <xs:enumeration value="AudioSampleRate"/>
      <xs:enumeration value="AudioBitrate"/>
      <xs:enumeration value="AudioEncoding"/>
      <xs:enumeration value="NumberRecordingBlocks"/>
      <xs:enumeration value="NumberLocks"/>
      <xs:enumeration value="RecordingStatus"/>
      <xs:enumeration value="RecordingSize"/>
    </xs:restriction>
  </xs:simpleType>
  <!--===============================-->
  <xs:simpleType name="FilterValue">
    <xs:restriction base="xs:string">
      <xs:maxLength value="1024"/>
    </xs:restriction>
  </xs:simpleType>
  <!--===============================-->
  <!--        MediaConfiguration Types        -->
  <!--===============================-->
  <xs:complexType name="RecordingProfile">
    <xs:sequence>
      <xs:element name="SourceToken" type="xs:string" />
      <xs:element name="VideoEncoding" type="st:VideoEncoding" />
      <xs:element name="Framerate" type="xs:float" />
      <xs:element name="Compression" type="xs:int" />
      <xs:element name="Resolution" type="xs:string" />
      <xs:element name="Prebuffer" type="xs:string" />
      <xs:element name="Postbuffer" type="xs:string" />
      <xs:element name="AudioEncoding" type="st:AudioEncoding" />
    </xs:sequence>
  </xs:complexType>
	<!--===============================-->
	<xs:complexType name="StreamProfile">
		<xs:sequence>
			<xs:element name="SourceToken" type="xs:string" />
			<xs:element name="VideoEncoding" type="st:VideoEncoding" />
			<xs:element name="Framerate" type="xs:float" />
			<xs:element name="Compression" type="xs:int" />
			<xs:element name="Resolution" type="xs:string" />
			<xs:element name="AudioEncoding" type="st:AudioEncoding" />
		</xs:sequence>
	</xs:complexType>
  <!--===============================-->
  <xs:complexType name="Transport">
    <xs:sequence>
      <xs:element name="Protocol" type="st:TransportProtocol"/>
      <xs:element name="Tunnel" type="st:Transport" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
  <!--===============================-->
  <xs:simpleType name="TransportProtocol">
    <xs:restriction base="xs:string">
      <xs:enumeration value="UDP"/>
      <xs:enumeration value="TCP"/>
      <xs:enumeration value="RTSP"/>
      <xs:enumeration value="RTSPS"/>
      <xs:enumeration value="HTTP"/>
      <xs:enumeration value="HTTPS"/>
    </xs:restriction>
  </xs:simpleType>
  <!--===============================-->
  <xs:complexType name="MediaUri">
    <xs:sequence>
      <xs:element name="Uri" type="xs:anyURI"/>
      <xs:element name="InvalidAfterConnect" type="xs:boolean"/>
      <xs:element name="InvalidAfterReboot" type="xs:boolean"/>
      <xs:element name="Timeout" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
	<!--===============================-->
	<xs:simpleType name="PtzInformation">
		<xs:restriction base="xs:string">
			<xs:maxLength value="2048"/>
		</xs:restriction>
	</xs:simpleType>
  <!--===============================-->
  <!--         MediaStorage Types          -->
  <!--===============================-->
  <xs:complexType name="StorageSpace">
    <xs:sequence>
      <xs:element name="Free" type="xs:long" />
      <xs:element name="Total" type="xs:long" />
      <xs:element name="Location" type="xs:string" />
    </xs:sequence>
	</xs:complexType>
    <!--===============================-->
  <!--         DeviceManagement Types          -->
  <!--===============================-->
  <xs:complexType name="SourceCapability">
    <xs:sequence>
      <xs:element name="SourceToken" type="xs:string" />
      <xs:element name="HasAudioIn" type="xs:boolean" />
      <xs:element name="VideoResolutions" type="xs:string" minOccurs="0" maxOccurs="unbounded" />
      <xs:element name="VideoEncodings" type="st:VideoEncoding" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <!--===============================-->
  <xs:complexType name="SourceStatus">
    <xs:sequence>
      <xs:element name="IsRecording" type="xs:boolean" />
      <xs:element name="IsInMaintenance" type="xs:boolean" />
      <xs:element name="IsEnabled" type="xs:boolean" />
      <xs:element name="IsOnline" type="xs:boolean" />
      <xs:element name="SourceToken" type="xs:string" />
    </xs:sequence>
  </xs:complexType>
  <!--===============================-->
	<xs:complexType name="PortInformationList">
		<xs:sequence>
			<xs:element name="Total" type="xs:int"/>
			<xs:element name="Skipped" type="xs:int"/>
			<xs:element name="Taken" type="xs:int"/>
			<xs:element name="PortInformation" type="st:PortInformation" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!--===============================-->
	<xs:complexType name="PortInformation">
		<xs:sequence>
			<xs:element name="PortToken" type="st:ReferenceToken"/>
			<xs:element name="Name" type="xs:string"/>
			<xs:element name="Type" type="st:PortType"/>
			<xs:element name="State" type="st:PortState"/>
		</xs:sequence>
		<xs:attribute name="token" type="st:ReferenceToken"/>
	</xs:complexType>
	<!--===============================-->
	<xs:simpleType name="PortType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Unknown"/>
			<xs:enumeration value="Input"/>
			<xs:enumeration value="Output"/>
		</xs:restriction>
	</xs:simpleType>
	<!--===============================-->
	<xs:simpleType name="PortState">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Unknown"/>
			<xs:enumeration value="Active"/>
			<xs:enumeration value="Inactive"/>
			<xs:enumeration value="Changing"/>
		</xs:restriction>
	</xs:simpleType>
	<!--===============================-->
	<!--         EventManagement Types        -->
	<!--===============================-->
	<xs:complexType name="AlarmInformationList">
		<xs:sequence>
			<xs:element name="Total" type="xs:int"/>
			<xs:element name="Skipped" type="xs:int"/>
			<xs:element name="Taken" type="xs:int"/>
			<xs:element name="AlarmInformation" type="st:AlarmInformation" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<!--===============================-->
	<xs:complexType name="AlarmInformation">
		<xs:sequence>
			<xs:element name="EventToken" type="st:ReferenceToken"/>
			<xs:element name="Time" type="xs:dateTime"/>
			<xs:element name="Type" type="st:AlarmType"/>
			<xs:element name="Key" type="st:AlarmKey"/>
			<xs:element name="Value" type="xs:string"/>
			<xs:element name="Title" type="xs:string"/>
			<xs:element name="Acknowledged" type="xs:boolean"/>
		</xs:sequence>
	</xs:complexType>
	<!--===============================-->
	<xs:simpleType name="AlarmType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Undefined"/>
			<xs:enumeration value="RuleAlarm"/>
			<xs:enumeration value="PredefinedMD"/>
			<xs:enumeration value="CameraStatusDown"/>
			<xs:enumeration value="DiskAccessDenied"/>
			<xs:enumeration value="WindowsFirewallOn"/>
			<xs:enumeration value="DiskFull"/>
			<xs:enumeration value="MailNotSent"/>
			<xs:enumeration value="ActionFailingRule"/>
			<xs:enumeration value="TriggerFailingRule"/>
			<xs:enumeration value="RuleNotExecutable"/>
			<xs:enumeration value="IntrudingDiskData"/>
			<xs:enumeration value="RecordingExportFailed"/>
			<xs:enumeration value="RecordingExportDiskSpaceShortage"/>
			<xs:enumeration value="FailoverDiskFull"/>
			<xs:enumeration value="FailoverDiskAccessError"/>
			<xs:enumeration value="AuxDeviceStatusDown"/>
		</xs:restriction>
	</xs:simpleType>
	<!--===============================-->
	<xs:simpleType name="AlarmKey">
		<xs:restriction base="xs:string">
			<xs:enumeration value="None"/>
			<xs:enumeration value="CameraName"/>
			<xs:enumeration value="IOPortName"/>
			<xs:enumeration value="DiskPath"/>
			<xs:enumeration value="MailRecipient"/>
			<xs:enumeration value="RuleName"/>
			<xs:enumeration value="Action"/>
			<xs:enumeration value="Trigger"/>
			<xs:enumeration value="RecordingExportDirectory"/>
			<xs:enumeration value="DeviceAddress"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>
