XSD files

The following XSD files are provided: common.xsd, clientservicetemplate.xsd, servicetemplate.xsd, device.xsd, realm.xsd, and service.xsd.

Common XSD file: common.xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
 	<!-- Definition that ensures that the value is not empty or just white spaces -->
	<xs:simpleType name="StringNotBlank">
		<xs:restriction base="xs:string">
			<xs:minLength value="1" />
			<xs:pattern value=".*[^\s].*" />
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

Client Service Template XSD file: clientservicetemplate.xsd

The following shows the clientservicetemplate.xsd file:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:include schemaLocation="./common.xsd"/>
	<xs:element name="serviceTemplates" type="serviceTemplatesListType"/>
	<xs:complexType name="serviceTemplatesListType">
		<xs:sequence>
			<xs:element name="serviceTemplate" type="serviceTemplateType" minOccurs="1" maxOccurs="unbounded"/>
		</xs:sequence> 
	</xs:complexType>
	<xs:element name="serviceTemplate" type="serviceTemplateType" />
	<xs:complexType name="serviceTemplateType">
		<xs:sequence>
			<xs:element name="deviceID" type="StringNotBlank" minOccurs="0" maxOccurs="1" />     
			<xs:element name="clientParameters" type="clientParametersType" minOccurs="0" maxOccurs="1" />
			<xs:element name="clientParameterLists" type="clientParameterListsType" minOccurs="0" maxOccurs="1" />
		</xs:sequence>
		<xs:attribute name="id" type="StringNotBlank" use="required"/>
		<xs:attribute name="name" type="StringNotBlank" use="optional"/>
		<xs:attribute name="description" type="xs:string" use="optional"/>
	</xs:complexType>
	<xs:complexType name="clientParametersType">
		<xs:sequence>
			<xs:element name="clientParameter" type="clientParameterType" minOccurs="0" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="clientParameterType">
		<xs:sequence>
			<xs:element name="name" type="StringNotBlank" minOccurs="1" maxOccurs="1" />
			<xs:element name="value" type="xs:string" minOccurs="0" maxOccurs="1"/>
			<xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="clientParameterListsType">
	    <xs:sequence>
	      <xs:element name="clientParameterList" type="clientParameterListType" minOccurs="1" maxOccurs="unbounded" />
	    </xs:sequence>
  	</xs:complexType>
  	<xs:complexType name="clientParameterListType">
	     <xs:sequence>
	      <xs:element name="parameter" type="clientParameterListParameterType" minOccurs="1" maxOccurs="unbounded" />
	    </xs:sequence>
	    <xs:attribute name="name" type="StringNotBlank" use="required"/>
	    <xs:attribute name="description" type="StringNotBlank" use="optional"/>
  	</xs:complexType>
  	<xs:complexType name="clientParameterListParameterType">
	    <xs:all>
	      <xs:element name="values" type="clientParameterListParameterValueType" minOccurs="1" maxOccurs="1" />
	    </xs:all>
   	 	<xs:attribute name="name" type="StringNotBlank" use="required"/>
   	 	<xs:attribute name="description" type="StringNotBlank" use="optional"/>
 	 </xs:complexType>
  
    <xs:complexType name="clientParameterListParameterValueType">
     <xs:sequence>
      <xs:element name="value" type="clientParameterListParameterValueElementType" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="clientParameterListParameterValueElementType">
  	<xs:simpleContent>
      <xs:extension base="StringNotBlank">
	    <xs:attribute name="order" type="StringNotBlank" use="optional"/>
     </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

</xs:schema>

NSM service template XSD file: servicetemplate.xsd

