implement exit node
[ccsdk/sli/core.git] / sli / common / src / main / resources / svclogic.xsd
index 2704de8..c9beae8 100755 (executable)
-<?xml version = "1.0" encoding = "UTF-8"?>\r
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.onap.org/sdnc/svclogic" xmlns="http://www.onap.org/sdnc/svclogic">\r
-\r
-       <xsd:simpleType name="modeType">\r
-               <xsd:restriction base="xsd:string">\r
-                       <xsd:enumeration value="sync" />\r
-                       <xsd:enumeration value="async" />\r
-               </xsd:restriction>\r
-       </xsd:simpleType>\r
-\r
-       <xsd:group name="node">\r
-               <xsd:choice>\r
-                       <xsd:element ref="block" />\r
-                       <xsd:element ref="is-available" />\r
-                       <xsd:element ref="exists" />\r
-                       <xsd:element ref="reserve" />\r
-                       <xsd:element ref="release" />\r
-                       <xsd:element ref="allocate" />\r
-                       <xsd:element ref="get-resource" />\r
-                       <xsd:element ref="configure" />\r
-                       <xsd:element ref="return" />\r
-                       <xsd:element ref="switch" />\r
-                       <xsd:element ref="record" />\r
-                       <xsd:element ref="save" />\r
-                       <xsd:element ref="for" />\r
-                       <xsd:element ref="set" />\r
-                       <xsd:element ref="execute" />\r
-                       <xsd:element ref="delete" />\r
-                       <xsd:element ref="update" />\r
-                       <xsd:element ref="call" />\r
-                       <xsd:element ref="notify" />\r
-                       <xsd:element ref="break" />\r
-                       <xsd:element ref="while" />\r
-               </xsd:choice>\r
-       </xsd:group>\r
-\r
-       <xsd:element name="service-logic">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:element ref="method" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="module" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="version" use="required" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="method">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:group ref="node" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="rpc" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="mode" use="optional" type="modeType" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="block">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:group ref="node" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="atomic" use="optional" type="xsd:boolean" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="is-available">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="plugin" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="resource" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="key" use="optional" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="exists">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="plugin" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="resource" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="key" use="required" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="outcome">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:group ref="node" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="ref" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="value" use="required" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="reserve">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <!-- This node does not actually read from parameters -->\r
-                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="plugin" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="resource" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="key" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="select" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="release">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="plugin" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="resource" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="key" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="record">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="plugin" use="required" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="allocate">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <!-- This node does not actually read from parameters -->\r
-                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="plugin" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="resource" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="key" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="pfx" use="required" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="get-resource">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <!-- This node does not actually read from parameters -->\r
-                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="plugin" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="resource" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="key" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="local-only" use="optional" type="xsd:boolean" />\r
-                       <xsd:attribute name="order-by" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />\r
-                       <!-- force is retired and does not do anything -->\r
-                       <xsd:attribute name="force" use="optional" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="configure">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="adaptor" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="key" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="activate" use="optional" type="xsd:boolean" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-\r
-       <xsd:element name="parameter">\r
-               <xsd:complexType>\r
-                       <xsd:attribute name="name" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="value" use="required" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-\r
-       <xsd:element name="return">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="status" use="optional" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="switch">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="test" use="required" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="save">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="plugin" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="resource" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="key" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="force" use="optional" type="xsd:boolean" />\r
-                       <xsd:attribute name="local-only" use="optional" type="xsd:boolean" />\r
-                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="delete">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <!-- This node does not actually read from parameters -->\r
-                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="plugin" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="resource" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="key" use="optional" type="xsd:string" />\r
-                       <!-- force is retired and does not do anything -->\r
-                       <xsd:attribute name="force" use="optional" type="xsd:string" />\r
-                       <!-- local-only is retired and does not do anything -->\r
-                       <xsd:attribute name="local-only" use="optional" type="xsd:string" />\r
-                       <!-- pfx is retired and does not do anything -->\r
-                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="for">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:group ref="node" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="atomic" use="optional" type="xsd:boolean" />\r
-                       <xsd:attribute name="index" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="start" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="end" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="silentFailure" use="optional" type="xsd:boolean" default="false" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="set">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="only-if-unset" use="optional"\r
-                               type="xsd:boolean" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="execute">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="plugin" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="method" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="emitsOutcome" use="optional" type="xsd:boolean" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="update">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="plugin" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="resource" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="key" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="force" use="optional" type="xsd:boolean" />\r
-                       <xsd:attribute name="local-only" use="optional" type="xsd:boolean" />\r
-                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="call">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <!-- This node does not actually read from parameters -->\r
-                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="module" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="rpc" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="version" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="mode" use="required" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="notify">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="plugin" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="resource" use="optional" type="xsd:string" />\r
-                       <xsd:attribute name="action" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="key" use="optional" type="xsd:string" />\r
-                       <!-- force is retired and does not do anything -->\r
-                       <xsd:attribute name="force" use="optional" type="xsd:string" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-       <xsd:element name="break">\r
-               <xsd:complexType />\r
-       </xsd:element>\r
-\r
-       <xsd:element name="while">\r
-               <xsd:complexType>\r
-                       <xsd:sequence>\r
-                               <xsd:group ref="node" minOccurs="0" maxOccurs="unbounded" />\r
-                       </xsd:sequence>\r
-                       <xsd:attribute name="test" use="required" type="xsd:string" />\r
-                       <xsd:attribute name="do" use="optional" type="xsd:boolean" />\r
-               </xsd:complexType>\r
-       </xsd:element>\r
-\r
-</xsd:schema>\r
+<?xml version = "1.0" encoding = "UTF-8"?>
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.onap.org/sdnc/svclogic" xmlns="http://www.onap.org/sdnc/svclogic">
+
+       <xsd:simpleType name="modeType">
+               <xsd:restriction base="xsd:string">
+                       <xsd:enumeration value="sync" />
+                       <xsd:enumeration value="async" />
+               </xsd:restriction>
+       </xsd:simpleType>
+
+       <xsd:group name="node">
+               <xsd:choice>
+                       <xsd:element ref="block" />
+                       <xsd:element ref="is-available" />
+                       <xsd:element ref="exists" />
+                       <xsd:element ref="reserve" />
+                       <xsd:element ref="release" />
+                       <xsd:element ref="allocate" />
+                       <xsd:element ref="get-resource" />
+                       <xsd:element ref="configure" />
+                       <xsd:element ref="return" />
+                       <xsd:element ref="switch" />
+                       <xsd:element ref="record" />
+                       <xsd:element ref="save" />
+                       <xsd:element ref="for" />
+                       <xsd:element ref="set" />
+                       <xsd:element ref="execute" />
+                       <xsd:element ref="delete" />
+                       <xsd:element ref="update" />
+                       <xsd:element ref="call" />
+                       <xsd:element ref="notify" />
+                       <xsd:element ref="break" />
+                       <xsd:element ref="while" />
+                       <xsd:element ref="exit" />
+               </xsd:choice>
+       </xsd:group>
+
+       <xsd:element name="service-logic">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:element ref="method" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="module" use="required" type="xsd:string" />
+                       <xsd:attribute name="version" use="required" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="method">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:group ref="node" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="rpc" use="required" type="xsd:string" />
+                       <xsd:attribute name="mode" use="optional" type="modeType" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="block">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:group ref="node" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="atomic" use="optional" type="xsd:boolean" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="is-available">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />
+                       <xsd:attribute name="plugin" use="required" type="xsd:string" />
+                       <xsd:attribute name="resource" use="required" type="xsd:string" />
+                       <xsd:attribute name="key" use="optional" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="exists">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />
+                       <xsd:attribute name="plugin" use="required" type="xsd:string" />
+                       <xsd:attribute name="resource" use="required" type="xsd:string" />
+                       <xsd:attribute name="key" use="required" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="outcome">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:group ref="node" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="ref" use="optional" type="xsd:string" />
+                       <xsd:attribute name="value" use="required" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="reserve">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <!-- This node does not actually read from parameters -->
+                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="100" />
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="plugin" use="required" type="xsd:string" />
+                       <xsd:attribute name="resource" use="required" type="xsd:string" />
+                       <xsd:attribute name="key" use="optional" type="xsd:string" />
+                       <xsd:attribute name="select" use="optional" type="xsd:string" />
+                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="release">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="plugin" use="required" type="xsd:string" />
+                       <xsd:attribute name="resource" use="required" type="xsd:string" />
+                       <xsd:attribute name="key" use="optional" type="xsd:string" />
+                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="record">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="100" />
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="plugin" use="required" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="allocate">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <!-- This node does not actually read from parameters -->
+                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="100" />
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="plugin" use="required" type="xsd:string" />
+                       <xsd:attribute name="resource" use="required" type="xsd:string" />
+                       <xsd:attribute name="key" use="required" type="xsd:string" />
+                       <xsd:attribute name="pfx" use="required" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="get-resource">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <!-- This node does not actually read from parameters -->
+                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="100" />
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="plugin" use="required" type="xsd:string" />
+                       <xsd:attribute name="resource" use="required" type="xsd:string" />
+                       <xsd:attribute name="key" use="optional" type="xsd:string" />
+                       <xsd:attribute name="local-only" use="optional" type="xsd:boolean" />
+                       <xsd:attribute name="order-by" use="optional" type="xsd:string" />
+                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />
+                       <!-- force is retired and does not do anything -->
+                       <xsd:attribute name="force" use="optional" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="configure">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="100" />
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="adaptor" use="required" type="xsd:string" />
+                       <xsd:attribute name="key" use="required" type="xsd:string" />
+                       <xsd:attribute name="activate" use="optional" type="xsd:boolean" />
+               </xsd:complexType>
+       </xsd:element>
+
+
+       <xsd:element name="parameter">
+               <xsd:complexType>
+                       <xsd:attribute name="name" use="required" type="xsd:string" />
+                       <xsd:attribute name="value" use="required" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+
+       <xsd:element name="return">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="status" use="optional" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="switch">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="test" use="required" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="save">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="100" />
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="plugin" use="required" type="xsd:string" />
+                       <xsd:attribute name="resource" use="required" type="xsd:string" />
+                       <xsd:attribute name="key" use="optional" type="xsd:string" />
+                       <xsd:attribute name="force" use="optional" type="xsd:boolean" />
+                       <xsd:attribute name="local-only" use="optional" type="xsd:boolean" />
+                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="delete">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <!-- This node does not actually read from parameters -->
+                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="100" />
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="plugin" use="required" type="xsd:string" />
+                       <xsd:attribute name="resource" use="required" type="xsd:string" />
+                       <xsd:attribute name="key" use="optional" type="xsd:string" />
+                       <!-- force is retired and does not do anything -->
+                       <xsd:attribute name="force" use="optional" type="xsd:string" />
+                       <!-- local-only is retired and does not do anything -->
+                       <xsd:attribute name="local-only" use="optional" type="xsd:string" />
+                       <!-- pfx is retired and does not do anything -->
+                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="for">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:group ref="node" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="atomic" use="optional" type="xsd:boolean" />
+                       <xsd:attribute name="index" use="required" type="xsd:string" />
+                       <xsd:attribute name="start" use="required" type="xsd:string" />
+                       <xsd:attribute name="end" use="required" type="xsd:string" />
+                       <xsd:attribute name="silentFailure" use="optional" type="xsd:boolean" default="false" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="set">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="only-if-unset" use="optional"
+                               type="xsd:boolean" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="execute">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="100" />
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="plugin" use="required" type="xsd:string" />
+                       <xsd:attribute name="method" use="required" type="xsd:string" />
+                       <xsd:attribute name="emitsOutcome" use="optional" type="xsd:boolean" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="update">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="100" />
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="plugin" use="required" type="xsd:string" />
+                       <xsd:attribute name="resource" use="required" type="xsd:string" />
+                       <xsd:attribute name="key" use="optional" type="xsd:string" />
+                       <xsd:attribute name="force" use="optional" type="xsd:boolean" />
+                       <xsd:attribute name="local-only" use="optional" type="xsd:boolean" />
+                       <xsd:attribute name="pfx" use="optional" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="call">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <!-- This node does not actually read from parameters -->
+                               <xsd:element ref="parameter" minOccurs="0" maxOccurs="100" />
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="module" use="optional" type="xsd:string" />
+                       <xsd:attribute name="rpc" use="required" type="xsd:string" />
+                       <xsd:attribute name="version" use="optional" type="xsd:string" />
+                       <xsd:attribute name="mode" use="required" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="notify">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:element ref="outcome" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="plugin" use="optional" type="xsd:string" />
+                       <xsd:attribute name="resource" use="optional" type="xsd:string" />
+                       <xsd:attribute name="action" use="required" type="xsd:string" />
+                       <xsd:attribute name="key" use="optional" type="xsd:string" />
+                       <!-- force is retired and does not do anything -->
+                       <xsd:attribute name="force" use="optional" type="xsd:string" />
+               </xsd:complexType>
+       </xsd:element>
+
+       <xsd:element name="break">
+               <xsd:complexType />
+       </xsd:element>
+
+       <xsd:element name="exit">
+               <xsd:complexType />
+       </xsd:element>
+
+       <xsd:element name="while">
+               <xsd:complexType>
+                       <xsd:sequence>
+                               <xsd:group ref="node" minOccurs="0" maxOccurs="100" />
+                       </xsd:sequence>
+                       <xsd:attribute name="test" use="required" type="xsd:string" />
+                       <xsd:attribute name="do" use="optional" type="xsd:boolean" />
+               </xsd:complexType>
+       </xsd:element>
+
+</xsd:schema>