<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<wsdl:definitions xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:u="http://www.universal-devices.com/wsdk/isy/1.0" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="udi" targetNamespace="http://www.universal-devices.com/wsdk/isy/1.0">
	<wsdl:documentation>
		Copyright 2007/2008 Universal Devices, Inc.
		All Rights Reserved

		Web Services Flag, Objects, Parameters, Messages, and Bindings for ISY
	</wsdl:documentation>

	<wsdl:types>
	<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.universal-devices.com/wsdk/isy/1.0">

	<!-- FLAGS -->
	<xsd:simpleType name="ISYStatusFlag">
		<xsd:annotation>
			<xsd:documentation>
				The status of ISY
				0 = Initializing: in the process of initializing device(s)
				1 = Querying: in the process of querying a device
				2 = Discovery: in discovery/linking mode
				3 = Busy: it's busy may ignore requests
				10 = Ready: idle or low impact activities
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:byte">
			<xsd:enumeration value="0"></xsd:enumeration><!-- Init -->
			<xsd:enumeration value="1"></xsd:enumeration><!-- Querying -->
			<xsd:enumeration value="2"></xsd:enumeration><!-- Discovery -->
			<xsd:enumeration value="3"></xsd:enumeration><!-- Busy -->
			<xsd:enumeration value="10"></xsd:enumeration><!-- Ready -->
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="NodeTypeFlag">
		<xsd:annotation>
			<xsd:documentation>
				All possible options for the node type:
				1 = node
				4 = group/scene
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:byte">
			<xsd:enumeration value="1"></xsd:enumeration><!-- Node -->
			<xsd:enumeration value="4"></xsd:enumeration><!-- Scene -->
			<xsd:enumeration value="8"></xsd:enumeration><!-- X10 -->
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="NodeOperationsFlag">
		<xsd:annotation>
			<xsd:documentation>
				All possible options for when a new node is either created or
				discovered using the underlying protocol
				1 = add the node and reset all previous setting if any
				2 = unused
				3 = add the node, find all the associated nodes, and create all the linkages thereto
				4 = add the node, find all the associated nodes, but do not create any linkages
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:byte">
			<xsd:enumeration value="1"/>
			<xsd:enumeration value="2"/>
			<xsd:enumeration value="3"/>
			<xsd:enumeration value="4"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="LinkModeFlag">
		<xsd:annotation>
			<xsd:documentation>
				Possible flags for when a node is linked or the type of mode for
				the modem in discovery mode
				0x10 (16 decimal) = Controller; The node is going to be a controller for the scene
				0x20 (32 decimal) = Responder ; The node is going to be a responder in the scene
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:byte">
			<xsd:enumeration value="16"/>
			<xsd:enumeration value="32"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="InternetAccessFlag">
		<xsd:annotation>
			<xsd:documentation>
				0x18 (24 decimal) = Enable Internet Access
				0x26 (38 decimal) = Disable Internet Access
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:byte">
			<xsd:enumeration value="24"/>
			<xsd:enumeration value="38"/>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="RestoreDevicesFlag">
		<xsd:annotation>
			<xsd:documentation>
				0 = All shall be restored from the configuration files in ISY
				1 = Does not regenerate groups/scenes - good for testing
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:byte">
			<xsd:enumeration value="0"/>
			<xsd:enumeration value="1"/>
		</xsd:restriction>
	</xsd:simpleType>
	
	<xsd:simpleType name="SetNodeEnabledFlag">
		<xsd:annotation>
			<xsd:documentation>
				0 = The node shall be disabled
				1 = The node shall be enabled
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:byte">
			<xsd:enumeration value="0"/>
			<xsd:enumeration value="1"/>
		</xsd:restriction>
	</xsd:simpleType>	
	
	<xsd:simpleType name="NodeHierarchyFlag">
		<xsd:annotation>
			<xsd:documentation>
				0 = The node type is not set
				1 = The node type is of type node
				2 = The node type is of type group/scene
				3 = The node type is of type folder/location
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:byte">
			<xsd:enumeration value="0"/>
			<xsd:enumeration value="1"/>
			<xsd:enumeration value="2"/>
			<xsd:enumeration value="3"/>
		</xsd:restriction>
	</xsd:simpleType>		

	<xsd:simpleType name="HTMLRoleFlag">
		<xsd:annotation>
			<xsd:documentation>
			 	1 = Read only
				2 = Basic
				3 = Advanced
				4 = Admin
				Default:Basic
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:integer">
			<xsd:enumeration value="1"/>
			<xsd:enumeration value="2"/>
			<xsd:enumeration value="3"/>
			<xsd:enumeration value="4"/>
		</xsd:restriction>
	</xsd:simpleType>

	<!-- OBJECTS -->
	<xsd:simpleType name="ControlTypes">
		<xsd:annotation>
			<xsd:documentation>
				All possible values for control
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="DON"></xsd:enumeration><!-- Device On -->
			<xsd:enumeration value="DFON"></xsd:enumeration><!-- Device Fast On -->
			<xsd:enumeration value="DOF"></xsd:enumeration><!-- Device Off -->
			<xsd:enumeration value="DFOF"></xsd:enumeration><!-- Device Fast Off -->
			<xsd:enumeration value="ST"></xsd:enumeration><!-- Status -->
			<xsd:enumeration value="OL"></xsd:enumeration><!-- On Level -->
			<xsd:enumeration value="RR"></xsd:enumeration><!-- Ramp Rate -->
			<xsd:enumeration value="BMAN"></xsd:enumeration><!-- Start Manual Change -->
			<xsd:enumeration value="SMAN"></xsd:enumeration><!-- Stop Manual Change -->
			<xsd:enumeration value="CLISP"></xsd:enumeration><!-- Setpoint -->
			<xsd:enumeration value="CLISPH"></xsd:enumeration><!-- Heat Setpoint -->
			<xsd:enumeration value="CLISPC"></xsd:enumeration><!-- Cool Setpoint -->
			<xsd:enumeration value="CLIFS"></xsd:enumeration><!-- Fan State -->
			<xsd:enumeration value="CLIMD"></xsd:enumeration><!-- Thermostat Mode -->
			<xsd:enumeration value="CLIHUM"></xsd:enumeration><!-- Humidity -->
			<xsd:enumeration value="BRT"></xsd:enumeration><!-- Brighten -->
			<xsd:enumeration value="DIM"></xsd:enumeration><!-- Dim -->
			<xsd:enumeration value="X10"></xsd:enumeration><!-- Direct X10 Commands -->
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ELKActionCodes">
		<xsd:annotation>
			<xsd:documentation>
				All possible values for communications with ELK
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="a0"></xsd:enumeration><!-- Disarm -->
			<xsd:enumeration value="a1"></xsd:enumeration><!-- Arm Away -->
			<xsd:enumeration value="a2"></xsd:enumeration><!-- Arm Stay -->
			<xsd:enumeration value="a3"></xsd:enumeration><!-- Arm Stay Instant -->
			<xsd:enumeration value="a4"></xsd:enumeration><!-- Arm Night -->
			<xsd:enumeration value="a5"></xsd:enumeration><!-- Arm Night Instant -->
			<xsd:enumeration value="a6"></xsd:enumeration><!-- Arm Vacation -->
		</xsd:restriction>
	</xsd:simpleType>
	
	<xsd:complexType name="NodeParent">
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute name="type" type="u:NodeHierarchyFlag" use="required">
					<xsd:annotation>
						<xsd:documentation>
						The hierarchy type for the parent
						</xsd:documentation>
					</xsd:annotation>
				</xsd:attribute>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>
	
	<xsd:complexType name="UDNode" abstract="true">
		<xsd:sequence>
			<xsd:element name="address" type="xsd:string" minOccurs="1" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						The unique address for a node. This address is the one to be used in subsequent calls to ISY to impact a node/group/scene change
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						The user defined name for a device.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="parent" type="u:NodeParent" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						The address of the parent if any
					</xsd:documentation>
				</xsd:annotation>
			
			</xsd:element>			
			<xsd:element name="ELK_ID" type="xsd:string" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						ELK unique identifier for each node/scene/group
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
		<xsd:attribute name="flag" type="xsd:short" use="required">
			<xsd:annotation>
				<xsd:documentation>
					A bit mask:
					0x01 -- Node is initialized (internal)
					0x02 -- Node is going to be crawled (internal)
					0x04 -- This is a group node
					0x08 -- This is the root node for ISY, i.e. My Lighting
					0x10 -- Device Communications Error
					0x20 -- Brand new node
					0x40 -- Node shall be deleted
					0x80 -- Node is device root
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>

	<xsd:complexType name="UDLink">
		<xsd:simpleContent>
			<xsd:extension base="xsd:string">
				<xsd:attribute name="type" type="xsd:short">
					<xsd:annotation>
						<xsd:documentation>
							0x00 -- Node is neither a controller or responder for the enclosing scene. i.e. devices under the My Lighting node
							0x10 -- Node is a controller for the enclosing scene
							0x20 -- Node is a responder for the enclosing scene
						</xsd:documentation>
					</xsd:annotation>
				</xsd:attribute>
			</xsd:extension>
		</xsd:simpleContent>
	</xsd:complexType>

	<xsd:complexType name="node" block="extension" final="extension">
		<xsd:complexContent>
			<xsd:extension base="u:UDNode">
				<xsd:sequence>
					<xsd:element name="type" type="xsd:string" minOccurs="1" maxOccurs="1">
						<xsd:annotation>
							<xsd:documentation>
								The type of device. For INSTEON: device-cat.device-subcat.version.reserved (4 bytes)
							</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="enabled" type="xsd:boolean" minOccurs="0" maxOccurs="1">
						<xsd:annotation>
							<xsd:documentation>
								Whether or not the node is enabled (plugged in).
								Note: this feature only works on 99 Series
							</xsd:documentation>
						</xsd:annotation>
					</xsd:element>					
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="group" block="extension" final="extension">
		<xsd:complexContent>
			<xsd:extension base="u:UDNode">
				<xsd:sequence>
					<xsd:element name="deviceGroup" type="xsd:string" minOccurs="0" maxOccurs="1">
						<xsd:annotation>
							<xsd:documentation>
								The underlying group/scene number associated with this scene. Normally, not used except for programs made for debugging
							</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
					<xsd:element name="link" type="u:UDLink" minOccurs="0" maxOccurs="unbounded">
						<xsd:annotation>
							<xsd:documentation>
								The address and the type (controller vs. responder) of devices participating in a group/scene
							</xsd:documentation>
						</xsd:annotation>
					</xsd:element>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>
	
	<xsd:complexType name="folder" block="extension" final="extension">
		<xsd:complexContent>
			<xsd:extension base="u:UDNode">
				<xsd:annotation>
					<xsd:documentation>
						Signifies a folder. Note that folders do not have ELK-IDs
					</xsd:documentation>
				</xsd:annotation>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>	

	<xsd:complexType name="nodes">
		<xsd:annotation>
			<xsd:documentation>
				The configuration of all the nodes already set in ISY
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="root" type="xsd:string" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						The name of ISY network. If blank, then it may be construed as the Network node.
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="folder" type="u:folder" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="node" type="u:node" minOccurs="0" maxOccurs="unbounded"/>
			<xsd:element name="group" type="u:group" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="DeviceSpecifications">
		<xsd:annotation>
			<xsd:documentation>
				Describes the characteristics of the ISY hardware/firmware and some info about the underlying protocol
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="make" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="manufacturerURL" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="model" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="icon" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="archive" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="chart" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="queryOnInit" type="xsd:boolean" minOccurs="1" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						Whether or not ISY queries all devices upon reboot
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="oneNodeAtATime" type="xsd:boolean" minOccurs="1" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						Whether or not nodes are queried one at a time
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="UPnPSpecifications">
		<xsd:sequence>
			<xsd:element name="upnpDevice" type="u:UPnPInfo" minOccurs="1" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						Provides pertinent information about how ISY will interact with the UPnP subsystem
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="upnpService" type="u:UPnPInfo" minOccurs="1" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="UPnPInfo">
		<xsd:sequence>
			<xsd:element name="utype" type="xsd:string" minOccurs="1" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						The UPnP device/service type which is advertised and responded to
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="version" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="Control">
		<xsd:sequence>
			<xsd:element name="name" type="u:ControlTypes" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="label" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="readOnly" type="xsd:boolean" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						default is true
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="isQueryAble" type="xsd:boolean" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						default is false
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="isNumeric" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="numericUnit" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="min" type="xsd:integer" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="max" type="xsd:integer" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="isGlobal" type="xsd:boolean"	minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						Applies to ISY as a whole
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="isGUI" type="xsd:boolean" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						It has no correspomding value on the device side
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="actions" type="u:Actions" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="Action">
		<xsd:sequence>
			<xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="label" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="readOnly" type="xsd:boolean" minOccurs="0"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="Actions">
		<xsd:sequence>
			<xsd:element name="action" type="u:Action" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="Controls">
		<xsd:sequence>
			<xsd:element name="control" type="u:Control" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="configuration">
		<xsd:sequence>
			<xsd:element name="deviceSpecs" type="u:DeviceSpecifications" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="upnpSpecs" type="u:UPnPSpecifications" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="controls" type="u:Controls" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="app" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="app_version" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="platform" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="build_timestamp" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="root" type="u:DeviceRoot" minOccurs="1" maxOccurs="1"/>"
			<xsd:element name="product" type="u:Product" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="features" type="u:Features" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="triggers" type="xsd:boolean" minOccurs="1" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						Whether or not Triggers are activated
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="security" minOccurs="1" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
					</xsd:documentation>
				</xsd:annotation>
				<xsd:simpleType>
					<xsd:restriction base="xsd:string">
						<xsd:enumeration value="SSL"/>
						<xsd:enumeration value="UPNP"/>
					</xsd:restriction>
				</xsd:simpleType>
			</xsd:element>
			<xsd:element name="isDefaultCert" type="xsd:boolean" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						Whether or not we are using the default SSL certificate which was shipped originally with ISY
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
			<xsd:element name="internetAccessURL" type="xsd:string" minOccurs="0" maxOccurs="1">
				<xsd:annotation>
					<xsd:documentation>
						The remote/extenal/internet URL by which one can access this system
					</xsd:documentation>
				</xsd:annotation>
			</xsd:element>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="Product">
		<xsd:annotation>
			<xsd:documentation>
				Describes the type of ISY for which this is the configuration
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="desc" type="xsd:string" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="Feature">
		<xsd:annotation>
			<xsd:documentation>
				An ISY feature or service.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="id" type="xsd:int" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="desc" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="isInstalled" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="isAvailable" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="Features">
		<xsd:annotation>
			<xsd:documentation>
				A list of ISY installed features/services
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="feature" type="u:Feature" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="DeviceRoot">
		<xsd:annotation>
			<xsd:documentation>
				Defines the root Group for ISY.
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="id" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="name" type="xsd:string" minOccurs="1" maxOccurs="1"/>
		</xsd:sequence>	
	</xsd:complexType>

	<xsd:complexType name="SystemStatus">
		<xsd:annotation>
			<xsd:documentation>
				ISY's System Status:
				NumRemainingOps = an estimate of how many operations are left to complete
				DelayBetweenOps (in miliseconds) = an estimate of any delay between each operation
				Note: you may assume 1 second per each operation
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="Stat" type="u:ISYStatusFlag" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="NumRemainingOps" type="xsd:long" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="DelayBetweenOps" type="xsd:long" minOccurs="1" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="DateTime">
		<xsd:annotation>
			<xsd:documentation>
				ISY's DateTime Structure:
				NTP		= time in NTP format
				TMZOffset	= Time zone Offset from GMT (in seconds)
				DST		= Daylight Saving Time (true/false)
				Lat		= Latitude (in degrees)
				Long		= Longitude (in degrees)
				Sunrise		= Sunrise time in NTP format (response only)
				Sunset		= Sunset time in NTP format (response only)
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="NTP" type="xsd:long" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="TMZOffset" type="xsd:int" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="DST" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="Lat" type="xsd:float" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="Long" type="xsd:float" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="Sunrise" type="xsd:long" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="Sunset" type="xsd:long" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="NotificationsOptions">
	<xsd:annotation>
			<xsd:documentation>
				MailTo		= Comma delimited list of notification recipients
				CompactEmail	= Whether or not to send short notifications
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="MailTo" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="CompactEmail" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="ProgramOptions">
		<xsd:annotation>
			<xsd:documentation>
				PCacthUp	= Whether or not programs should catch up upon startup
				PGracePeriod	= The amount of time (in seconds) after which a schedule is still considered met
				HTMLRole	= The role for HTML user
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="PCatchUp" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="PGracePeriod" type="xsd:int" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="HTMLRole" type="u:HTMLRoleFlag" minOccurs="1" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="NTPOptions">
		<xsd:annotation>
			<xsd:documentation>
		 		NTPHost		= NTP host name
		 		NTPEnabled	= Whether or not NTP checking is enabled
				NTPInterval	= The amount of time (in seconds) between each NTP check
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="NTPHost" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="NTPEnabled" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="NTPInterval" type="xsd:int" minOccurs="1" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="SystemOptions">
		<xsd:annotation>
			<xsd:documentation>
				ISY's System Options (configuration of how ISY works)
				MailTo		= Comma delimited list of notification recipients
				CompactEmail	= Whether or not to send short notifications
				QueryOnInit	= Whether or not to query all devices at Restart
				PCacthUp   	= Whether or not programs should catch up upon startup
				PGracePeriod	= The amount of time (in seconds) after which a schedule is still considered met
				NTPHost	   	= NTP host name
				NTPActive  	= Whether or not ISY has been able to communicate with the NTP host
				NTPEnabled 	= Whether or not NTP checking is enabled
				NTPInterval	= The amount of time (in seconds) between each NTP check
				WaitBusyReading = Whether or not ISY has to wait for "silence" before sending the next packet
				HTMLRole   	= The role of the HTML user				
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="MailTo" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="CompactEmail" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="QueryOnInit" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="PCatchUp" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="PGracePeriod" type="xsd:int" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="NTPHost" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="NTPActive" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="NTPEnabled" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="NTPInterval" type="xsd:int" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="WaitBusyReading" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="HTMLRole" type="u:HTMLRoleFlag" minOccurs="1" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="SMTPConfiguration">
		<xsd:annotation>
			<xsd:documentation>
				SMTP Configuration
				UseDefaultSMTP	= Whether or not we should use UDI's default SMTP Server
				SMTPServer	= SMTP Server
				SMTPPort  	= SMTP Port
				SMTPUID	  	= SMTP User ID
				SMTPPWD	  	= SMTP Password
				SMTPFrom  	= SMTP From email address
				SMTPTimeout = SMTP Timeout to wait for each operation
				UseTLS	  	= Whether or not we should use TLS
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="UseDefaultSMTP" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="SMTPServer" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="SMTPPort" type="xsd:int" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="SMTPUID" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="SMTPPWD" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="SMTPFrom" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="SMTPTimeout" type="xsd:int" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="UseTLS" type="xsd:boolean" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="DriverError">
		<xsd:annotation>
			<xsd:documentation>
				Driver error definitions
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="code" type="xsd:int" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="param1" type="xsd:string" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="param2" type="xsd:string" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="LastError">
		<xsd:annotation>
			<xsd:documentation>
		 		A list of DriverError(s)
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="error" type="u:DriverError" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>	

	<xsd:complexType name="DebugOptions">
		<xsd:annotation>
			<xsd:documentation>
		 		The possible debug levels that can be chosen
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="option" type="xsd:string" minOccurs="1" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="DBG">
		<xsd:annotation>
			<xsd:documentation>
		 		Debug structure
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="options" type="u:DebugOptions" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="current" type="xsd:string" minOccurs="1" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="SceneProfile">
		<xsd:annotation>
			<xsd:documentation>
		 		The structure which represents the profile of responders for a scene
		 		OL = on level
		 		RR = ramp rate
		 		Climate will be added in release 3
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="node" type="xsd:string" minOccurs="1" maxOccurs="1"/>
			<xsd:element name="OL" type="xsd:double" minOccurs="0" maxOccurs="1"/>
			<xsd:element name="RR" type="xsd:double" minOccurs="0" maxOccurs="1"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="SceneProfiles">
		<xsd:annotation>
			<xsd:documentation>
		 		The structure which represents the profiles of responders for a scene
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="SP" type="u:SceneProfile" minOccurs="0" maxOccurs="unbounded"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="Subscription">
		<xsd:sequence>
			<xsd:element name="SID" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="duration" minOccurs="1" maxOccurs="1" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>

	<!-- PARAMETERS -->
	<xsd:complexType name="IDParam">
		<xsd:sequence>
			<xsd:element name="id" minOccurs="1" maxOccurs="1" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="NameParam">
		<xsd:sequence>
			<xsd:element name="name" minOccurs="1" maxOccurs="1" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="IDNameParam">
		<xsd:complexContent>
			<xsd:extension base="u:IDParam">
				<xsd:sequence>
					<xsd:element name="name" minOccurs="1" maxOccurs="1" type="xsd:string"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="QueryParam">
		<xsd:sequence>
			<xsd:element name="node" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="flag" minOccurs="1" maxOccurs="1" type="u:NodeTypeFlag"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="CredentialsParam">
		<xsd:sequence>
			<xsd:element name="name" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="password" minOccurs="1" maxOccurs="1" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="IDNameNodeTypeParam">
		<xsd:complexContent>
			<xsd:extension base="u:IDNameParam">
				<xsd:sequence>
					<xsd:element name="flag" minOccurs="1" maxOccurs="1" type="u:NodeTypeFlag"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="AddNodeParam">
		<xsd:complexContent>
			<xsd:extension base="u:IDNameParam">
				<xsd:sequence>
					<xsd:element name="type" minOccurs="1" maxOccurs="1" type="xsd:string"/>
					<xsd:element name="flag" minOccurs="1" maxOccurs="1" type="u:NodeOperationsFlag"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="NodeControllerParam">
		<xsd:sequence>
			<xsd:element name="node" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="controller" minOccurs="1" maxOccurs="1" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="UDIServiceParam">
		<xsd:annotation>
			<xsd:documentation>
		 		In the case of X10:
		 		1. User "X10" as the control
		 		2. action may be null
		 		3. use house code and unit code in node. The format is:
		 		HouseCodeUnitCode (UnitCode may be null)
		 	</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="control" minOccurs="1" maxOccurs="1" type="u:ControlTypes"/>
			<xsd:element name="action" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="node" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="flag" minOccurs="1" maxOccurs="1" type="u:NodeTypeFlag"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="NodeGroupParam">
		<xsd:sequence>
			<xsd:element name="node" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="group" minOccurs="1" maxOccurs="1" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="MoveNodeParam">
		<xsd:complexContent>
			<xsd:extension base="u:NodeGroupParam">
				<xsd:sequence>
					<xsd:element name="flag" minOccurs="1" maxOccurs="1" type="u:LinkModeFlag"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="DiscoverNodesParam">
		<xsd:annotation>
			<xsd:documentation>
				Optionally, provide the type of node to be discovered
			</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="type" minOccurs="0" maxOccurs="1" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="StopNodesDiscoveryParam">
		<xsd:sequence>
			<xsd:element name="flag" minOccurs="1" maxOccurs="1" type="u:NodeOperationsFlag"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="InternetAccessParam">
		<xsd:sequence>
			<xsd:element name="flag" minOccurs="1" maxOccurs="1" type="u:InternetAccessFlag"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="LinkingModeParam">
		<xsd:sequence>
			<xsd:element name="flag" minOccurs="1" maxOccurs="1" type="u:LinkModeFlag"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="RestoreDevicesParam">
		<xsd:sequence>
			<xsd:element name="flag" minOccurs="1" maxOccurs="1" type="u:RestoreDevicesFlag"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="RestoreDeviceParam">
		<xsd:sequence>
			<xsd:element name="node" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="flag" minOccurs="1" maxOccurs="1" type="u:RestoreDevicesFlag"/>
		</xsd:sequence>
	</xsd:complexType>	

	<xsd:complexType name="ReplaceDeviceParam">
		<xsd:sequence>
			<xsd:element name="node" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="NewNode" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="firmware" minOccurs="1" maxOccurs="1" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="SecuritySystemActionParam">
		<xsd:annotation>
			<xsd:documentation>
		 		Provide the command to be processed in the SecAction tag for example, see ELKActionCodes Provide the security code in the code tag
		 	</xsd:documentation>
		</xsd:annotation>
		<xsd:sequence>
			<xsd:element name="SecAction" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="code" minOccurs="1" maxOccurs="1" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="SetDebugLevelParam">
		<xsd:sequence>
			<xsd:element name="option" minOccurs="1" maxOccurs="1" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="SetSceneProfileParam">
		<xsd:complexContent>
			<xsd:extension base="u:NodeControllerParam">
				<xsd:sequence>
					<xsd:element name="control" minOccurs="1" maxOccurs="1" type="u:ControlTypes"/>
					<xsd:element name="action" minOccurs="1" maxOccurs="1" type="xsd:string"/>
				</xsd:sequence>
			</xsd:extension>
		</xsd:complexContent>
	</xsd:complexType>

	<xsd:complexType name="SubscriptionParam">
		<xsd:sequence>
			<xsd:element name="reportURL" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="duration" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="SID" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<!-- SID should be used in case of renewing subscriptions -->
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="UnsubscriptionParam">
		<xsd:sequence>
			<xsd:element name="SID" minOccurs="1" maxOccurs="1" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:complexType name="IsSubscribedParam">
		<xsd:sequence>
			<xsd:element name="SID" minOccurs="1" maxOccurs="1" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>
	
	<xsd:complexType name="SetNodeEnabledParam">
		<xsd:sequence>
			<xsd:element name="node" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="flag" minOccurs="1" maxOccurs="1" type="u:SetNodeEnabledFlag"/>
		</xsd:sequence>
	</xsd:complexType>	
	
	<xsd:complexType name="NodeHierarchyParam">
		<xsd:sequence>
			<xsd:element name="node" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="nodeType" minOccurs="1" maxOccurs="1" type="u:NodeHierarchyFlag"/>
			<xsd:element name="parent" minOccurs="0" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="parentType" minOccurs="0" maxOccurs="1" type="u:NodeHierarchyFlag"/>
		</xsd:sequence>
	</xsd:complexType>		

	<!-- MESSAGE TYPES -->
	<xsd:complexType name="UDIDefaultResponse">
		<xsd:sequence>
			<xsd:element name="status" minOccurs="1" maxOccurs="1" type="xsd:string"/>
			<xsd:element name="info" minOccurs="0" maxOccurs="1" type="xsd:string"/>
		</xsd:sequence>
	</xsd:complexType>

	<xsd:simpleType name="Empty">
		<xsd:restriction base="xsd:string"/>
	</xsd:simpleType>

	<!-- EVENTS -->
	<xsd:simpleType name="EventControls">
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="_0"/><!-- Heart Beat -->
			<xsd:enumeration value="_1"/><!-- Trigger Updated Event -->
			<xsd:enumeration value="_2"/><!-- Protocol Specific Event -->
			<xsd:enumeration value="_3"/><!-- Nodes Updated Event -->
			<xsd:enumeration value="_4"/><!-- System Config Updated Event -->
			<xsd:enumeration value="_5"/><!-- System Status Event -->
			<xsd:enumeration value="_6"/><!-- Interner Access Event -->
			<xsd:enumeration value="_7"/><!-- System Progress Event -->
			<xsd:enumeration value="_8"/><!-- Security System Event -->
			<xsd:enumeration value="_9"/><!-- System Alert Event -->
			<xsd:enumeration value="_10"/><!-- Open ADR Event -->
			<xsd:enumeration value="_11"/><!-- Climate Event -->
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="EventTypes">
		<xsd:union memberTypes="u:EventControls u:ControlTypes"></xsd:union>
	</xsd:simpleType>

	<xsd:simpleType name="HeartbeatAction">
		<xsd:annotation>
			<xsd:documentation>
				Shall contain the max age in seconds before the next heartbeat is sent
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string"/>
	</xsd:simpleType>

	<xsd:simpleType name="ControlAction">
		<xsd:annotation>
			<xsd:documentation>
				Shall contain the specific value per each Control Type
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string"/>
	</xsd:simpleType>

	<xsd:simpleType name="TriggerAction">
		<xsd:annotation>
			<xsd:documentation>
				Shall contain specific actions relating to Triggers
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="1"/><!-- Client Should Get Status -->
			<xsd:enumeration value="2"/><!-- Key Changed -->
			<xsd:enumeration value="3"/><!-- Information -->
			<xsd:enumeration value="4"/><!-- IR Learn Mode -->
			<xsd:enumeration value="5"/><!-- Schedule Event -->
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ProtocolSpecificAction">
		<xsd:annotation>
			<xsd:documentation>
				Very much dependent on the underlying protocol (INSTEON, ZWave, etc.)
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string"/>
	</xsd:simpleType>

	<xsd:simpleType name="NodeUpdatedAction">
		<xsd:annotation>
			<xsd:documentation>
				Shall contain the possible Actions for when nodes are updated
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="NN"/><!-- Node Renamed -->
			<xsd:enumeration value="NR"/><!-- Node Removed -->
			<xsd:enumeration value="ND"/><!-- Node Added -->
			<xsd:enumeration value="NE"/><!-- Node Error -->
			<xsd:enumeration value="EN"/><!-- Node Enabled -->
			<xsd:enumeration value="PC"/><!-- Node's Parent Changed; eventInfo structure: NodeHierarchyParam-->
			<xsd:enumeration value="GN"/><!-- Group Renamed -->
			<xsd:enumeration value="GR"/><!-- Group Removed -->
			<xsd:enumeration value="GD"/><!-- Group Added -->
			<xsd:enumeration value="FD"/><!-- Folder Added -->
			<xsd:enumeration value="FN"/><!-- Folder Renamed -->
			<xsd:enumeration value="FR"/><!-- Folder Removed -->
			<xsd:enumeration value="MV"/><!-- Node Moved into Group -->
			<xsd:enumeration value="RG"/><!-- Node Removed from Group -->
			<xsd:enumeration value="CL"/><!-- Node Link Changed (master to slave or vice versa) -->
			<xsd:enumeration value="SN"/><!-- Discovering Nodes: Linking -->
			<xsd:enumeration value="SC"/><!-- Stopped Linking -->
			<xsd:enumeration value="WR"/><!-- Network Renamed -->
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="SystemConfigAction">
		<xsd:annotation>
			<xsd:documentation>
				Shall contain the possible Actions when system configuration is updated
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="1"/><!-- Time Configuration Updated -->
			<xsd:enumeration value="2"/><!-- NTP Settings Updated -->
			<xsd:enumeration value="3"/><!-- Notifications Settings Updated -->
			<xsd:enumeration value="4"/><!-- NTP Server Comm. Error -->
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="SystemStatusAction">
		<xsd:annotation>
			<xsd:documentation>
				Shall contain System Status
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="0"/><!-- Not Busy -->
			<xsd:enumeration value="1"/><!-- Busy ... might ignore commands -->
			<xsd:enumeration value="2"/><!-- Completely idle -->
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="InternetAccessAction">
		<xsd:annotation>
			<xsd:documentation>
				Shall contain information about the state of Internet Access
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="0"/><!-- Disabled -->
			<xsd:enumeration value="1"/><!-- Enabled -->
			<xsd:enumeration value="2"/><!-- Failed -->
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="SystemProgressAction">
		<xsd:annotation>
			<xsd:documentation>
				Shall contain system progress information
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="1"/><!-- Progress Updated Event -->
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="SecuritySystemAction">
		<xsd:annotation>
			<xsd:documentation>
				Shall contain information the state of the security system
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="0"/><!-- Disconnected -->
			<xsd:enumeration value="1"/><!-- Connected -->
			<xsd:enumeration value="DA"/><!-- Disarmed -->
			<xsd:enumeration value="AW"/><!-- Armed Away -->
			<xsd:enumeration value="AS"/><!-- Armed Stay -->
			<xsd:enumeration value="ASI"/><!-- Armed Stay Instant-->
			<xsd:enumeration value="AN"/><!-- Armed Night-->
			<xsd:enumeration value="ANI"/><!-- Armed Night Instant-->
			<xsd:enumeration value="AV"/><!-- Armed Vacation -->
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="SystemAlertAction">
		<xsd:annotation>
			<xsd:documentation>
				A programmable alert sent to clients to do as they wish:
				i.e. beep, change colors, do something else, etc.
				The EventInfo holds:
					bPrice = base price
					cPrice = current price
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="1"/><!-- Electricity Peak Demand -->
			<xsd:enumeration value="2"/><!-- Electricity Max Utilization -->
			<xsd:enumeration value="3"/><!-- Gas Max Utilization -->
			<xsd:enumeration value="4"/><!-- Water Max Utilization -->
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ElectricityAction">
		<xsd:annotation>
			<xsd:documentation>
				Open Auto Demand/Response Actions.
				The EventInfo structure holds:
					bPrice = base price
					cPrice = current price
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="1"/><!-- Error connecting to DRAS -->
			<xsd:enumeration value="2"/><!-- Price has been updated -->
			<xsd:enumeration value="3"/><!-- Pending schedules has been updated -->
			<xsd:enumeration value="4" ><!-- Utilization report -->
				<xsd:annotation>
					<xsd:documentation>
						Electricity meter information.
						The EventInfo structure holds:
							total	= total utilization in watts
							watts	= instantaneous utilization in watts
							voltage	= instantaneous voltage in Volts
							current	= instantaneous current in Amps
					</xsd:documentation>
				</xsd:annotation>
			</xsd:enumeration>
			<xsd:enumeration value="5"/><!-- Error connecting to FYP -->
			<xsd:enumeration value="6"><!-- FYP Status -->
				<xsd:annotation>
					<xsd:documentation>
						active = the actual status of FYP
					</xsd:documentation>
				</xsd:annotation>			
			</xsd:enumeration>
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="ClimateAction">
		<xsd:annotation>
			<xsd:documentation>
				Climate Information
				The EventInfo structure holds:
					value	= the value, usually, in double
					unit	= the unit of measure for the value
			</xsd:documentation>
		</xsd:annotation>
		<xsd:restriction base="xsd:string">
			<xsd:enumeration value="1"/><!-- Temperature -->
			<xsd:enumeration value="2"/><!-- Temperature High -->
			<xsd:enumeration value="3"/><!-- Temperature Low -->
			<xsd:enumeration value="4"/><!-- Feels Like -->
			<xsd:enumeration value="5"/><!-- Temperature Rate -->
			<xsd:enumeration value="6"/><!-- Humidity -->
			<xsd:enumeration value="7"/><!-- Humidity Rate -->
			<xsd:enumeration value="8"/><!-- Pressure -->
			<xsd:enumeration value="9"/><!-- Pressure Rate -->
			<xsd:enumeration value="10"/><!-- Dew Point -->
			<xsd:enumeration value="11"/><!-- Wind Speed -->
			<xsd:enumeration value="12"/><!-- Average Wind Speed -->
			<xsd:enumeration value="13"/><!-- Wind Direction -->
			<xsd:enumeration value="14"/><!-- Average Wind Direction -->
			<xsd:enumeration value="15"/><!-- Gust Speed -->
			<xsd:enumeration value="16"/><!-- Gust Direction -->
			<xsd:enumeration value="17"/><!-- Rain Today -->
			<xsd:enumeration value="18"/><!-- Light -->
			<xsd:enumeration value="19"/><!-- Light Rate -->
		</xsd:restriction>
	</xsd:simpleType>

	<xsd:simpleType name="EventActionTypes">
		<xsd:union memberTypes="u:ControlAction u:HeartbeatAction u:TriggerAction u:ProtocolSpecificAction u:NodeUpdatedAction u:SystemConfigAction u:SystemStatusAction u:InternetAccessAction u:SystemProgressAction u:SecuritySystemAction u:SystemAlertAction u:ElectricityAction u:ClimateAction"></xsd:union>
	</xsd:simpleType>

	<xsd:complexType name="Event">
		<xsd:sequence>
			<xsd:annotation>
				<xsd:documentation>
					An XML structure with specific information for each event type
				</xsd:documentation>
			</xsd:annotation>
			<xsd:element name="control" type="u:EventTypes"/>
			<xsd:element name="action" type="u:EventActionTypes"/>
			<xsd:element name="node" type="xsd:string"/>
			<xsd:element name="eventInfo" type="xsd:string"/>
		</xsd:sequence>
		<xsd:attribute name="seqnum" type="xsd:double" use="required">
			<xsd:annotation>
				<xsd:documentation>
					Unique message sequence number incremented with each message for this subscription
				</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
		<xsd:attribute name="sid" type="xsd:string" use="required">
			<xsd:annotation>
				<xsd:documentation>Subscription ID</xsd:documentation>
			</xsd:annotation>
		</xsd:attribute>
	</xsd:complexType>

	</xsd:schema>
	</wsdl:types>

	<!-- MESSAGES -->
	<wsdl:message name="DefaultResponseMessage">
		<wsdl:part name="response" type="u:UDIDefaultResponse"/>
	</wsdl:message>

	<wsdl:message name="UDIServiceRequest">
		<wsdl:part name="UDIService" type="u:UDIServiceParam"/>
	</wsdl:message>

	<wsdl:message name="GetNodesConfigRequest">
		<wsdl:part name="GetNodesConfig" type="u:Empty"/>
	</wsdl:message>

	<wsdl:message name="GetNodesConfigResponse">
		<wsdl:part name="nodes" type="u:nodes"/>
	</wsdl:message>

	<wsdl:message name="GetISYConfigRequest">
		<wsdl:part name="GetISYConfig" type="u:Empty"/>
	</wsdl:message>

	<wsdl:message name="GetISYConfigResponse">
		<wsdl:part name="configuration" type="u:configuration"/>
	</wsdl:message>

	<wsdl:message name="AddGroupRequest">
		<wsdl:part name="AddGroup" type="u:IDNameNodeTypeParam"/>
	</wsdl:message>

	<wsdl:message name="RemoveGroupRequest">
		<wsdl:part name="RemoveGroup" type="u:IDParam"/>
	</wsdl:message>

	<wsdl:message name="RenameGroupRequest">
		<wsdl:part name="RenameGroup" type="u:IDNameParam"/>
	</wsdl:message>
	
	<wsdl:message name="AddFolderRequest">
		<wsdl:part name="AddFolder" type="u:IDNameParam"/>
	</wsdl:message>	
	
	<wsdl:message name="RemoveFolderRequest">
		<wsdl:part name="RemoveFolder" type="u:IDParam"/>
	</wsdl:message>	
	
	<wsdl:message name="RenameFolderRequest">
		<wsdl:part name="RenameFolder" type="u:IDNameParam"/>
	</wsdl:message>	

	<wsdl:message name="AddNodeRequest">
		<wsdl:part name="AddNode" type="u:AddNodeParam"/>
	</wsdl:message>

	<wsdl:message name="RemoveNodeRequest">
		<wsdl:part name="RemoveNode" type="u:IDParam"/>
	</wsdl:message>

	<wsdl:message name="RenameNodeRequest">
		<wsdl:part name="RenameNode" type="u:IDNameParam"/>
	</wsdl:message>

	<wsdl:message name="MoveNodeRequest">
		<wsdl:part name="MoveNode" type="u:MoveNodeParam"/>
	</wsdl:message>

	<wsdl:message name="RemoveFromGroupRequest">
		<wsdl:part name="RemoveFromGroup" type="u:NodeGroupParam"/>
	</wsdl:message>

	<wsdl:message name="RenameNetworkRequest">
		<wsdl:part name="RenameNetwork" type="u:NameParam"/>
	</wsdl:message>

	<wsdl:message name="QueryRequest">
		<wsdl:part name="QueryAll" type="u:QueryParam"/>
	</wsdl:message>

	<wsdl:message name="SetLinkingModeRequest">
		<wsdl:part name="SetDeviceLinkMode" type="u:LinkingModeParam"/>
	</wsdl:message>

	<wsdl:message name="StartNodesDiscoveryRequest">
		<wsdl:part name="DiscoverNodes" type="u:DiscoverNodesParam"/>
	</wsdl:message>

	<wsdl:message name="StopNodesDiscoveryRequest">
		<wsdl:part name="CancelNodesDiscovery" type="u:StopNodesDiscoveryParam"/>
	</wsdl:message>

	<wsdl:message name="InternetAccessRequest">
		<wsdl:part name="InternetAccess" type="u:InternetAccessParam"/>
	</wsdl:message>

	<wsdl:message name="GetSystemStatusRequest">
		<wsdl:part name="GetSystemStatus" type="u:Empty"/>
	</wsdl:message>

	<wsdl:message name="GetSystemStatusResponse">
		<wsdl:part name="SysStat" type="u:SystemStatus"/>
	</wsdl:message>

	<wsdl:message name="GetDateTimeRequest">
		<wsdl:part name="GetSystemTime" type="u:Empty"/>
	</wsdl:message>

	<wsdl:message name="GetDateTimeResponse">
		<wsdl:part name="DT" type="u:DateTime"/>
	</wsdl:message>

	<wsdl:message name="SetDateTimeRequest">
		<wsdl:part name="SetSystemTime" type="u:DateTime"/>
	</wsdl:message>

	<wsdl:message name="GetSystemOptionsRequest">
		<wsdl:part name="GetSystemOptions" type="u:Empty"/>
	</wsdl:message>

	<wsdl:message name="GetSystemOptionsResponse">
		<wsdl:part name="SystemOptions" type="u:SystemOptions"/>
	</wsdl:message>

	<wsdl:message name="SetNotificationsOptionsRequest">
		<wsdl:part name="SetNotOptions" type="u:NotificationsOptions"/>
	</wsdl:message>

	<wsdl:message name="SetProgramOptionsRequest">
		<wsdl:part name="SetProgramOptions" type="u:ProgramOptions"/>
	</wsdl:message>

	<wsdl:message name="SetNTPOptionsRequest">
		<wsdl:part name="SetNTPOptions" type="u:NTPOptions"/>
	</wsdl:message>

	<wsdl:message name="SynchWithNTSRequest">
		<wsdl:part name="SynchWithNTS" type="u:Empty"/>
	</wsdl:message>

	<wsdl:message name="GetSMTPConfigRequest">
		<wsdl:part name="GetSMTPConfig" type="u:Empty"/>
	</wsdl:message>

	<wsdl:message name="GetSMTPConfigResponse">
		<wsdl:part name="SMTPConfig" type="u:SMTPConfiguration"/>
	</wsdl:message>

	<wsdl:message name="SetSMTPConfigRequest">
		<wsdl:part name="SetSMTPConfig" type="u:SMTPConfiguration"/>
	</wsdl:message>

	<wsdl:message name="RebootRequest">
		<wsdl:part name="Reboot" type="u:Empty"/>
	</wsdl:message>

	<wsdl:message name="SetUserCredentialsRequest">
		<wsdl:part name="SetUserCredentials" type="u:CredentialsParam"/>
	</wsdl:message>

	<wsdl:message name="RestoreDevicesRequest">
		<wsdl:part name="RestoreDevicesFromNodes" type="u:RestoreDevicesParam"/>
	</wsdl:message>

	<wsdl:message name="RestoreDeviceRequest">
		<wsdl:part name="RestoreDeviceFromNode" type="u:RestoreDeviceParam"/>
	</wsdl:message>

	<wsdl:message name="ReplaceModemRequest">
		<wsdl:part name="ReplaceModem" type="u:Empty"/>
	</wsdl:message>

	<wsdl:message name="RemoveModemRequest">
		<wsdl:part name="RemoveModem" type="u:Empty"/>
	</wsdl:message>

	<wsdl:message name="ReplaceDeviceRequest">
		<wsdl:part name="ReplaceDevice" type="u:ReplaceDeviceParam"/>
	</wsdl:message>

	<wsdl:message name="SecuritySystemActionRequest">
		<wsdl:part name="SecuritySystemRequest" type="u:SecuritySystemActionParam"/>
	</wsdl:message>

	<wsdl:message name="GetDebugLevelRequest">
		<wsdl:part name="GetDebugLevel" type="u:Empty"/>
	</wsdl:message>

	<wsdl:message name="GetDebugLevelResponse">
		<wsdl:part name="DBG" type="u:DBG"/>
	</wsdl:message>

	<wsdl:message name="SetDebugLevelRequest">
		<wsdl:part name="SetDebugLevel" type="u:SetDebugLevelParam"/>
	</wsdl:message>

	<wsdl:message name="GetSceneProfilesRequest">
		<wsdl:part name="GetSceneProfiles" type="u:NodeControllerParam"/>
	</wsdl:message>

	<wsdl:message name="GetSceneProfilesResponse">
		<wsdl:part name="SceneProfiles" type="u:SceneProfiles"/>
	</wsdl:message>

	<wsdl:message name="SetSceneProfileRequest">
		<wsdl:part name="SetSceneProfile" type="u:SetSceneProfileParam"/>
	</wsdl:message>

	<wsdl:message name="SubscribeRequest">
		<wsdl:part name="Subscribe" type="u:SubscriptionParam"/>
	</wsdl:message>

	<wsdl:message name="SubscribeResponse">
		<wsdl:part name="SubscriptionResponse" type="u:Subscription"/>
	</wsdl:message>

	<wsdl:message name="UnsubscribeRequest">
		<wsdl:part name="Unsubscribe" type="u:UnsubscriptionParam"/>
	</wsdl:message>

	<wsdl:message name="IsSubscribedRequest">
		<wsdl:part name="IsSubscribed" type="u:IsSubscribedParam"/>
	</wsdl:message>

	<wsdl:message name="EventNotificationMessage">
		<wsdl:part name="Event" type="u:Event"/>
	</wsdl:message>

	<wsdl:message name="SendTestEmailRequest">
		<wsdl:part name="SendTestEmail" type="u:Empty"/>
	</wsdl:message>
	
	<wsdl:message name="ClearLastErrorRequest">
		<wsdl:part name="ClearLastError" type="u:Empty"/>
	</wsdl:message>	
	
	<wsdl:message name="GetLastErrorRequest">
		<wsdl:part name="GetLastError" type="u:Empty"/>
	</wsdl:message>

	<wsdl:message name="GetLastErrorResponse">
		<wsdl:part name="LastError" type="u:LastError"/>
	</wsdl:message>	
	
	<wsdl:message name="SetNodeEnabledRequest">
		<wsdl:part name="SetNodeEnabled" type="u:SetNodeEnabledParam"/>
	</wsdl:message>	
	
	<wsdl:message name="SetParentRequest">
		<wsdl:part name="SetParent" type="u:NodeHierarchyParam"/>
	</wsdl:message>	
	

 <!-- Not implemented
 GetSysConf
 FileUpload (request program update)
 GetSysConfFiles
 GetReport
 ResetReport
 GetAllD2D
 GetAllD2DStatus
 SetD2D
 D2DCommand
 SaveFLPL:deprecated
 GetFLPL:depracated
 ClearConfiguration
 GetNodeProps:deprecated
 SaveNodeProps:deprecated
 ConfigureSecuritySys
 GetSecuritySysConfig
 GetSecuritySysURLs
 *** Modules Related ****
 ManageModules
 InstallModule
 GetUserDirectory
 MakeUserDirectory
 RemoveUserDirectory
 RemoveUserFile
 GetUserFile
 MoveUserObject
 GetFSStat
 -->

	<wsdl:portType name="UDIServices_PortType">
		<wsdl:operation name="UDIService">
			<wsdl:input message="u:UDIServiceRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="GetISYConfig">
			<wsdl:documentation>Returns the current configuration of ISY</wsdl:documentation>
			<wsdl:input message="u:GetISYConfigRequest"/>
			<wsdl:output message="u:GetISYConfigResponse"/>
		</wsdl:operation>

		<wsdl:operation name="GetNodesConfig">
			<wsdl:documentation>Returns the configuration of nodes, groups, scenes, and any relationship thereto</wsdl:documentation>
			<wsdl:input message="u:GetNodesConfigRequest"/>
			<wsdl:output message="u:GetNodesConfigResponse"/>
		</wsdl:operation>

		<wsdl:operation name="AddGroup">
			<wsdl:documentation>Adds a scene/group</wsdl:documentation>
			<wsdl:input message="u:AddGroupRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="RemoveGroup">
			<wsdl:documentation>Removes a group (permanently) from configuration</wsdl:documentation>
			<wsdl:input message="u:RemoveGroupRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="RenameGroup">
			<wsdl:documentation>Renames a group in configuration</wsdl:documentation>
			<wsdl:input message="u:RenameGroupRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>
		
		<wsdl:operation name="AddFolder">
			<wsdl:documentation>Adds a folder</wsdl:documentation>
			<wsdl:input message="u:AddFolderRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>	
		
		<wsdl:operation name="RemoveFolder">
			<wsdl:documentation>Removes a folder (permanently) from configuration</wsdl:documentation>
			<wsdl:input message="u:RemoveFolderRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>
		
		<wsdl:operation name="RenameFolder">
			<wsdl:documentation>Renames a folder in configuration</wsdl:documentation>
			<wsdl:input message="u:RenameFolderRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>		

		<wsdl:operation name="AddNode">
			<wsdl:documentation>Adds a predefined node for a device with a given address</wsdl:documentation>
			<wsdl:input message="u:AddNodeRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="RemoveNode">
			<wsdl:documentation>Removes a node (permanently) from configuration</wsdl:documentation>
			<wsdl:input message="u:RemoveNodeRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="RenameNode">
			<wsdl:documentation>Renames a node in configuration</wsdl:documentation>
			<wsdl:input message="u:RenameNodeRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="MoveNode">
			<wsdl:documentation>Moves a node into a group/scene</wsdl:documentation>
			<wsdl:input message="u:MoveNodeRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="RemoveFromGroup">
			<wsdl:documentation>Removes a Node from a Group</wsdl:documentation>
			<wsdl:input message="u:RemoveFromGroupRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="RenameNetwork">
			<wsdl:documentation>Renames the Network name</wsdl:documentation>
			<wsdl:input message="u:RenameNetworkRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="Query">
			<wsdl:documentation>Queries a node, a scene, or even the whole network</wsdl:documentation>
			<wsdl:input message="u:QueryRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="SetLinkingMode">
			<wsdl:documentation>Changes the way ISY discovers nodes/devices ISY as a controller or ISY as a responder</wsdl:documentation>
			<wsdl:input message="u:SetLinkingModeRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="StartNodesDiscovery">
			<wsdl:documentation>Puts ISY in discovery (linking) mode Optionally, provide the type of device to look for</wsdl:documentation>
			<wsdl:input message="u:StartNodesDiscoveryRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="StopNodesDiscovery">
			<wsdl:documentation>The flag decides the operations (reset, crawl, spider) to be performed after device(s) are discovered</wsdl:documentation>
			<wsdl:input message="u:StopNodesDiscoveryRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="InternetAccess">
			<wsdl:documentation>Enables/Disables port forwarding to ISY on UPnP enabled routers. This process might take a long time and, as such, one must take caution with TCP connect timeouts</wsdl:documentation>
			<wsdl:input message="u:InternetAccessRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="GetSystemStatus">
			<wsdl:documentation>Returns the current state of ISY</wsdl:documentation>
			<wsdl:input message="u:GetSystemStatusRequest"/>
			<wsdl:output message="u:GetSystemStatusResponse"/>
		</wsdl:operation>

		<wsdl:operation name="GetSystemDateTime">
			<wsdl:documentation>Returns the current state of ISY</wsdl:documentation>
			<wsdl:input message="u:GetDateTimeRequest"/>
			<wsdl:output message="u:GetDateTimeResponse"/>
		</wsdl:operation>

		<wsdl:operation name="SetSystemDateTime">
			<wsdl:documentation>Returns the current state of ISY</wsdl:documentation>
			<wsdl:input message="u:SetDateTimeRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="GetSystemOptions">
			<wsdl:documentation>Returns the options by which ISY is configured</wsdl:documentation>
			<wsdl:input message="u:GetSystemOptionsRequest"/>
			<wsdl:output message="u:GetSystemOptionsResponse"/>
		</wsdl:operation>

		<wsdl:operation name="GetSMTPConfig">
			<wsdl:documentation>Returns the SMTP Options configured in ISY</wsdl:documentation>
			<wsdl:input message="u:GetSMTPConfigRequest"/>
			<wsdl:output message="u:GetSMTPConfigResponse"/>
		</wsdl:operation>

		<wsdl:operation name="SetSMTPConfig">
			<wsdl:documentation>Sets SMTP Configuration Parameters</wsdl:documentation>
			<wsdl:input message="u:SetSMTPConfigRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="SetNotificationsOptions">
			<wsdl:documentation>Sets Notifications Options</wsdl:documentation>
			<wsdl:input message="u:SetNotificationsOptionsRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="SetProgramOptions">
			<wsdl:documentation>Sets Program Options</wsdl:documentation>
			<wsdl:input message="u:SetProgramOptionsRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="SetNTPOptions">
			<wsdl:documentation>Sets NTP Options</wsdl:documentation>
			<wsdl:input message="u:SetNTPOptionsRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="SynchWithNTS">
			<wsdl:documentation>Adjusts the clock to NTS</wsdl:documentation>
			<wsdl:input message="u:SynchWithNTSRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="Reboot">
			<wsdl:documentation>Reboots the system</wsdl:documentation>
			<wsdl:input message="u:RebootRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="SetUserCredentials">
			<wsdl:documentation>Changes the userid and password for a user</wsdl:documentation>
			<wsdl:input message="u:SetUserCredentialsRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

 		<wsdl:operation name="RestoreDevices">
			<wsdl:documentation>Restores devices from the configuration in ISY</wsdl:documentation>
			<wsdl:input message="u:RestoreDevicesRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="RestoreDevice">
			<wsdl:documentation>Restores a specific device from the configuration in ISY</wsdl:documentation>
			<wsdl:input message="u:RestoreDeviceRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="ReplaceModem">
			<wsdl:documentation>Replaces the modem attached to ISY and reconfigures devices if necessary</wsdl:documentation>
			<wsdl:input message="u:ReplaceModemRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="RemoveModem">
			<wsdl:documentation>Replaces the modem attached to ISY and reconfigures devices if necessary</wsdl:documentation>
			<wsdl:input message="u:RemoveModemRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="ReplaceDevice">
			<wsdl:documentation>Replaces one device with another (swap)</wsdl:documentation>
			<wsdl:input message="u:ReplaceDeviceRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="SecuritySystemAction">
			<wsdl:documentation>Arm/disarm a security system</wsdl:documentation>
			<wsdl:input message="u:SecuritySystemActionRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="GetDebugLevel">
			<wsdl:documentation>Gets the debug options and current level</wsdl:documentation>
			<wsdl:input message="u:GetDebugLevelRequest"/>
			<wsdl:output message="u:GetDebugLevelResponse"/>
		</wsdl:operation>

		<wsdl:operation name="SetDebugLevel">
			<wsdl:documentation>Gets the debug options and current level</wsdl:documentation>
			<wsdl:input message="u:SetDebugLevelRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="GetSceneProfiles">
			<wsdl:documentation>
				Gets the profile attributes for responders.
				Set the controller element to scene's address and:
				In case this is an ISY scene, set the node element to "none."
				In case this is a controller for a scene, set the node element to the controller's address
			</wsdl:documentation>
			<wsdl:input message="u:GetSceneProfilesRequest"/>
			<wsdl:output message="u:GetSceneProfilesResponse"/>
		</wsdl:operation>

		<wsdl:operation name="SetSceneProfile">
			<wsdl:documentation>
				Sets the profile attribute for responders.
				Set the controller element to scene's address and:
				In case this is an ISY scene, set the node element to "none"
				In case this is a controller for a scene, set the node element to the responder's address
			</wsdl:documentation>
			<wsdl:input message="u:SetSceneProfileRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="Subscribe">
			<wsdl:documentation>
				reportURL: To reuse the socket, use REUSE_SOCKET as the value
				duration: use infinite
			</wsdl:documentation>
			<wsdl:input message="u:SubscribeRequest"/>
			<wsdl:output message="u:SubscribeResponse"/>
		</wsdl:operation>

		<wsdl:operation name="Unsubscribe">
			<wsdl:documentation>Unsubscribe from ISY</wsdl:documentation>
			<wsdl:input message="u:UnsubscribeRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="IsSubscribed">
			<wsdl:documentation>Whether or not the client still holds a subscription to ISY</wsdl:documentation>
			<wsdl:input message="u:IsSubscribedRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>

		<wsdl:operation name="SendTestEmail">
			<wsdl:documentation>Sends a test email. This is used to check SMTP settings.</wsdl:documentation>
			<wsdl:input message="u:SendTestEmailRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>
		
		<wsdl:operation name="ClearLastError">
			<wsdl:documentation>Clears the list of recent errors in ISY</wsdl:documentation>
			<wsdl:input message="u:ClearLastErrorRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>	
					
		<wsdl:operation name="GetLastError">
			<wsdl:documentation>Gets the list of recent errors in ISY</wsdl:documentation>
			<wsdl:input message="u:GetLastErrorRequest"/>
			<wsdl:output message="u:GetLastErrorResponse"/>
		</wsdl:operation>	
		
		<wsdl:operation name="SetNodeEnabled">
			<wsdl:documentation>Enables or disables a node</wsdl:documentation>
			<wsdl:input message="u:SetNodeEnabledRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>
		
		<wsdl:operation name="SetParent">
			<wsdl:documentation>Sets a parent for a node</wsdl:documentation>
			<wsdl:input message="u:SetParentRequest"/>
			<wsdl:output message="u:DefaultResponseMessage"/>
		</wsdl:operation>		

		<!-- EVENTING: Does not work with .NET yet-->
		<!--
		<wsdl:operation name="EventNotification">
			<wsdl:output message="u:EventNotificationMessage"/>
		</wsdl:operation>
		-->
	</wsdl:portType>

	<wsdl:binding name="UDIServices_Binding" type="u:UDIServices_PortType">
		<wsdl:documentation>UDI Binding binds the concrete Port (UDI Services) to the Abstract Port Type (UDIServices_PortType</wsdl:documentation>
		<soap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>

		<wsdl:operation name="UDIService">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="GetNodesConfig">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="GetISYConfig">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="AddGroup">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="RemoveGroup">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="RenameGroup">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="AddFolder">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="RemoveFolder">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="RenameFolder">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>		

		<wsdl:operation name="AddNode">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="RemoveNode">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="RenameNode">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="MoveNode">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="RemoveFromGroup">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="RenameNetwork">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="Query">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="StartNodesDiscovery">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="StopNodesDiscovery">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="InternetAccess">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="SetLinkingMode">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="GetSystemStatus">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="GetSystemDateTime">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="SetSystemDateTime">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="GetSystemOptions">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

 		<wsdl:operation name="GetSMTPConfig">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="SetSMTPConfig">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="SetNotificationsOptions">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="SetProgramOptions">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="SetNTPOptions">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="SynchWithNTS">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="Reboot">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="SetUserCredentials">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="RestoreDevices">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="RestoreDevice">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="ReplaceModem">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="RemoveModem">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="ReplaceDevice">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="SecuritySystemAction">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="GetDebugLevel">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

 		<wsdl:operation name="SetDebugLevel">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="GetSceneProfiles">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="SetSceneProfile">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="Subscribe">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="Unsubscribe">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="IsSubscribed">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>

		<wsdl:operation name="SendTestEmail">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="ClearLastError">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="GetLastError">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>	
		
		<wsdl:operation name="SetNodeEnabled">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
		
		<wsdl:operation name="SetParent">
			<soap:operation style="document"/>
			<wsdl:input>
				<soap:body use="literal"/>
			</wsdl:input>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>		
 <!--
		<wsdl:operation name="EventNotification">
			<soap:operation style="document"/>
			<wsdl:output>
				<soap:body use="literal"/>
			</wsdl:output>
		</wsdl:operation>
 -->
	</wsdl:binding>
</wsdl:definitions>