The following shows the servicetemplate.xsd file:

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:include schemaLocation="./common.xsd"/>
  <xs:element name="serviceTemplates" type="serviceTemplatesListType"/>
  <xs:complexType name="serviceTemplatesListType">
    <xs:sequence>
	  <xs:element name="serviceTemplate" type="serviceTemplateType" minOccurs="1" maxOccurs="unbounded"/>
	</xs:sequence> 
  </xs:complexType>
  <xs:element name="serviceTemplate" type="serviceTemplateType" />
  <xs:complexType name="serviceTemplateType">
    <xs:all>
      <xs:element name="deviceName" type="StringNotBlank" minOccurs="0" maxOccurs="1" />
      <xs:element name="deviceID" type="StringNotBlank" minOccurs="0" maxOccurs="1" />
      <xs:element name="implementations" type="implementationsType" minOccurs="1" maxOccurs="1" />
      <xs:element name="constantParameters" type="constantParametersType" minOccurs="0" maxOccurs="1" />
      <xs:element name="clientParameters" type="clientParametersType" minOccurs="0" maxOccurs="1" />
      <xs:element name="injectParameters" type="injectParametersType" minOccurs="0" maxOccurs="1" />
      <xs:element name="sqlParameters" type="sqlParametersType" minOccurs="0" maxOccurs="1" />
      <xs:element name="httpParameters" type="httpParametersType" minOccurs="0" maxOccurs="1" />
      <xs:element name="clientParameterLists" type="clientParameterListsType" minOccurs="0" maxOccurs="1" />
    </xs:all>
    <xs:attribute name="name" type="StringNotBlank" use="required"/>
    <xs:attribute name="id" type="StringNotBlank" use="optional"/>
    <xs:attribute name="version" type="StringNotBlank" use="optional"/>
    <xs:attribute name="description" type="xs:string" use="optional"/>    
    <xs:attribute name="createdBy" type="StringNotBlank" use="optional"/>
    <xs:attribute name="createDate" type="StringNotBlank" use="optional"/>
    <xs:attribute name="timeToDelete" type="xs:positiveInteger" use="optional"/>
  </xs:complexType>
  <xs:complexType name="implementationsType">
    <xs:sequence>
      <xs:element name="implementation" type="implementationType" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="implementationType">
    <xs:all>  
      <xs:element name="databaseConnection" type="databaseConnectionType" minOccurs="0" maxOccurs="1" />
      <xs:element name="serviceOperations" type="serviceOperationsType" minOccurs="1" maxOccurs="1">
          <xs:unique name="uniqueServiceOperationType">
              <xs:selector xpath="serviceOperation"/>
              <xs:field xpath="@type"/>
          </xs:unique>
      </xs:element>
      <xs:element name="constantParameters" type="constantParametersType" minOccurs="0" maxOccurs="1" />
      <xs:element name="clientParameters" type="clientParametersType" minOccurs="0" maxOccurs="1" />
      <xs:element name="injectParameters" type="injectParametersType" minOccurs="0" maxOccurs="1" />
      <xs:element name="sqlParameters" type="sqlParametersType" minOccurs="0" maxOccurs="1" />
      <xs:element name="httpParameters" type="httpParametersType" minOccurs="0" maxOccurs="1" />
      <xs:element name="rules" type="rulesType"  minOccurs="1" maxOccurs="1"/>  
      <xs:element name="clientParameterLists" type="clientParameterListsType" minOccurs="0" maxOccurs="1" />    
    </xs:all>
    <xs:attribute name="id" type="StringNotBlank" use="optional"/>
    <xs:attribute name="description" type="xs:string" use="optional"/>
    <xs:attribute name="version" type="StringNotBlank" use="optional"/>
    <xs:attribute name="type" type="StringNotBlank" use="optional"/>
  </xs:complexType>
  <xs:complexType name="databaseConnectionType">
    <xs:all>
      <xs:element name="driverClassName" type="StringNotBlank" minOccurs="1" maxOccurs="1" />
      <xs:element name="url" type="StringNotBlank" minOccurs="1" maxOccurs="1"/>
      <xs:element name="username" type="xs:string" minOccurs="1" maxOccurs="1"/>
      <xs:element name="password" type="xs:string" minOccurs="1" maxOccurs="1"/>
      <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1" />
    </xs:all>
  </xs:complexType>
  <xs:complexType name="rulesType">
    <xs:sequence>
      <xs:element name="rule" type="ruleType"  minOccurs="1" maxOccurs="unbounded"/>      
    </xs:sequence>
    <xs:attribute name="description" type="xs:string" use="optional"/>
  </xs:complexType>
  <xs:complexType name="ruleType">
    <xs:sequence>
      <xs:element name="ruleProperty" type="rulePropertyType"  minOccurs="1" maxOccurs="unbounded"/>      
    </xs:sequence>
    <xs:attribute name="type" type="StringNotBlank" use="required"/>
    <xs:attribute name="description" type="xs:string" use="optional"/>
  </xs:complexType>
   <xs:complexType name="rulePropertyType">
    <xs:attribute name="name" type="StringNotBlank" use="required"/>
    <xs:attribute name="value" type="StringNotBlank" use="required"/>
  </xs:complexType>
  <xs:complexType name="operationsType">
    <xs:sequence>
      <xs:element name="operation" type="operationType" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="serviceOperationsType">
 	<xs:sequence>
 	  <xs:element name="serviceOperation" type="serviceOperationType" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="serviceOperationType">
    <xs:sequence>
      <xs:element name="operations" type="operationsType" minOccurs="1" maxOccurs="1" />
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="optional"/>
    <xs:attribute name="type" type="allowedServiceOperationTypeValues" use="required"/>
  </xs:complexType>
  <xs:complexType name="operationType">
    <xs:sequence>
      <xs:element name="parameters" type="operationParametersType" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="name" type="StringNotBlank" use="required"/>
    <xs:attribute name="type" type="allowedOperationTypeValues" use="required"/>
    <xs:attribute name="rollback" type="allowedOperationRollbackTypeValues" use="optional"/>
    <xs:attribute name="order"  type="StringNotBlank" use="optional"/>
    <xs:attribute name="description" type="xs:string" use="optional"/>
  </xs:complexType>
  <xs:complexType name="operationParametersType">
    <xs:sequence>
      <xs:element name="parameter" type="operationParameterType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="operationParameterType">
  	<xs:attribute name="name" type="StringNotBlank" use="required"/>
  </xs:complexType>
  <xs:complexType name="constantParametersType">
    <xs:sequence>
      <xs:element name="constantParameter" type="constantParameterType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="clientParametersType">
    <xs:sequence>
      <xs:element name="clientParameter" type="clientParameterType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="injectParametersType">
    <xs:sequence>
      <xs:element name="injectParameter" type="injectParameterType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="sqlParametersType">
    <xs:sequence>
      <xs:element name="sqlParameter" type="sqlParameterType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
   <xs:complexType name="httpParametersType">
    <xs:sequence>
      <xs:element name="httpParameter" type="httpParameterType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="clientParameterListsType">
    <xs:sequence>
      <xs:element name="clientParameterList" type="clientParameterListType" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
 
  <xs:complexType name="constantParameterType">
    <xs:all>
      <xs:element name="name" type="StringNotBlank" minOccurs="1" maxOccurs="1" />
      <xs:element name="value" type="StringNotBlank" minOccurs="1" maxOccurs="1"/>
      <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>
   <xs:complexType name="clientParameterType">
    <xs:all>
      <xs:element name="name" type="StringNotBlank" minOccurs="1" maxOccurs="1" />
      <xs:element name="value" type="xs:string" minOccurs="0" maxOccurs="1"/>
      <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="injectParameterType">
    <xs:all>
      <xs:element name="name" type="StringNotBlank" minOccurs="1" maxOccurs="1" />
      <xs:element name="methodCall" type="xs:string" minOccurs="0" maxOccurs="1"/>
      <xs:element name="arguments" type="xs:string" minOccurs="0" maxOccurs="1"/>
      <xs:element name="code" type="xs:string" minOccurs="0" maxOccurs="1"/>
      <xs:element name="description" type="xs:string" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>
  <xs:complexType name="sqlParameterType">
    <xs:all>
      <xs:element name="name" type="StringNotBlank" minOccurs="1" maxOccurs="1" />
      <xs:element name="description" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
      <xs:element name="value" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
      <xs:element name="sql" type="StringNotBlank" minOccurs="1" maxOccurs="1"/>
      <xs:element name="arguments" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
    </xs:all>
   </xs:complexType> 
   <xs:complexType name="httpParameterType">
    <xs:all>
      <xs:element name="name" type="StringNotBlank" minOccurs="1" maxOccurs="1" />
      <xs:element name="description" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
      <xs:element name="value" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
      <xs:element name="url" type="StringNotBlank" minOccurs="1" maxOccurs="1"/>
      <xs:element name="arguments" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
    </xs:all>
  </xs:complexType>

  <xs:complexType name="clientParameterListType">
     <xs:sequence>
      <xs:element name="parameter" type="clientParameterListParameterType" minOccurs="1" maxOccurs="unbounded" />
    </xs:sequence>
    <xs:attribute name="name" type="StringNotBlank" use="required"/>
    <xs:attribute name="description" type="StringNotBlank" use="optional"/>
  </xs:complexType>
  
  <xs:complexType name="clientParameterListParameterType">
    <xs:all>
      <xs:element name="values" type="clientParameterListParameterValueType" minOccurs="0" maxOccurs="1" />
    </xs:all>
    <xs:attribute name="name" type="StringNotBlank" use="required"/>
    <xs:attribute name="description" type="StringNotBlank" use="optional"/>
  </xs:complexType>
  
  <xs:complexType name="clientParameterListParameterValueType">
     <xs:sequence>
      <xs:element name="value" type="clientParameterListParameterValueElementType" minOccurs="0" maxOccurs="unbounded" />
    </xs:sequence>
  </xs:complexType>
  
  <xs:complexType name="clientParameterListParameterValueElementType">
  	<xs:simpleContent>
      <xs:extension base="StringNotBlank">
	    <xs:attribute name="order" type="StringNotBlank" use="optional"/>
     </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

	<xs:simpleType name="allowedOperationTypeValues">
		<xs:restriction base="xs:string">
			<xs:enumeration value="EXTRACTION"/>
			<xs:enumeration value="DEVICESYNC"/>
			<xs:enumeration value="COMMANDSET"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="allowedOperationRollbackTypeValues">
		<xs:restriction base="xs:string">
			<xs:enumeration value="true"/>
			<xs:enumeration value="TRUE"/>
			<xs:enumeration value="false"/>
			<xs:enumeration value="FALSE"/>
		</xs:restriction>
	</xs:simpleType>
	<xs:simpleType name="allowedServiceOperationTypeValues">
		<xs:restriction base="xs:string">
			<xs:enumeration value="CREATE"/>
			<xs:enumeration value="DELETE"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

