Remove netconf from commons/opendaylight pom
[controller.git] / opendaylight / netconf / netconf-util / src / main / resources / rfc4741.xsd
1 <?xml version="1.0" encoding="UTF-8"?>
2 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
3            xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
4            targetNamespace="urn:ietf:params:xml:ns:netconf:base:1.0"
5            elementFormDefault="qualified"
6            attributeFormDefault="unqualified"
7            xml:lang="en">
8     <!--
9        import standard XML definitions
10        -->
11     <xs:import namespace="http://www.w3.org/XML/1998/namespace"
12                schemaLocation="http://www.w3.org/2001/xml.xsd">
13
14         <xs:annotation>
15             <xs:documentation>
16                 This import accesses the xml: attribute groups for the
17                 xml:lang as declared on the error-message element.
18             </xs:documentation>
19         </xs:annotation>
20     </xs:import>
21     <!--
22        message-id attribute
23        -->
24     <xs:simpleType name="messageIdType">
25         <xs:restriction base="xs:string">
26             <xs:maxLength value="4095"/>
27         </xs:restriction>
28     </xs:simpleType>
29     <!--
30        Types used for session-id
31      -->
32     <xs:simpleType name="SessionId">
33         <xs:restriction base="xs:unsignedInt">
34             <xs:minInclusive value="1"/>
35         </xs:restriction>
36     </xs:simpleType>
37     <xs:simpleType name="SessionIdOrZero">
38         <xs:restriction base="xs:unsignedInt"/>
39     </xs:simpleType>
40     <!--
41        <rpc> element
42        -->
43     <xs:complexType name="rpcType">
44         <xs:sequence>
45             <xs:element ref="rpcOperation"/>
46
47
48         </xs:sequence>
49         <xs:attribute name="message-id" type="messageIdType"
50                       use="required"/>
51         <!--
52              Arbitrary attributes can be supplied with <rpc> element.
53            -->
54         <xs:anyAttribute processContents="lax"/>
55     </xs:complexType>
56     <xs:element name="rpc" type="rpcType"/>
57     <!--
58        data types and elements used to construct rpc-errors
59        -->
60     <xs:simpleType name="ErrorType">
61         <xs:restriction base="xs:string">
62             <xs:enumeration value="transport"/>
63             <xs:enumeration value="rpc"/>
64             <xs:enumeration value="protocol"/>
65             <xs:enumeration value="application"/>
66         </xs:restriction>
67     </xs:simpleType>
68     <xs:simpleType name="ErrorTag">
69         <xs:restriction base="xs:string">
70             <xs:enumeration value="in-use"/>
71             <xs:enumeration value="invalid-value"/>
72             <xs:enumeration value="too-big"/>
73             <xs:enumeration value="missing-attribute"/>
74             <xs:enumeration value="bad-attribute"/>
75             <xs:enumeration value="unknown-attribute"/>
76             <xs:enumeration value="missing-element"/>
77             <xs:enumeration value="bad-element"/>
78             <xs:enumeration value="unknown-element"/>
79             <xs:enumeration value="unknown-namespace"/>
80             <xs:enumeration value="access-denied"/>
81             <xs:enumeration value="lock-denied"/>
82             <xs:enumeration value="resource-denied"/>
83             <xs:enumeration value="rollback-failed"/>
84             <xs:enumeration value="data-exists"/>
85             <xs:enumeration value="data-missing"/>
86             <xs:enumeration value="operation-not-supported"/>
87             <xs:enumeration value="operation-failed"/>
88             <xs:enumeration value="partial-operation"/>
89         </xs:restriction>
90     </xs:simpleType>
91     <xs:simpleType name="ErrorSeverity">
92         <xs:restriction base="xs:string">
93             <xs:enumeration value="error"/>
94             <xs:enumeration value="warning"/>
95         </xs:restriction>
96
97
98     </xs:simpleType>
99     <xs:complexType name="errorInfoType">
100         <xs:sequence>
101             <xs:choice>
102                 <xs:element name="session-id" type="SessionIdOrZero"/>
103                 <xs:sequence minOccurs="0" maxOccurs="unbounded">
104                     <xs:sequence>
105                         <xs:element name="bad-attribute" type="xs:QName"
106                                     minOccurs="0" maxOccurs="1"/>
107                         <xs:element name="bad-element" type="xs:QName"
108                                     minOccurs="0" maxOccurs="1"/>
109                         <xs:element name="ok-element" type="xs:QName"
110                                     minOccurs="0" maxOccurs="1"/>
111                         <xs:element name="err-element" type="xs:QName"
112                                     minOccurs="0" maxOccurs="1"/>
113                         <xs:element name="noop-element" type="xs:QName"
114                                     minOccurs="0" maxOccurs="1"/>
115                         <xs:element name="bad-namespace" type="xs:QName"
116                                     minOccurs="0" maxOccurs="1"/>
117                     </xs:sequence>
118                 </xs:sequence>
119             </xs:choice>
120             <!-- elements from any other namespace are also allowed
121                   to follow the NETCONF elements -->
122             <xs:any namespace="##other"
123                     minOccurs="0" maxOccurs="unbounded"/>
124         </xs:sequence>
125     </xs:complexType>
126     <xs:complexType name="rpcErrorType">
127         <xs:sequence>
128             <xs:element name="error-type" type="ErrorType"/>
129             <xs:element name="error-tag" type="ErrorTag"/>
130             <xs:element name="error-severity" type="ErrorSeverity"/>
131             <xs:element name="error-app-tag" type="xs:string"
132                         minOccurs="0"/>
133             <xs:element name="error-path" type="xs:string" minOccurs="0"/>
134             <xs:element name="error-message" minOccurs="0">
135                 <xs:complexType>
136                     <xs:simpleContent>
137                         <xs:extension base="xs:string">
138                             <xs:attribute ref="xml:lang" use="optional"/>
139                         </xs:extension>
140                     </xs:simpleContent>
141                 </xs:complexType>
142             </xs:element>
143             <xs:element name="error-info" type="errorInfoType"
144                         minOccurs="0"/>
145         </xs:sequence>
146
147
148     </xs:complexType>
149     <!--
150        <rpc-reply> element
151        -->
152     <xs:complexType name="rpcReplyType">
153         <xs:choice>
154             <xs:element name="ok"/>
155             <xs:group ref="rpcResponse"/>
156         </xs:choice>
157         <xs:attribute name="message-id" type="messageIdType"
158                       use="optional"/>
159         <!--
160              Any attributes supplied with <rpc> element must be returned
161              on <rpc-reply>.
162            -->
163         <xs:anyAttribute processContents="lax"/>
164     </xs:complexType>
165     <xs:group name="rpcResponse">
166         <xs:sequence>
167             <xs:element name="rpc-error" type="rpcErrorType"
168                         minOccurs="0" maxOccurs="unbounded"/>
169             <xs:element name="data" type="dataInlineType" minOccurs="0"/>
170         </xs:sequence>
171     </xs:group>
172     <xs:element name="rpc-reply" type="rpcReplyType"/>
173     <!--
174        Type for <test-option> parameter to <edit-config>
175        -->
176     <xs:simpleType name="testOptionType">
177         <xs:restriction base="xs:string">
178             <xs:enumeration value="test-then-set"/>
179             <xs:enumeration value="set"/>
180         </xs:restriction>
181     </xs:simpleType>
182     <!--
183        Type for <error-option> parameter to <edit-config>
184        -->
185     <xs:simpleType name="errorOptionType">
186         <xs:restriction base="xs:string">
187             <xs:annotation>
188                 <xs:documentation>
189                     Use of the rollback-on-error value requires
190                     the :rollback-on-error capability.
191                 </xs:documentation>
192             </xs:annotation>
193             <xs:enumeration value="stop-on-error"/>
194             <xs:enumeration value="continue-on-error"/>
195             <xs:enumeration value="rollback-on-error"/>
196
197
198         </xs:restriction>
199     </xs:simpleType>
200     <!--
201        rpcOperationType: used as a base type for all
202        NETCONF operations
203        -->
204     <xs:complexType name="rpcOperationType"/>
205     <xs:element name="rpcOperation"
206                 type="rpcOperationType" abstract="true"/>
207     <!--
208        Type for <config> element
209        -->
210     <xs:complexType name="configInlineType">
211         <xs:complexContent>
212             <xs:extension base="xs:anyType"/>
213         </xs:complexContent>
214     </xs:complexType>
215     <!--
216        Type for <data> element
217        -->
218     <xs:complexType name="dataInlineType">
219         <xs:complexContent>
220             <xs:extension base="xs:anyType"/>
221         </xs:complexContent>
222     </xs:complexType>
223     <!--
224        Type for <filter> element
225        -->
226     <xs:simpleType name="FilterType">
227         <xs:restriction base="xs:string">
228             <xs:annotation>
229                 <xs:documentation>
230                     Use of the xpath value requires the :xpath capability.
231                 </xs:documentation>
232             </xs:annotation>
233             <xs:enumeration value="subtree"/>
234             <xs:enumeration value="xpath"/>
235         </xs:restriction>
236     </xs:simpleType>
237     <xs:complexType name="filterInlineType">
238         <xs:complexContent>
239             <xs:extension base="xs:anyType">
240                 <xs:attribute name="type"
241                               type="FilterType" default="subtree"/>
242                 <!-- if type="xpath", the xpath expression
243                    appears in the select element -->
244                 <xs:attribute name="select"/>
245             </xs:extension>
246
247
248         </xs:complexContent>
249     </xs:complexType>
250     <!--
251        configuration datastore names
252        -->
253     <xs:annotation>
254         <xs:documentation>
255             The startup datastore can be used only if the :startup
256             capability is advertised. The candidate datastore can
257             be used only if the :candidate datastore is advertised.
258         </xs:documentation>
259     </xs:annotation>
260     <xs:complexType name="configNameType"/>
261     <xs:element name="config-name"
262                 type="configNameType" abstract="true"/>
263     <xs:element name="startup" type="configNameType"
264                 substitutionGroup="config-name"/>
265     <xs:element name="candidate" type="configNameType"
266                 substitutionGroup="config-name"/>
267     <xs:element name="running" type="configNameType"
268                 substitutionGroup="config-name"/>
269     <!--
270        operation attribute used in <edit-config>
271        -->
272     <xs:simpleType name="editOperationType">
273         <xs:restriction base="xs:string">
274             <xs:enumeration value="merge"/>
275             <xs:enumeration value="replace"/>
276             <xs:enumeration value="create"/>
277             <xs:enumeration value="delete"/>
278         </xs:restriction>
279     </xs:simpleType>
280     <xs:attribute name="operation"
281                   type="editOperationType" default="merge"/>
282     <!--
283        <default-operation> element
284        -->
285     <xs:simpleType name="defaultOperationType">
286         <xs:restriction base="xs:string">
287             <xs:enumeration value="merge"/>
288             <xs:enumeration value="replace"/>
289             <xs:enumeration value="none"/>
290         </xs:restriction>
291     </xs:simpleType>
292     <!--
293        <url> element
294        -->
295     <xs:complexType name="configURIType">
296
297
298         <xs:annotation>
299             <xs:documentation>
300                 Use of the url element requires the :url capability.
301             </xs:documentation>
302         </xs:annotation>
303         <xs:simpleContent>
304             <xs:extension base="xs:anyURI"/>
305         </xs:simpleContent>
306     </xs:complexType>
307     <!--
308        Type for <source> element (except <get-config>)
309        -->
310     <xs:complexType name="rpcOperationSourceType">
311         <xs:choice>
312             <xs:element name="config" type="configInlineType"/>
313             <xs:element ref="config-name"/>
314             <xs:element name="url" type="configURIType"/>
315         </xs:choice>
316     </xs:complexType>
317     <!--
318        Type for <source> element in <get-config>
319        -->
320     <xs:complexType name="getConfigSourceType">
321         <xs:choice>
322             <xs:element ref="config-name"/>
323             <xs:element name="url" type="configURIType"/>
324         </xs:choice>
325     </xs:complexType>
326     <!--
327        Type for <target> element
328        -->
329     <xs:complexType name="rpcOperationTargetType">
330         <xs:choice>
331             <xs:element ref="config-name"/>
332             <xs:element name="url" type="configURIType"/>
333         </xs:choice>
334     </xs:complexType>
335     <!--
336        <get-config> operation
337        -->
338     <xs:complexType name="getConfigType">
339         <xs:complexContent>
340             <xs:extension base="rpcOperationType">
341                 <xs:sequence>
342                     <xs:element name="source"
343                                 type="getConfigSourceType"/>
344                     <xs:element name="filter"
345                                 type="filterInlineType" minOccurs="0"/>
346
347
348                 </xs:sequence>
349             </xs:extension>
350         </xs:complexContent>
351     </xs:complexType>
352     <xs:element name="get-config" type="getConfigType"
353                 substitutionGroup="rpcOperation"/>
354     <!--
355        <edit-config> operation
356        -->
357     <xs:complexType name="editConfigType">
358         <xs:complexContent>
359             <xs:extension base="rpcOperationType">
360                 <xs:sequence>
361                     <xs:annotation>
362                         <xs:documentation>
363                             Use of the test-option element requires the
364                             :validate capability. Use of the url element
365                             requires the :url capability.
366                         </xs:documentation>
367                     </xs:annotation>
368                     <xs:element name="target"
369                                 type="rpcOperationTargetType"/>
370                     <xs:element name="default-operation"
371                                 type="defaultOperationType"
372                                 minOccurs="0"/>
373                     <xs:element name="test-option"
374                                 type="testOptionType"
375                                 minOccurs="0"/>
376                     <xs:element name="error-option"
377                                 type="errorOptionType"
378                                 minOccurs="0"/>
379                     <xs:choice>
380                         <xs:element name="config"
381                                     type="configInlineType"/>
382                         <xs:element name="url"
383                                     type="configURIType"/>
384                     </xs:choice>
385                 </xs:sequence>
386             </xs:extension>
387         </xs:complexContent>
388     </xs:complexType>
389     <xs:element name="edit-config" type="editConfigType"
390                 substitutionGroup="rpcOperation"/>
391     <!--
392        <copy-config> operation
393        -->
394     <xs:complexType name="copyConfigType">
395         <xs:complexContent>
396
397
398             <xs:extension base="rpcOperationType">
399                 <xs:sequence>
400                     <xs:element name="target" type="rpcOperationTargetType"/>
401                     <xs:element name="source" type="rpcOperationSourceType"/>
402                 </xs:sequence>
403             </xs:extension>
404         </xs:complexContent>
405     </xs:complexType>
406     <xs:element name="copy-config" type="copyConfigType"
407                 substitutionGroup="rpcOperation"/>
408     <!--
409        <delete-config> operation
410        -->
411     <xs:complexType name="deleteConfigType">
412         <xs:complexContent>
413             <xs:extension base="rpcOperationType">
414                 <xs:sequence>
415                     <xs:element name="target" type="rpcOperationTargetType"/>
416                 </xs:sequence>
417             </xs:extension>
418         </xs:complexContent>
419     </xs:complexType>
420     <xs:element name="delete-config" type="deleteConfigType"
421                 substitutionGroup="rpcOperation"/>
422     <!--
423        <get> operation
424        -->
425     <xs:complexType name="getType">
426         <xs:complexContent>
427             <xs:extension base="rpcOperationType">
428                 <xs:sequence>
429                     <xs:element name="filter"
430                                 type="filterInlineType" minOccurs="0"/>
431                 </xs:sequence>
432             </xs:extension>
433         </xs:complexContent>
434     </xs:complexType>
435     <xs:element name="get" type="getType"
436                 substitutionGroup="rpcOperation"/>
437     <!--
438        <lock> operation
439        -->
440     <xs:complexType name="lockType">
441         <xs:complexContent>
442             <xs:extension base="rpcOperationType">
443                 <xs:sequence>
444                     <xs:element name="target"
445                                 type="rpcOperationTargetType"/>
446
447
448                 </xs:sequence>
449             </xs:extension>
450         </xs:complexContent>
451     </xs:complexType>
452     <xs:element name="lock" type="lockType"
453                 substitutionGroup="rpcOperation"/>
454     <!--
455        <unlock> operation
456        -->
457     <xs:complexType name="unlockType">
458         <xs:complexContent>
459             <xs:extension base="rpcOperationType">
460                 <xs:sequence>
461                     <xs:element name="target" type="rpcOperationTargetType"/>
462                 </xs:sequence>
463             </xs:extension>
464         </xs:complexContent>
465     </xs:complexType>
466     <xs:element name="unlock" type="unlockType"
467                 substitutionGroup="rpcOperation"/>
468     <!--
469        <operations> operation
470        -->
471     <xs:complexType name="validateType">
472         <xs:annotation>
473             <xs:documentation>
474                 The validate operation requires the :validate capability.
475             </xs:documentation>
476         </xs:annotation>
477         <xs:complexContent>
478             <xs:extension base="rpcOperationType">
479                 <xs:sequence>
480                     <xs:element name="source" type="rpcOperationSourceType"/>
481                 </xs:sequence>
482             </xs:extension>
483         </xs:complexContent>
484     </xs:complexType>
485     <xs:element name="validate" type="validateType"
486                 substitutionGroup="rpcOperation"/>
487     <!--
488        <commit> operation
489        -->
490     <xs:simpleType name="confirmTimeoutType">
491         <xs:restriction base="xs:unsignedInt">
492             <xs:minInclusive value="1"/>
493         </xs:restriction>
494     </xs:simpleType>
495     <xs:complexType name="commitType">
496
497
498         <xs:annotation>
499             <xs:documentation>
500                 The commit operation requires the :candidate capability.
501             </xs:documentation>
502         </xs:annotation>
503         <xs:complexContent>
504             <xs:extension base="rpcOperationType">
505                 <xs:sequence>
506                     <xs:annotation>
507                         <xs:documentation>
508                             Use of the confirmed and confirm-timeout elements
509                             requires the :confirmed-commit capability.
510                         </xs:documentation>
511                     </xs:annotation>
512                     <xs:element name="confirmed" minOccurs="0"/>
513                     <xs:element name="confirm-timeout"
514                                 type="confirmTimeoutType"
515                                 minOccurs="0"/>
516                 </xs:sequence>
517             </xs:extension>
518         </xs:complexContent>
519     </xs:complexType>
520     <xs:element name="commit" type="commitType"
521                 substitutionGroup="rpcOperation"/>
522     <!--
523        <discard-changes> operation
524        -->
525     <xs:complexType name="discardChangesType">
526         <xs:annotation>
527             <xs:documentation>
528                 The discard-changes operation requires the
529                 :candidate capability.
530             </xs:documentation>
531         </xs:annotation>
532         <xs:complexContent>
533             <xs:extension base="rpcOperationType"/>
534         </xs:complexContent>
535     </xs:complexType>
536     <xs:element name="discard-changes"
537                 type="discardChangesType"
538                 substitutionGroup="rpcOperation"/>
539     <!--
540        <close-session> operation
541        -->
542     <xs:complexType name="closeSessionType">
543         <xs:complexContent>
544             <xs:extension base="rpcOperationType"/>
545         </xs:complexContent>
546
547
548     </xs:complexType>
549     <xs:element name="close-session" type="closeSessionType"
550                 substitutionGroup="rpcOperation"/>
551     <!--
552        <kill-session> operation
553        -->
554     <xs:complexType name="killSessionType">
555         <xs:complexContent>
556             <xs:extension base="rpcOperationType">
557                 <xs:sequence>
558                     <xs:element name="session-id"
559                                 type="SessionId" minOccurs="1"/>
560                 </xs:sequence>
561             </xs:extension>
562         </xs:complexContent>
563     </xs:complexType>
564     <xs:element name="kill-session" type="killSessionType"
565                 substitutionGroup="rpcOperation"/>
566     <!--
567        <hello> element
568        -->
569     <xs:element name="hello">
570         <xs:complexType>
571             <xs:sequence>
572                 <xs:element name="capabilities">
573                     <xs:complexType>
574                         <xs:sequence>
575                             <xs:element name="capability" type="xs:anyURI"
576                                         maxOccurs="unbounded"/>
577                         </xs:sequence>
578                     </xs:complexType>
579                 </xs:element>
580                 <xs:element name="session-id"
581                             type="SessionId" minOccurs="0"/>
582             </xs:sequence>
583         </xs:complexType>
584     </xs:element>
585 </xs:schema>