CDT-commonTypes-v1_3_0.xsd 22.6 KB
Newer Older
wgranzow's avatar
wgranzow committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
<?xml version="1.0" encoding="UTF-8"?>
<!-- 
Copyright Notification

The oneM2M Partners authorize you to copy this document, provided that you retain all copyright and other proprietary notices 
contained in the original materials on any copies of the materials and that you comply strictly with these terms. 
This copyright permission does not constitute an endorsement of the products or services, nor does it encompass the granting of 
any patent rights. The oneM2M Partners assume no responsibility for errors or omissions in this document. 
© 2015, oneM2M Partners Type 1 (ARIB, ATIS, CCSA, ETSI, TIA, TTA, TTC). All rights reserved.

Notice of Disclaimer & Limitation of Liability 

The information provided in this document is directed solely to professionals who have the appropriate degree of experience to understand 
and interpret its contents in accordance with generally accepted engineering or other professional standards and applicable regulations. 
No recommendation as to products or vendors is made or should be implied. 

NO REPRESENTATION OR WARRANTY IS MADE THAT THE INFORMATION IS TECHNICALLY ACCURATE OR SUFFICIENT OR CONFORMS TO ANY STATUTE, 
GOVERNMENTAL RULE OR REGULATION, AND FURTHER, NO REPRESENTATION OR WARRANTY IS MADE OF MERCHANTABILITY OR FITNESS FOR ANY 
PARTICULAR PURPOSE OR AGAINST INFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS. 
NO oneM2M PARTNER TYPE 1 SHALL BE LIABLE, BEYOND THE AMOUNT OF ANY SUM RECEIVED IN PAYMENT BY THAT PARTNER FOR THIS DOCUMENT, WITH RESPECT TO 
ANY CLAIM, AND IN NO EVENT SHALL oneM2M BE LIABLE FOR LOST PROFITS OR OTHER INCIDENTAL OR CONSEQUENTIAL DAMAGES. 
oneM2M EXPRESSLY ADVISES ANY AND ALL USE OF OR RELIANCE UPON THIS INFORMATION PROVIDED IN THIS DOCUMENT IS AT THE RISK OF THE USER.

-->
<xs:schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.onem2m.org/xml/protocols"
	xmlns:m2m="http://www.onem2m.org/xml/protocols" xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="unqualified">

28
	<xs:include schemaLocation="CDT-enumerationTypes-v1_3_0.xsd" />
wgranzow's avatar
wgranzow committed
29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64

	<!--********************** -->
	<!-- oneM2M Simple Types   -->
	<!--********************** -->

	<xs:simpleType name="ID">
		<xs:restriction base="xs:anyURI" />
	</xs:simpleType>

	<xs:simpleType name="nodeID">
		<xs:restriction base="xs:token" />
	</xs:simpleType>

	<xs:simpleType name="deviceID">
		<xs:restriction base="xs:token">
			<xs:pattern value="urn:dev:ops:[\dABCDEFabcdef]{6}-[\w_%]+-[\w_%]+" />
			<xs:pattern value="urn:dev:os:[\dABCDEFabcdef]{6}-[\w_%]+" />
			<xs:pattern value="urn:imei:\d{15}" />
			<xs:pattern value="urn:esn:[\dABCDEFabcdef]{8}" />
			<xs:pattern value="urn:meid:[\dABCDEFabcdef]{14}" />
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="externalID">
		<xs:restriction base="xs:token" />
	</xs:simpleType>

	<xs:simpleType name="requestID">
		<xs:restriction base="xs:token" />
	</xs:simpleType>

	<xs:simpleType name="nhURI">
		<xs:restriction base="xs:anyURI" />
	</xs:simpleType>
	
	 <xs:simpleType name="acpType">
65 66 67 68 69 70
	 	<xs:restriction> 
	 		<xs:simpleType> 
	 			<xs:list itemType="m2m:ID" /> 
	 		</xs:simpleType> 	
	 		<xs:minLength value="1" /> 
	 	</xs:restriction> 
wgranzow's avatar
wgranzow committed
71 72 73
    </xs:simpleType>

	<xs:simpleType name="labels">
74 75 76 77 78 79
		<xs:restriction> 
			<xs:simpleType> 
				<xs:list itemType="xs:token" />
			</xs:simpleType> 	
			<xs:minLength value="1" /> 
		</xs:restriction> 