Device XSD file: device.xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:include schemaLocation="./common.xsd"/>
	<xs:element name="devices" type="deviceListType"/>
	<xs:element name="device" type="deviceType"/>
	<xs:complexType name="deviceListType">
		<xs:sequence>
			<xs:element name="device" type="deviceType" minOccurs="1" maxOccurs="unbounded"/>
		</xs:sequence> 
	</xs:complexType>
	<xs:complexType name="deviceType">
		<xs:all>
			<xs:element name="id" type="StringNotBlank" minOccurs="1" maxOccurs="1"/>
			<xs:element name="name" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="fqName" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="vendor" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="type" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="model" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="os" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="parentId" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="parentName" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="currentNativeConfiguration" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="currentModeledConfiguration" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="currentSupplementalInformation" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="deviceLoginOverride" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="overrideDeviceLoginName" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="overrideDevicePassword" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="createdDate" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="createdBy" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="lastModifiedDate" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="lastModifiedBy" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="status" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="currentDriver" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="driverStatus" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="driverType" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="label1" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="label2" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="label3" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="label4" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="label5" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="label6" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="label7" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="label8" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="label9" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="label10" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
			<xs:element name="supportLevel" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
		</xs:all>
	</xs:complexType>
</xs:schema>

Realm XSD file: realm.xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:include schemaLocation="./common.xsd"/>
	<xs:element name="realms" type="realmListType"/>
	<xs:element name="realm" type="realmType"/>
	<xs:complexType name="realmListType">
		<xs:sequence>
			<xs:element name="realm" type="realmType" minOccurs="1" maxOccurs="unbounded"/>
		</xs:sequence> 
	</xs:complexType>
	<xs:complexType name="realmType">
		<xs:all>
			<xs:element name="id" type="StringNotBlank" minOccurs="1" maxOccurs="1"/>
			<xs:element name="name" type="StringNotBlank" minOccurs="1" maxOccurs="1"/>
			<xs:element name="fqName" type="StringNotBlank" minOccurs="1" maxOccurs="1"/>
			<xs:element name="parentId" type="StringNotBlank" minOccurs="1" maxOccurs="1"/>
			<xs:element name="parentName" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
		</xs:all>
	</xs:complexType>
