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"
12 This schema defines the syntax for the NETCONF Messages layer
13 messages 'hello', 'rpc', and 'rpc-reply'.
18 import standard XML definitions
21 <xs:import namespace="http://www.w3.org/XML/1998/namespace"
22 schemaLocation="http://www.w3.org/2001/xml.xsd">
24 <xs:import namespace="http://www.w3.org/XML/1998/namespace"
25 schemaLocation="xml.xsd">
28 This import accesses the xml: attribute groups for the
29 xml:lang as declared on the error-message element.
37 <xs:simpleType name="messageIdType">
38 <xs:restriction base="xs:string">
39 <xs:maxLength value="4095"/>
44 Types used for session-id
46 <xs:simpleType name="SessionId">
47 <xs:restriction base="xs:unsignedInt">
48 <xs:minInclusive value="1"/>
51 <xs:simpleType name="SessionIdOrZero">
52 <xs:restriction base="xs:unsignedInt"/>
58 <xs:complexType name="rpcType">
60 <xs:element ref="rpcOperation"/>
62 <xs:attribute name="message-id" type="messageIdType"
65 Arbitrary attributes can be supplied with <rpc> element.
67 <xs:anyAttribute processContents="lax"/>
69 <xs:element name="rpc" type="rpcType"/>
72 data types and elements used to construct rpc-errors
74 <xs:simpleType name="ErrorType">
75 <xs:restriction base="xs:string">
76 <xs:enumeration value="transport"/>
77 <xs:enumeration value="rpc"/>
78 <xs:enumeration value="protocol"/>
79 <xs:enumeration value="application"/>
82 <xs:simpleType name="ErrorTag">
83 <xs:restriction base="xs:string">
84 <xs:enumeration value="in-use"/>
85 <xs:enumeration value="invalid-value"/>
86 <xs:enumeration value="too-big"/>
87 <xs:enumeration value="missing-attribute"/>
88 <xs:enumeration value="bad-attribute"/>
89 <xs:enumeration value="unknown-attribute"/>
90 <xs:enumeration value="missing-element"/>
91 <xs:enumeration value="bad-element"/>
92 <xs:enumeration value="unknown-element"/>
93 <xs:enumeration value="unknown-namespace"/>
94 <xs:enumeration value="access-denied"/>
95 <xs:enumeration value="lock-denied"/>
96 <xs:enumeration value="resource-denied"/>
97 <xs:enumeration value="rollback-failed"/>
98 <xs:enumeration value="data-exists"/>
99 <xs:enumeration value="data-missing"/>
100 <xs:enumeration value="operation-not-supported"/>
101 <xs:enumeration value="operation-failed"/>
102 <xs:enumeration value="partial-operation"/>
103 <xs:enumeration value="malformed-message"/>
106 <xs:simpleType name="ErrorSeverity">
107 <xs:restriction base="xs:string">
108 <xs:enumeration value="error"/>
109 <xs:enumeration value="warning"/>
112 <xs:complexType name="errorInfoType">
115 <xs:element name="session-id" type="SessionIdOrZero"/>
116 <xs:sequence minOccurs="0" maxOccurs="unbounded">
118 <xs:element name="bad-attribute" type="xs:QName"
119 minOccurs="0" maxOccurs="1"/>
120 <xs:element name="bad-element" type="xs:QName"
121 minOccurs="0" maxOccurs="1"/>
122 <xs:element name="ok-element" type="xs:QName"
123 minOccurs="0" maxOccurs="1"/>
124 <xs:element name="err-element" type="xs:QName"
125 minOccurs="0" maxOccurs="1"/>
126 <xs:element name="noop-element" type="xs:QName"
127 minOccurs="0" maxOccurs="1"/>
128 <xs:element name="bad-namespace" type="xs:string"
129 minOccurs="0" maxOccurs="1"/>
133 <!-- elements from any other namespace are also allowed
134 to follow the NETCONF elements -->
135 <xs:any namespace="##other" processContents="lax"
136 minOccurs="0" maxOccurs="unbounded"/>
139 <xs:complexType name="rpcErrorType">
141 <xs:element name="error-type" type="ErrorType"/>
142 <xs:element name="error-tag" type="ErrorTag"/>
143 <xs:element name="error-severity" type="ErrorSeverity"/>
144 <xs:element name="error-app-tag" type="xs:string"
146 <xs:element name="error-path" type="xs:string" minOccurs="0"/>
147 <xs:element name="error-message" minOccurs="0">
150 <xs:extension base="xs:string">
151 <xs:attribute ref="xml:lang" use="optional"/>
156 <xs:element name="error-info" type="errorInfoType"
162 operation attribute used in <edit-config>
164 <xs:simpleType name="editOperationType">
165 <xs:restriction base="xs:string">
166 <xs:enumeration value="merge"/>
167 <xs:enumeration value="replace"/>
168 <xs:enumeration value="create"/>
169 <xs:enumeration value="delete"/>
170 <xs:enumeration value="remove"/>
173 <xs:attribute name="operation" type="editOperationType" default="merge"/>
176 default-operation element
178 <xs:simpleType name="DefaultOperationType">
179 <xs:restriction base="xs:string">
180 <xs:enumeration value="merge"/>
181 <xs:enumeration value="replace"/>
182 <xs:enumeration value="none"/>
185 <xs:element name="default-operation" type="DefaultOperationType"/>
190 <xs:complexType name="rpcReplyType">
192 <xs:element name="ok"/>
194 <xs:element ref="rpc-error"
195 minOccurs="0" maxOccurs="unbounded"/>
196 <xs:element ref="rpcResponse"
197 minOccurs="0" maxOccurs="unbounded"/>
199 <xs:element ref="data" minOccurs="0"/>
201 <xs:attribute name="message-id" type="messageIdType"
204 Any attributes supplied with <rpc> element must be returned
207 <xs:anyAttribute processContents="lax"/>
209 <xs:element name="rpc-reply" type="rpcReplyType"/>
211 <xs:complexType name="dataInlineType">
213 <xs:extension base="xs:anyType"/>
216 <xs:element name="data" type="dataInlineType"/>
221 <xs:element name="rpc-error" type="rpcErrorType"/>
224 rpcOperationType: used as a base type for all
227 <xs:complexType name="rpcOperationType"/>
228 <xs:element name="rpcOperation" type="rpcOperationType"
232 rpcResponseType: used as a base type for all
235 <xs:complexType name="rpcResponseType"/>
236 <xs:element name="rpcResponse" type="rpcResponseType"
242 <xs:element name="hello">
245 <xs:element name="capabilities">
248 <xs:element name="capability" type="xs:anyURI"
249 maxOccurs="unbounded"/>
253 <xs:element name="session-id" type="SessionId"
262 <xs:complexType name="configInlineType">
264 <xs:extension base="xs:anyType"/>
267 <xs:element name="config" type="configInlineType"/>
270 Configuration datastore names
272 <xs:complexType name="configNameType"/>
273 <xs:element name="config-name" type="configNameType"
275 <xs:element name="startup" type="configNameType"
276 substitutionGroup="config-name"/>
277 <xs:element name="candidate" type="configNameType"
278 substitutionGroup="config-name"/>
279 <xs:element name="running" type="configNameType"
280 substitutionGroup="config-name"/>
285 <xs:complexType name="configUriType">
287 <xs:extension base="xs:anyURI"/>
290 <xs:element name="url" type="configUriType"/>
295 <xs:complexType name="rpcOperationSourceType">
297 <xs:element ref="config"/>
298 <xs:element ref="config-name"/>
299 <xs:element ref="url"/>
302 <xs:element name="source" type="rpcOperationSourceType"/>
307 <xs:complexType name="rpcOperationTargetType">
309 <xs:element ref="config-name"/>
310 <xs:element ref="url"/>
313 <xs:element name="target" type="rpcOperationTargetType"/>
318 <xs:simpleType name="FilterType">
319 <xs:restriction base="xs:string">
320 <xs:enumeration value="subtree"/>
321 <xs:enumeration value="xpath"/>
324 <xs:complexType name="filterInlineType">
326 <xs:extension base="xs:anyType">
327 <xs:attribute name="type" type="FilterType"
332 <xs:element name="filter" type="filterInlineType"/>
335 test-option> parameter to <edit-config>
337 <xs:simpleType name="testOptionType">
338 <xs:restriction base="xs:string">
339 <xs:enumeration value="test-then-set"/>
340 <xs:enumeration value="set"/>
343 <xs:element name="test-option" type="testOptionType"/>
346 <error-option> parameter to <edit-config>
348 <xs:simpleType name="errorOptionType">
349 <xs:restriction base="xs:string">
350 <xs:enumeration value="stop-on-error"/>
351 <xs:enumeration value="ignore-error"/>
352 <xs:enumeration value="rollback-on-error"/>
355 <xs:element name="error-option" type="errorOptionType"/>
360 <xs:complexType name="getType">
362 <xs:extension base="rpcOperationType">
364 <xs:element ref="filter" minOccurs="0" maxOccurs="1"/>
369 <xs:element name="get" type="getType" substitutionGroup="rpcOperation"/>
372 <get-config> operation
374 <xs:complexType name="getConfigType">
376 <xs:extension base="rpcOperationType">
378 <xs:element ref="source"/>
379 <xs:element ref="filter" minOccurs="0" maxOccurs="1"/>
384 <xs:element name="get-config" type="getConfigType"
385 substitutionGroup="rpcOperation"/>
388 <edit-config> operation
390 <xs:complexType name="editConfigType">
392 <xs:extension base="rpcOperationType">
394 <xs:element ref="target"/>
395 <xs:element ref="default-operation" minOccurs="0"/>
396 <xs:element ref="test-option" minOccurs="0"/>
397 <xs:element ref="error-option" minOccurs="0"/>
398 <xs:element ref="config" minOccurs="0"/>
403 <xs:element name="edit-config" type="editConfigType"
404 substitutionGroup="rpcOperation"/>
407 <copy-config> operation
409 <xs:complexType name="copyConfigType">
411 <xs:extension base="rpcOperationType">
413 <xs:element ref="source"/>
414 <xs:element ref="target"/>
419 <xs:element name="copy-config" type="copyConfigType"
420 substitutionGroup="rpcOperation"/>
423 <delete-config> operation
425 <xs:complexType name="delete-configType">
427 <xs:extension base="rpcOperationType">
429 <xs:element ref="target"/>
434 <xs:element name="delete-config" type="delete-configType"
435 substitutionGroup="rpcOperation"/>
440 <xs:complexType name="lockType">
442 <xs:extension base="rpcOperationType">
444 <xs:element ref="target"/>
449 <xs:element name="lock" type="lockType"
450 substitutionGroup="rpcOperation"/>
455 <xs:complexType name="unlockType">
457 <xs:extension base="rpcOperationType">
459 <xs:element ref="target"/>
464 <xs:element name="unlock" type="unlockType"
465 substitutionGroup="rpcOperation"/>
470 <xs:complexType name="validateType">
472 <xs:extension base="rpcOperationType">
474 <xs:element ref="source"/>
479 <xs:element name="validate" type="validateType"
480 substitutionGroup="rpcOperation"/>
485 <xs:simpleType name="confirmTimeoutType">
486 <xs:restriction base="xs:unsignedInt"/>
488 <xs:simpleType name="persistIdType">
489 <xs:restriction base="xs:string"/>
492 <xs:complexType name="commitType">
494 <xs:extension base="rpcOperationType">
496 <xs:element name="confirmed" minOccurs="0" maxOccurs="1"/>
497 <xs:element name="confirm-timeout" type="confirmTimeoutType"
498 minOccurs="0" maxOccurs="1"/>
499 <xs:element name="persist" minOccurs="0" maxOccurs="1"/>
500 <xs:element name="persist-id" type="persistIdType"
501 minOccurs="0" maxOccurs="1"/>
506 <xs:element name="commit" type="commitType"
507 substitutionGroup="rpcOperation"/>
510 <cancel-commit> operation
512 <xs:complexType name="cancelCommitType">
514 <xs:extension base="rpcOperationType">
516 <xs:element name="persist-id" type="persistIdType"
517 minOccurs="0" maxOccurs="1"/>
522 <xs:element name="cancel-commit" type="cancelCommitType"
523 substitutionGroup="rpcOperation"/>
526 <discard-changes> operation
528 <xs:complexType name="discardChangesType">
530 <xs:extension base="rpcOperationType"/>
533 <xs:element name="discard-changes" type="discardChangesType"
534 substitutionGroup="rpcOperation"/>
537 <close-session> operation
539 <xs:complexType name="closeSessionType">
541 <xs:extension base="rpcOperationType"/>
544 <xs:element name="close-session" type="closeSessionType"
545 substitutionGroup="rpcOperation"/>
548 <kill-session> operation
550 <xs:complexType name="killSessionType">
552 <xs:extension base="rpcOperationType">
554 <xs:element name="session-id" minOccurs="0" maxOccurs="1"/>
559 <xs:element name="kill-session" type="killSessionType"
560 substitutionGroup="rpcOperation"/>