wgranzow's avatar
wgranzow committed
80 81 82 83 84 85 86 87 88 89 90
	</xs:simpleType>

    <xs:simpleType name="triggerRecipientID">
        <xs:restriction base="xs:unsignedInt">
            <xs:minInclusive value="0"></xs:minInclusive>
            <xs:maxInclusive value="65535"></xs:maxInclusive>
        </xs:restriction>
    </xs:simpleType>

	<!-- "listOfM2MID" is a space separated list of CSE-IDs and/or AE-IDs (i.e. elements of data type m2m:ID") -->
	<xs:simpleType name="listOfM2MID">
91 92 93 94 95 96
		<xs:restriction> 
			<xs:simpleType> 
				<xs:list itemType="m2m:ID" /> 
			</xs:simpleType> 				
			<xs:minLength value="1" /> 
		</xs:restriction> 
wgranzow's avatar
wgranzow committed
97 98 99 100 101 102 103 104 105 106 107 108
	</xs:simpleType>

	<!-- auxiliary data type required to define "listOflongMin-1" below -->
	<xs:simpleType name="longMin-1">
		<xs:restriction base="xs:long">
			<xs:minInclusive value="-1" />
		</xs:restriction>
	</xs:simpleType>

	<!-- "listOfMinMax" represents a list of min and max numbers used in attributes of the [cmdhLimits] resource based on  
		type xs:long in the range -1, 0, 1, 2 ... . Unit is milliseconds. Value setting of -1 expresses infinity -->
	<xs:simpleType name="listOfMinMax">
109 110 111 112
		<xs:restriction>
			<xs:simpleType>
				<xs:list itemType="m2m:longMin-1" />
			</xs:simpleType>			
wgranzow's avatar
wgranzow committed
113 114 115 116 117 118 119
			<xs:length value="2" />
		</xs:restriction>
	</xs:simpleType>

	<!-- "backOffParameters" is an ordered list of 3 nonNegativeInteger numbers: backoffTime, backoffTimeIncrement, maximumBackoffTime 
		(in that order!), all units in milliseconds -->
	<xs:simpleType name="backOffParameters">
120 121 122 123
		<xs:restriction>
			<xs:simpleType>
				<xs:list itemType="xs:nonNegativeInteger" />
			</xs:simpleType>
wgranzow's avatar
wgranzow committed
124 125 126 127 128
			<xs:length value="3" />
		</xs:restriction>
	</xs:simpleType>
	 
	<!-- m2m:ipv4 and m2m:ipv6 and m2m:countryCode are defined in the CDT-accessControlPolicy file -->
129

wgranzow's avatar
wgranzow committed
130
	<xs:simpleType name="poaList">
131 132 133 134 135 136
		<xs:restriction> 
			<xs:simpleType> 
				<xs:list itemType="xs:string" />
			</xs:simpleType> 
			<xs:minLength value="1" /> 
		</xs:restriction> 
wgranzow's avatar
wgranzow committed
137 138 139 140 141 142 143 144
	</xs:simpleType>

    <!--Format is YYYYMMDDThhmmss with no punctuation -->
	<xs:simpleType name="timestamp">
		<xs:restriction base="xs:string">
			<xs:pattern value="\d{4}(0[1-9]|1[0-2])(0[1-9]|[1-2]\d|30|31)T([01]\d|2[0-3])[0-5]\d[0-5]\d"></xs:pattern>
		</xs:restriction>
	</xs:simpleType>
145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
	
	
	<xs:simpleType name="absRelTimestamp">
		<xs:union>
			<!-- absolute Time -->
			<xs:simpleType>
				<xs:restriction base='m2m:timestamp' />
			</xs:simpleType>
			<!-- relative Time -->
			<xs:simpleType>
				<xs:restriction base='xs:long' />
			</xs:simpleType>
		</xs:union>
	</xs:simpleType>
	
wgranzow's avatar
wgranzow committed
160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200

	<xs:simpleType name="typeOfContent">
        <xs:restriction base="xs:string">
            <xs:pattern value="[\w/!#$^_.+&amp;\-]+" />
        </xs:restriction>
    </xs:simpleType>

	<xs:simpleType name="contentInfo">
		<xs:restriction base="xs:string">
			<xs:pattern value="[\w/!#$^_.+&amp;\-]+(:[0-2])?" />
		</xs:restriction>
	</xs:simpleType>
	
	<xs:simpleType name="eventCat">
        <union>
            <simpleType>
                <restriction base='m2m:stdEventCats' />
            </simpleType>
            <!-- User-defined range -->
            <simpleType>
                <restriction base='xs:integer'>
                    <xs:minInclusive value="100" />
                    <xs:maxInclusive value="999" />
                </restriction>
            </simpleType>
        </union>
    </xs:simpleType>

    <xs:simpleType name="eventCatWithDef">
        <union>
            <simpleType>
                <restriction base='m2m:eventCat' />
            </simpleType>
            <!-- User-defined range -->
            <simpleType>
                <restriction base='xs:integer'>
                    <xs:enumeration value="0" />
                </restriction>
            </simpleType>
        </union>
    </xs:simpleType>
201
	
wgranzow's avatar
wgranzow committed
202
    <xs:simpleType name="listOfEventCat">
203 204 205 206 207 208
    	<xs:restriction>
    		<xs:simpleType> 
    			<xs:list itemType="m2m:eventCat" /> 
    		</xs:simpleType> 			
    		<xs:minLength value="1" /> 
    	</xs:restriction> 
wgranzow's avatar
wgranzow committed
209 210 211
    </xs:simpleType>

    <xs:simpleType name="listOfEventCatWithDef">
212 213 214 215 216 217
    	<xs:restriction>
    		<xs:simpleType> 
    			<xs:list itemType="m2m:eventCatWithDef" /> 
    		</xs:simpleType> 	    		
    		<xs:minLength value="1" /> 
    	</xs:restriction> 
wgranzow's avatar
wgranzow committed
218 219 220 221 222
    </xs:simpleType>

	<xs:simpleType name="scheduleEntry">
		<xs:restriction base="xs:string">
			<xs:pattern
223
				value="(([*]|[1-5]?\d([,-][1-5]?\d)*)\s+){2}([*]|((1?\d|2[0-3])([,-](1?\d|2[0-3]))*))\s+([*]|(([1-9]|1\d|2\d|3[01])([,-]([1-9]|1\d|2\d|3[01]))*))\s+([*]|(([1-9]|1[0-2])([,-]([1-9]|1[0-2]))*))\s+([*]|([0-6]([,-][0-6])*))" />
wgranzow's avatar
wgranzow committed
224 225 226 227
		</xs:restriction>
	</xs:simpleType>

	<xs:simpleType name="listOfURIs">
228 229 230 231 232 233
		<xs:restriction> 
			<xs:simpleType> 
				<xs:list itemType="xs:anyURI" /> 
			</xs:simpleType> 
			<xs:minLength value="1" /> 
		</xs:restriction> 
wgranzow's avatar
wgranzow committed
234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272
	</xs:simpleType>


	<!--********************** -->
	<!-- oneM2M Complex Types -->
	<!--********************** -->

	<xs:complexType name="deliveryMetaData">
		<xs:sequence>
			<xs:sequence>
				<xs:element name="tracingOption" type="xs:boolean" />
				<xs:element name="tracingInfo" type="m2m:listOfM2MID" minOccurs="0"/>
				<!-- should tracing Info be list of anyURI? -->
			</xs:sequence>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="aggregatedRequest">
		<xs:sequence>
			<xs:element name="request" maxOccurs="unbounded">
				<xs:complexType>
					<xs:sequence>
						<xs:element name="operation" type="m2m:operation" />
						<xs:element name="to" type="xs:anyURI" />
						<xs:element name="from" type="m2m:ID" />
						<xs:element name="requestIdentifier" type="m2m:requestID" />
						<xs:element name="primitiveContent" type="m2m:primitiveContent" minOccurs="0" />
						<xs:element name="metaInformation" type="m2m:metaInformation" minOccurs="0" />
					</xs:sequence>
				</xs:complexType>
			</xs:element>
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="metaInformation">
		<xs:sequence>
			<xs:element name="resourceType" type="m2m:resourceType" minOccurs="0" />
			<xs:element name="name" type="xs:NCName" minOccurs="0" />
			<xs:element name="originatingTimestamp" type="m2m:timestamp" minOccurs="0" />
273 274 275
			<xs:element name="requestExpirationTimestamp" type="m2m:absRelTimestamp" minOccurs="0" />
			<xs:element name="resultExpirationTimestamp" type="m2m:absRelTimestamp" minOccurs="0" />
			<xs:element name="operationExecutionTime" type="m2m:absRelTimestamp" minOccurs="0" />
wgranzow's avatar
wgranzow committed
276
			<xs:element name="responseType" type="m2m:responseTypeInfo" minOccurs="0" />
277
			<xs:element name="resultPersistence" type="m2m:absRelTimestamp" minOccurs="0" />
wgranzow's avatar
wgranzow committed
278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478
			<xs:element name="resultContent" type="m2m:resultContent" minOccurs="0" />
			<xs:element name="eventCategory" type="m2m:eventCat" minOccurs="0" />
			<xs:element name="deliveryAggregation" type="xs:boolean" minOccurs="0" />
			<xs:element name="groupRequestIdentifier" type="xs:string" minOccurs="0" />
			<xs:element name="filterCriteria" type="m2m:filterCriteria" minOccurs="0" />
			<xs:element name="discoveryResultType" type="m2m:discResType" minOccurs="0" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="primitiveContent">
		<xs:sequence>
			<xs:any namespace="http://www.onem2m.org/xml/protocols" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>
	
	<!-- m2m:batchNotify and m2m:eventNotificationCriteria are defined in the subscription resource file --> 

	<xs:complexType name="filterCriteria">
		<xs:sequence>
			<xs:element name="createdBefore" type="m2m:timestamp" minOccurs="0" />
			<xs:element name="createdAfter" type="m2m:timestamp" minOccurs="0" />
			<xs:element name="modifiedSince" type="m2m:timestamp" minOccurs="0" />
			<xs:element name="unmodifiedSince" type="m2m:timestamp" minOccurs="0" />
			<xs:element name="stateTagSmaller" type="xs:positiveInteger" minOccurs="0" />
			<xs:element name="stateTagBigger" type="xs:nonNegativeInteger" minOccurs="0" />
			<xs:element name="expireBefore" type="m2m:timestamp" minOccurs="0" />
			<xs:element name="expireAfter" type="m2m:timestamp" minOccurs="0" />
			<xs:element name="labels" type="m2m:labels" minOccurs="0" />
			<xs:element name="resourceType" type="m2m:resourceType" minOccurs="0" />
			<xs:element name="sizeAbove" type="xs:nonNegativeInteger" minOccurs="0" />
			<xs:element name="sizeBelow" type="xs:positiveInteger" minOccurs="0" />
			<xs:element name="contentType" type="m2m:typeOfContent" minOccurs="0" maxOccurs="unbounded" />
			<xs:element name="attribute" type="m2m:attribute" minOccurs="0" maxOccurs="unbounded" />
			<xs:element name="filterUsage" type="m2m:filterUsage" minOccurs="0" />
			<xs:element name="limit" type="xs:nonNegativeInteger" minOccurs="0" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="attribute">
		<xs:sequence>
			<xs:element name="name" type="xs:NCName" />
			<xs:element name="value" type="xs:anyType" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="attributeList">
		<xs:sequence>
			<xs:element name="attribute" type="m2m:attribute" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="scheduleEntries">
		<xs:sequence>
			<xs:element name="scheduleEntry" type="m2m:scheduleEntry" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>
	
	<!-- m2m:aggregatedNotification and m2m:Notification are in the Notification xsd file -->

	<!-- "actionStatus" is used across mgmtObj resources -->
	<xs:complexType name="actionStatus">
		<xs:sequence>
			<xs:element name="action" type="xs:anyURI" minOccurs="0" />
			<xs:element name="status" type="m2m:status" minOccurs="0" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="anyArgType">
		<xs:sequence>
			<xs:element name="name" type="xs:NCName" />
			<xs:element name="value" type="xs:anyType" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="resetArgsType">
		<xs:sequence>
			<xs:element name="anyArg" type="m2m:anyArgType" minOccurs="0" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="rebootArgsType">
		<xs:sequence>
			<xs:element name="anyArg" type="m2m:anyArgType" minOccurs="0" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="uploadArgsType">
		<xs:sequence>
			<xs:element name="fileType" type="xs:string" />
			<xs:element name="URL" type="xs:anyURI" />
			<xs:element name="username" type="xs:string" />
			<xs:element name="password" type="xs:string" />
			<xs:element name="anyArg" type="m2m:anyArgType" minOccurs="0" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="downloadArgsType">
		<xs:sequence>
			<xs:element name="fileType" type="xs:string" />
			<xs:element name="URL" type="xs:anyURI" />
			<xs:element name="username" type="xs:string" />
			<xs:element name="password" type="xs:string" />
			<xs:element name="filesize" type="xs:positiveInteger" />
            <xs:element name="targetFile" type="xs:string" />
            <xs:element name="delaySeconds" type="xs:positiveInteger" />
			<xs:element name="successURL" type="xs:anyURI" />
			<xs:element name="startTime" type="m2m:timestamp" />
			<xs:element name="completeTime" type="m2m:timestamp" />
			<xs:element name="anyArg" type="m2m:anyArgType" minOccurs="0" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="softwareInstallArgsType">
		<xs:sequence>
			<xs:element name="URL" type="xs:anyURI" />
			<xs:element name="UUID" type="xs:string" />
			<xs:element name="username" type="xs:string" />
			<xs:element name="password" type="xs:string" />
			<xs:element name="executionEnvRef" type="xs:string" />
			<xs:element name="anyArg" type="m2m:anyArgType" minOccurs="0" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="softwareUpdateArgsType">
		<xs:sequence>
			<xs:element name="UUID" type="xs:string" />
			<xs:element name="version" type="xs:string" />
			<xs:element name="URL" type="xs:anyURI" />
			<xs:element name="username" type="xs:string" />
			<xs:element name="password" type="xs:string" />
			<xs:element name="executionEnvRef" type="xs:string" />
			<xs:element name="anyArg" type="m2m:anyArgType" minOccurs="0" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>

	<xs:complexType name="softwareUninstallArgsType">
		<xs:sequence>
			<xs:element name="UUID" type="xs:string" />
			<xs:element name="version" type="xs:string" />
			<xs:element name="executionEnvRef" type="xs:string" />
			<xs:element name="anyArg" type="m2m:anyArgType" minOccurs="0" maxOccurs="unbounded" />
		</xs:sequence>
	</xs:complexType>
	
	<xs:complexType name="execReqArgsListType">
		<xs:choice>
            <xs:element name="reset" type="m2m:resetArgsType" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="reboot" type="m2m:rebootArgsType" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="upload" type="m2m:uploadArgsType" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="download" type="m2m:downloadArgsType" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="softwareInstall" type="m2m:softwareInstallArgsType" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="softwareUpdate" type="m2m:softwareUpdateArgsType" minOccurs="0" maxOccurs="unbounded" />
            <xs:element name="softwareUninstall" type="m2m:softwareUninstallArgsType" minOccurs="0" maxOccurs="unbounded" />
        </xs:choice>
	</xs:complexType>

	<xs:complexType name="mgmtLinkRef">
		<xs:simpleContent>
			<xs:extension base="xs:anyURI">
				<xs:attribute name="name" type="xs:NCName" use="required" />
				<xs:attribute name="type" type="m2m:mgmtDefinition" use="required" />
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

	<xs:complexType name="resourceWrapper">
		<xs:complexContent>
			<xs:extension base="m2m:resource">
				<xs:attribute name="URI" type="xs:anyURI" use="required" />
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

    <!--  m2m:accessControlRule and m2m:locationRegion are defined in the accessControlPolicy xsd file -->

	<xs:complexType name="childResourceRef">
		<xs:simpleContent>
			<xs:extension base="xs:anyURI">
				<xs:attribute name="name" type="xs:NCName" use="required" />
				<xs:attribute name="type" type="m2m:resourceType" use="required" />
			</xs:extension>
		</xs:simpleContent>
	</xs:complexType>

    <xs:complexType name="responseTypeInfo">
        <xs:sequence>
            <xs:element name="responseTypeValue" type="m2m:responseType" />
            <xs:element name="notificationURI" type="xs:anyURI" minOccurs="0" maxOccurs="unbounded" />
        </xs:sequence>
    </xs:complexType>
    
    <!-- m2m:rateLimit is in the Subscription xsd file -->

	<xs:complexType name="operationResult">
		<xs:sequence>
			<xs:element name="responseStatusCode" type="m2m:responseStatusCode" />
			<xs:element name="requestIdentifier" type="m2m:requestID" />			
			<xs:element name="primitiveContent" type="m2m:primitiveContent" minOccurs="0" />
			<xs:element name="to" type="xs:anyURI" minOccurs="0" />
			<xs:element name="from" type="m2m:ID" minOccurs="0" />
			<xs:element name="originatingTimestamp" type="m2m:timestamp" minOccurs="0" />
479
			<xs:element name="resultExpirationTimestamp" type="m2m:absRelTimestamp" minOccurs="0" />
wgranzow's avatar
wgranzow committed
480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519
			<xs:element name="eventCategory" type="m2m:eventCat" minOccurs="0" />
		</xs:sequence>
	</xs:complexType>

    <!-- m2m:aggregatedResponse is in the ResponsePrimitive xsd file -->

	<!-- Resource type definitions. These types include the "common attributes" that are used by oneM2M Resources. Each oneM2M 
		Resource has a resource type that is defined in a separate schema, but each resource type extends one of the types that is 
		defined below -->

	<xs:complexType name="resource">
		<xs:sequence>
			<xs:element name="resourceType" type="m2m:resourceType" />
			<xs:element name="resourceID" type="m2m:ID" />
			<xs:element name="parentID" type="m2m:nhURI" />
			<xs:element name="creationTime" type="m2m:timestamp" />
			<xs:element name="lastModifiedTime" type="m2m:timestamp" />
			<xs:element name="labels" type="m2m:labels" minOccurs="0" />
		</xs:sequence>
		<xs:attribute name="resourceName" type="xs:NCName" use="required" />
	</xs:complexType>

	<xs:complexType name="regularResource">
		<xs:complexContent>
			<xs:extension base="m2m:resource">
				<xs:sequence>
					<xs:element name="accessControlPolicyIDs" type="m2m:acpType" minOccurs="0" />
					<xs:element name="expirationTime" type="m2m:timestamp" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="announceableResource">
		<xs:complexContent>
			<xs:extension base="m2m:regularResource">
				<xs:sequence>
					<xs:element name="announceTo" type="m2m:listOfURIs" minOccurs="0" />
					<xs:element name="announcedAttribute" minOccurs="0">
						<xs:simpleType>
520 521 522 523 524 525
							<xs:restriction> 
								<xs:simpleType> 
									<xs:list itemType="xs:NCName" />
								</xs:simpleType> 	
								<xs:minLength value="1" /> 
							</xs:restriction> 
wgranzow's avatar
wgranzow committed
526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553
						</xs:simpleType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="announcedResource">
		<xs:complexContent>
			<!-- AccessControlPolicyIDs is mandatory for announced resources but not for the original ones -->
			<xs:extension base="m2m:resource">
				<xs:sequence>
					<xs:element name="accessControlPolicyIDs" type="m2m:acpType" />
					<xs:element name="expirationTime" type="m2m:timestamp" />
					<xs:element name="link" type="xs:anyURI" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="announceableSubordinateResource">
		<xs:complexContent>
			<xs:extension base="m2m:resource">
				<xs:sequence>
					<xs:element name="expirationTime" type="m2m:timestamp" />
					<xs:element name="announceTo" type="m2m:listOfURIs" minOccurs="0" />
					<xs:element name="announcedAttribute" minOccurs="0">
						<xs:simpleType>
554 555
							<xs:restriction> 
								<xs:simpleType> 
556
									<xs:list itemType="xs:NCName" />
557 558 559
								</xs:simpleType>
								<xs:minLength value="1" /> 
							</xs:restriction> 
wgranzow's avatar
wgranzow committed
560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604
						</xs:simpleType>
					</xs:element>
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="announcedSubordinateResource">
		<xs:complexContent>
			<xs:extension base="m2m:resource">
				<xs:sequence>
					<xs:element name="expirationTime" type="m2m:timestamp" />
					<xs:element name="link" type="xs:anyURI" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="mgmtResource">
		<xs:complexContent>
			<xs:extension base="m2m:announceableResource">
				<xs:sequence>
					<xs:element name="mgmtDefinition" type="m2m:mgmtDefinition" />
					<xs:element name="objectIDs" type="m2m:listOfURIs" minOccurs="0" />
					<xs:element name="objectPaths" type="m2m:listOfURIs" minOccurs="0" />
					<xs:element name="description" type="xs:string" minOccurs="0" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

	<xs:complexType name="announcedMgmtResource">
		<xs:complexContent>
			<xs:extension base="m2m:announcedResource">
				<xs:sequence>
					<xs:element name="mgmtDefinition" type="m2m:mgmtDefinition" />
					<xs:element name="objectIDs" type="m2m:listOfURIs" minOccurs="0" />
					<xs:element name="objectPaths" type="m2m:listOfURIs" minOccurs="0" />
					<xs:element name="description" type="xs:string" minOccurs="0" />
				</xs:sequence>
			</xs:extension>
		</xs:complexContent>
	</xs:complexType>

</xs:schema>