</xs:schema>

Service XSD file: service.xsd

<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:include schemaLocation="./common.xsd"/>
	<xs:element name="serviceWorkItems" type="serviceWorkItemListType"/>
	<xs:element name="services" type="serviceListType"/>
	<xs:element name="service" type="serviceType"/>
	<xs:element name="workItem" type="serviceWorkItemType"/>
	<!--  this one is for the service/{id}/input response -->
	<xs:element name="string" type="serviceInputType"/>
	<xs:complexType name="serviceListType">
		<xs:sequence>
			<xs:element name="service" type="serviceType" minOccurs="1" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="serviceWorkItemListType">
		<xs:sequence>
			<xs:element name="workItem" type="serviceWorkItemType" minOccurs="1" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="serviceType">
		<xs:all>
			<xs:element name="status" type="StringNotBlank" minOccurs="1" maxOccurs="1"/>
			<xs:element name="devices" type="serviceDevicesType" minOccurs="1" maxOccurs="1"/>
			<xs:element name="appliedServiceTemplates" type="appliedServiceTemplatesType" minOccurs="1" maxOccurs="1" />
			<xs:element name="serviceWorkItems" type="serviceWorkItemsType" minOccurs="0" maxOccurs="1" />
		</xs:all>
		<xs:attribute name="id" type="StringNotBlank" use="required"/>
		<xs:attribute name="serviceWorkKey" type="StringNotBlank" use="optional"/>
		<xs:attribute name="referenceId" type="StringNotBlank" use="optional"/>
		<xs:attribute name="description" type="xs:string" use="optional"/>    
		<xs:attribute name="createdByUser" type="StringNotBlank" use="optional"/>
		<xs:attribute name="createDate" type="StringNotBlank" use="optional"/>
		<xs:attribute name="lastUpdatedDate" type="StringNotBlank" use="optional"/>
	</xs:complexType>
	<xs:complexType name="serviceDevicesType">
		<xs:sequence>
			<xs:element name="device" type="serviceDeviceType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="serviceInputType">
		<xs:sequence>
			<xs:any namespace="##any" processContents="skip" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence> 
	</xs:complexType>
	<xs:complexType name="serviceDeviceType">
		<xs:all>
			<xs:element name="id" type="StringNotBlank" minOccurs="1" maxOccurs="1"/>
		</xs:all> 
	</xs:complexType>
	<xs:complexType name="serviceWorkItemsType">
		<xs:sequence>
			<xs:element name="workItem" type="serviceWorkItemType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="serviceWorkItemType">
		<xs:all>  
			<xs:element name="workItemResults" type="workItemResultsType" minOccurs="0" maxOccurs="1"/>
			<xs:element name="workItemLog" type="workItemLogType" minOccurs="0" maxOccurs="1"/>
		</xs:all>
		<xs:attribute name="id" type="StringNotBlank" use="required"/>
		<xs:attribute name="deviceId" type="StringNotBlank" use="required"/>
		<xs:attribute name="description" type="xs:string" use="optional"/>
		<xs:attribute name="status" type="StringNotBlank" use="optional"/>
		<xs:attribute name="type" type="StringNotBlank" use="optional"/>
		<xs:attribute name="name" type="StringNotBlank" use="optional"/>
	</xs:complexType>
	<xs:complexType name="workItemResultsType">
		<xs:sequence>
			<xs:element name="workItemResult" type="workItemResultType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="workItemResultType">
		<xs:sequence>
			<xs:element name="result" type="StringNotBlank" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="workItemLogType">
		<xs:sequence>
			<xs:element name="workItemLog" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="appliedServiceTemplatesType">
		<xs:sequence>
			<xs:element name="serviceTemplate" type="appliedServiceTemplateType" minOccurs="0" maxOccurs="unbounded"/>
		</xs:sequence>
	</xs:complexType>
	<xs:complexType name="appliedServiceTemplateType">
		<xs:sequence>
			<xs: element name="deviceID" type="StringNotBlank" minOccurs="0" maxOccurs="1"/>
		</xs:sequence>
		<xs:attribute name="id" type="StringNotBlank" use="required"/>
		<xs:attribute name="version" type="StringNotBlank" use="required"/>
	</xs:complexType>
</xs:schema>