<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified" attributeFormDefault="unqualified">
	<xsd:simpleType name="HSMEID">
		<xsd:restriction base="xsd:positiveInteger">
			<xsd:totalDigits value="15"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="HSMID">
		<xsd:restriction base="NonZeroLengthString">
			<xsd:maxLength value="40"/>
			<xsd:pattern value="[A-Z0-9_]*"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="HSMPlant">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="Bus"/>
			<xsd:enumeration value="Generator"/>
			<xsd:enumeration value="Load"/>
			<xsd:enumeration value="Region"/>
			<xsd:enumeration value="Shunt"/>
			<xsd:enumeration value="Station"/>
			<xsd:enumeration value="Static VAR Compensator"/>
			<xsd:enumeration value="Switch"/>
			<xsd:enumeration value="Transformer"/>
			<xsd:enumeration value="Transmission Line"/>
			<xsd:enumeration value="Zero Impedance Branch"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="HSMQuantity">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="Angle Blue"/>
			<xsd:enumeration value="Angle Positive Sequence"/>
			<xsd:enumeration value="Angle Red"/>
			<xsd:enumeration value="Angle White"/>
			<xsd:enumeration value="Frequency"/>
			<xsd:enumeration value="Power Blue"/>
			<xsd:enumeration value="Power Red"/>
			<xsd:enumeration value="Power Three Phase"/>
			<xsd:enumeration value="Power White"/>
			<xsd:enumeration value="Reactive Power Blue"/>
			<xsd:enumeration value="Reactive Power Red"/>
			<xsd:enumeration value="Reactive Power Three Phase"/>
			<xsd:enumeration value="Reactive Power White"/>
			<xsd:enumeration value="Voltage Blue"/>
			<xsd:enumeration value="Voltage Positive Sequence"/>
			<xsd:enumeration value="Voltage Red"/>
			<xsd:enumeration value="Voltage White"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="HSMStatus">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="Offline"/>
			<xsd:enumeration value="Synchronised"/>
			<xsd:enumeration value="Unsynchronised"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="HSMSource">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="Continuous"/>
			<xsd:enumeration value="Triggered"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="HSMCompression">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="7Zip"/>
			<xsd:enumeration value="BZip2"/>
			<xsd:enumeration value="Rar"/>
			<xsd:enumeration value="Zip"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:simpleType name="HSMFormat">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="COMTRADE Configuration"/>
			<xsd:enumeration value="COMTRADE Data"/>
		</xsd:restriction>
	</xsd:simpleType>
	<xsd:complexType name="HSMMonitorIdentities">
		<xsd:sequence>
			<xsd:element name="MonitorIdentity" type="HSMMonitorIdentity" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="HSMMonitorIdentity">
		<xsd:sequence>
			<xsd:element name="StationEID" type="HSMEID"/>
			<xsd:element name="MonitorID" type="HSMID"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="HSMMonitorCapabilities">
		<xsd:sequence>
			<xsd:element name="MonitorCapability" type="HSMMonitorCapability" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="HSMMonitorCapability">
		<xsd:complexContent>
			<xsd:extension base="HSMMonitorIdentity">
				<xsd:sequence>
					<xsd:element name="MonitorChannels" type="HSMMonitorChannels" nillable="true"/>
				</xsd:sequence>
				<xsd:attribute name="capabilityDate" type="xsd:dateTime" use="required"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="HSMMonitorChannel">
		<xsd:sequence>
			<xsd:element name="EID" type="HSMEID"/>
			<xsd:element name="Index">
				<xsd:simpleType>
					<xsd:restriction base="xsd:positiveInteger">
						<xsd:totalDigits value="10"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="Plant" type="HSMPlant"/>
			<xsd:element name="Quantity" type="HSMQuantity"/>
			<xsd:element name="Name" type="HSMID" nillable="true"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="HSMMonitorChannels">
		<xsd:sequence>
			<xsd:element name="MonitorChannel" type="HSMMonitorChannel" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="HSMMonitorRollCalls">
		<xsd:sequence>
			<xsd:element name="MonitorRollCall" type="HSMMonitorRollCall" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	<xsd:complexType name="HSMMonitorRollCall">
		<xsd:complexContent>
			<xsd:extension base="HSMMonitorIdentity">
				<xsd:sequence>
					<xsd:element name="Status" type="HSMStatus"/>
					<xsd:element name="LastCapabilityUpdate" type="xsd:dateTime" nillable="true"/>
					<xsd:element name="EarliestData" type="xsd:dateTime" nillable="true"/>
					<xsd:element name="LatestData" type="xsd:dateTime" nillable="true"/>
					<xsd:element name="CurrentMonitorTime" type="xsd:dateTime" nillable="true"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="HSMMonitorData">
		<xsd:complexContent>
			<xsd:extension base="HSMMonitorIdentity">
				<xsd:sequence>
					<xsd:sequence>
						<xsd:element name="CapabilityDate" type="xsd:dateTime" nillable="false"/>
						<xsd:element name="MonitorStatus" type="HSMStatus"/>
					</xsd:sequence>
					<xsd:choice>
						<xsd:element name="ComtradeText" type="HSMComtradeText" nillable="true"/>
						<xsd:element name="ComtradeCompressed" nillable="true">
							<xsd:complexType>
								<xsd:simpleContent>
									<xsd:extension base="xsd:base64Binary">
										<xsd:attribute name="format" type="HSMCompression" use="required"/>
									</xsd:extension>
								</xsd:simpleContent>
							</xsd:complexType>
						</xsd:element>
					</xsd:choice>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="HSMComtradeText">
		<xsd:sequence>
			<xsd:element name="Configuration" type="NonZeroLengthString" nillable="true"/>
			<xsd:element name="Data" type="NonZeroLengthString" nillable="true"/>
		</xsd:sequence>
	</xsd:complexType>
	<!--concrete transaction payload types-->
	<xsd:complexType name="ElectricityHSMMonitorDataRequestData">
		<xsd:complexContent>
			<xsd:extension base="HSMMonitorDataRequestData">
				<xsd:sequence>
					<xsd:element name="MonitorIdentity" type="HSMMonitorIdentity"/>
					<xsd:element name="StartTime" type="xsd:dateTime"/>
					<xsd:element name="EndTime" type="xsd:dateTime"/>
				</xsd:sequence>
				<xsd:attribute name="version" type="r21" default="r21"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ElectricityHSMMonitorDataResponseData">
		<xsd:complexContent>
			<xsd:extension base="HSMMonitorDataResponseData">
				<xsd:sequence>
					<xsd:element name="ContinuousData" type="HSMMonitorData" nillable="true"/>
				</xsd:sequence>
				<xsd:attribute name="version" type="r23" default="r23"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ElectricityHSMMonitorsRequestData">
		<xsd:complexContent>
			<xsd:extension base="HSMMonitorsRequestData">
				<xsd:sequence>
					<xsd:element name="MonitorIdentities" type="HSMMonitorIdentities" nillable="true"/>
				</xsd:sequence>
				<xsd:attribute name="requestName" use="required">
					<xsd:simpleType>
						<xsd:restriction base="xsd:string">
							<xsd:enumeration value="RollCall"/>
							<xsd:enumeration value="Capability"/>
						</xsd:restriction>
					</xsd:simpleType>
				</xsd:attribute>
				<xsd:attribute name="allMonitors" type="xsd:boolean" use="required"/>
				<xsd:attribute name="version" type="r21" default="r21"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ElectricityHSMMonitorsResponseData">
		<xsd:complexContent>
			<xsd:extension base="HSMMonitorsResponseData">
				<xsd:choice>
					<xsd:element name="MonitorRollCalls" type="HSMMonitorRollCalls" nillable="true"/>
					<xsd:element name="MonitorCapabilities" type="HSMMonitorCapabilities" nillable="true"/>
				</xsd:choice>
				<xsd:attribute name="version" type="r21" default="r21"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	<xsd:complexType name="ElectricityHSMTriggeredDataNotificationData">
		<xsd:complexContent>
			<xsd:extension base="HSMTriggeredDataNotificationData">
				<xsd:sequence>
					<xsd:element name="TriggeredData" type="HSMMonitorData" nillable="true"/>
				</xsd:sequence>
				<xsd:attribute name="version" type="r23" default="r23"/>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
</xsd:schema>
