Add readthedocs info to sli/core 89/18289/1
authorDan Timoney <dtimoney@att.com>
Wed, 11 Oct 2017 15:01:38 +0000 (11:01 -0400)
committerDan Timoney <dtimoney@att.com>
Wed, 11 Oct 2017 15:01:38 +0000 (11:01 -0400)
Add additional information to sli/core readthedocs documentation.

Change-Id: I9fe5e6185061ed6a05f373b6667f686e11d5f0aa
Issue-ID: CCSDK-107
Signed-off-by: Dan Timoney <dtimoney@att.com>
docs/apis/sliapi.rst [new file with mode: 0644]
docs/architecture.rst
docs/build.rst
docs/logging.rst
docs/nodes.rst [new file with mode: 0644]
docs/offeredapis.rst
sliapi/model/pom.xml
sliapi/model/src/main/resources/sli-api.20161110.json

diff --git a/docs/apis/sliapi.rst b/docs/apis/sliapi.rst
new file mode 100644 (file)
index 0000000..13cdcbd
--- /dev/null
@@ -0,0 +1,15 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. http://creativecommons.org/licenses/by/4.0
+
+SLI-API(2016-11-11)
+===================
+
+.. toctree::
+   :maxdepth: 1
+   :titlesonly:
+
+
+
+.. swaggerv2doc:: https://gerrit.onap.org/r/gitweb?p=ccsdk/sli/core.git;a=blob_plain;f=sliapi/model/src/main/resources/sli-api.20161110.json
+
+
index a1956d5..f6101a1 100644 (file)
@@ -4,24 +4,17 @@
 Architecture
 ============
 
-.. note::
-   * This section is used to describe a software component from a high level
-     view of capability, common usage scenarios, and interactions with other
-     components required in the usage scenarios.
-
-   * The architecture section is typically: provided in a platform-component
-     and sdk collections; and referenced from developer and user guides.
-
-   * This note must be removed after content has been added.
 
 
 Capabilities
 ------------
+Provides the core Service Logic Interpreter (SLI) functionality, used to execute directed graphs (DGs).  Directed graphs allow service designers to define the
+logic to be executed within the SDN controller in a graphical format which can be
+updated in real time, without a need to restart the controller.
 
+.. toctree::
+   :maxdepth: 1
 
-Usage Scenarios
----------------
+   nodes.rst
 
 
-Interactions
-------------
index 99a061c..0a4c308 100644 (file)
@@ -4,20 +4,15 @@
 Build
 =====
 
-.. note::
-   * This section is used to describe how a software component is built from source
-     into something ready for use either in a run-time environment or to build other
-     components.
-
-   * This section is typically provided for a platform-component, application, and sdk; and
-     referenced in developer guides.
-
-   * This note must be removed after content has been added.
-
 
 Environment
 -----------
-
+Requires maven release 3.3 or greater
 
 Steps
 -----
+To compile this code:
+
+1. Make sure your local Maven settings file ($HOME/.m2/settings.xml) contains references to the ONAP repositories and OpenDaylight repositories.
+
+2. To compile, run "mvn clean install".
\ No newline at end of file
index 5662acb..187eb03 100644 (file)
@@ -3,20 +3,12 @@
 
 Logging
 =======
-
-.. note::
-   * This section is used to describe the informational or diagnostic messages emitted from
-     a software component and the methods or collecting them.
-
-   * This section is typically: provided for a platform-component and sdk; and
-     referenced in developer and user guides
-
-   * This note must be removed after content has been added.
-
+CCSDK uses slf4j to log messages to the standard OpenDaylight karaf.log
+log file.
 
 Where to Access Information
 ---------------------------
+Logs are found within the SDNC docker container, in the directory
+/opt/opendaylight/current/data/logs.
 
 
-Error / Warning Messages
-------------------------
diff --git a/docs/nodes.rst b/docs/nodes.rst
new file mode 100644 (file)
index 0000000..3bdeabc
--- /dev/null
@@ -0,0 +1,1031 @@
+--- Service Logic Interpreter --- Dan Timoney --- 2014-11-12 ---
+
+Supported node types
+====================
+
+The following built-in node types are currently supported:
+
+-  Flow Control
+
+   -  `**block** <#Block_node>`__
+
+   -  `**call** <#Call_node>`__
+
+   -  `**for** <#For_node>`__
+
+   -  `**return** <#Return_node>`__
+
+   -  `**set** <#Set_node>`__
+
+   -  `**switch** <#Switch_node>`__
+
+-  Device Management
+
+   -  `**configure** <#Configure_node>`__
+
+-  Java Plugin Support
+
+   -  `**execute** <#Execute_node>`__
+
+-  Recording
+
+   -  `**record** <#Record_node>`__
+
+-  Resource Management
+
+   -  `**delete** <#Delete_node>`__
+
+   -  `**exists** <#Exists_node>`__
+
+   -  `**get-resource** <#Get-resource_node>`__
+
+   -  `**is-available** <#Is-available_node>`__
+
+   -  `**notify** <#Notify_node>`__
+
+   -  `**release** <#Release_node>`__
+
+   -  `**reserve** <#Reserve_node>`__
+
+   -  `**save** <#Save_node>`__
+
+   -  `**update** <#Update_node>`__
+
+Flow Control
+------------
+
+Block node
+~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **block** node is used to executes a set of nodes.
+
+Attributes
+^^^^^^^^^^
+
++--------------+-----------------------------------------------------------------------------------------------------------------------------------+
+| **atomic**   | if *true*, then if a node returns failure, subsequent nodes will not be executed and nodes already executed will be backed out.   |
++--------------+-----------------------------------------------------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
+None
+
+Example
+^^^^^^^
+
+::
+
+    <block>
+      <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+        <parameter name="file" value="/tmp/sample_r1.log" />
+        <parameter name="field1" value="__TIMESTAMP__"/>
+        <parameter name="field2" value="RESERVED"/>
+        <parameter name="field3" value="$asePort.uni_circuit_id"/>
+      </record>
+      <return status="success">
+        <parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
+      </return>
+    </block>
+
+Call node
+~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **call** node is used to call another graph
+
+Attributes
+^^^^^^^^^^
+
++---------------+------------------------------------------------------------------------------------+
+| **module**    | Module of directed graph to call. If unset, defaults to that of calling graph      |
++---------------+------------------------------------------------------------------------------------+
+| **rpc**       | rpc of directed graph to call.                                                     |
++---------------+------------------------------------------------------------------------------------+
+| **version**   | version of graph to call, If unset, uses active version.                           |
++---------------+------------------------------------------------------------------------------------+
+| **mode**      | mode (sync/async) of graph to call. If unset, defaults to that of calling graph.   |
++---------------+------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Not applicable
+
+Outcomes
+^^^^^^^^
+
++-----------------+------------------------------+
+| **success**     | Sub graph returned success   |
++-----------------+------------------------------+
+| **not-found**   | Graph not found              |
++-----------------+------------------------------+
+| **failure**     | Subgraph returned success    |
++-----------------+------------------------------+
+
+Table: .
+
+Example
+^^^^^^^
+
+::
+
+    <call rpc="svc-topology-reserve" mode="sync" />
+
+For node
+~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **for** node provides a fixed iteration looping mechanism, similar to
+the Java for loop
+
+Attributes
+^^^^^^^^^^
+
++-------------+------------------+
+| **index**   | index variable   |
++-------------+------------------+
+| **start**   | initial value    |
++-------------+------------------+
+| **end**     | maximum value    |
++-------------+------------------+
+
+Parameters
+^^^^^^^^^^
+
+Not applicable.
+
+Outcomes
+^^^^^^^^
+
+Not applicable. The **status** node has no outcomes.
+
+Example
+^^^^^^^
+
+::
+
+    <for index="i" start="0" end="`$service-data.universal-cpe-ft.l2-switch-interfaces_length`">
+       <record plugin="org.onap.ccsdk.sli.core.sli.recording.Slf4jRecorder">
+          <parameter name="logger" value="message-log"/>
+          <parameter name="level" value="info"/>
+          <parameter name="field1" value="`'current l2-switch-interface name is ' + $service-data.universal-cpe-ft.l2-switch-interfaces[$i].name`"/>
+       </record>
+    </for>
+
+Return node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **return** node is used to return a status to the invoking MD-SAL
+application
+
+Attributes
+^^^^^^^^^^
+
++--------------+---------------------------------------------------+
+| **status**   | Status value to return (*success* or *failure*)   |
++--------------+---------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+The following optional parameters may be passed to convey more detailed
+status information.
+
++---------------------+-----------------------------------------------------------------+
+| **error-code**      | A brief, usually numeric, code indicating the error condition   |
++---------------------+-----------------------------------------------------------------+
+| **error-message**   | A more detailed error message                                   |
++---------------------+-----------------------------------------------------------------+
+
+Outcomes
+^^^^^^^^
+
+Not applicable. The **status** node has no outcomes.
+
+Example
+^^^^^^^
+
+::
+
+    <return status="failure">
+      <parameter name="error-code" value="1542" />
+      <parameter name="error-message" value="Activation failure" />
+    </return>
+
+Set node
+~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **set** node is used to set one or more values in the execution
+context
+
+Attributes
+^^^^^^^^^^
+
++---------------------+-------------------------------------------------------------------------------------+
+| **only-if-unset**   | If true the set node will only execute if the current value of the target is null   |
++---------------------+-------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Values to be set are passed as parameters
+
+Outcomes
+^^^^^^^^
+
+Not applicable. The **set** node has no outcomes.
+
+Example
+^^^^^^^
+
+::
+
+    <set>
+      <parameter name="vlan" value="$network.provider-segmentation-id" />
+    </set>
+
+Switch node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **switch** node is used to make a decision based on its **test**
+attribute.
+
+Attributes
+^^^^^^^^^^
+
++------------+---------------------+
+| **test**   | Condition to test   |
++------------+---------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
+Depends on the **test** condition
+
+Example
+^^^^^^^
+
+::
+
+    <switch test="$uni-cir-units">
+      <outcome value="Mbps">
+        <reserve plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
+                 resource="ase-port"
+                 key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value"
+                 pfx="asePort">
+
+          <outcome value="success">
+            <return status="success">
+              <parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
+            </return>
+          </outcome>
+          <outcome value="Other">
+            <return status="failure">
+              <parameter name="error-code" value="1010" />
+              <parameter name="error-message" value="No ports found that match criteria" />
+            </return>
+          </outcome>
+        </reserve>
+      </outcome>
+      <outcome value="Gbps">
+        <reserve plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
+                 resource="ase-port"
+                 key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value*1000"
+                 pfx="asePort">
+
+          <outcome value="success">
+            <return status="success">
+              <parameter name="uni-circuit-id" value="$asePort.uni_circuit_id" />
+            </return>
+          </outcome>
+          <outcome value="Other">
+            <return status="failure">
+              <parameter name="error-code" value="1010" />
+              <parameter name="error-message" value="No ports found that match criteria" />
+            </return>
+          </outcome>
+        </reserve>
+      </outcome>
+    </switch>
+
+Device Management
+-----------------
+
+Configure node
+~~~~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **configure** node is used to configure a device.
+
+Attributes
+^^^^^^^^^^
+
++----------------+-----------------------------------------------------------------------------------+
+| **adaptor**    | Fully qualified Java class of resource adaptor to be used                         |
++----------------+-----------------------------------------------------------------------------------+
+| **activate**   | Activate device/interface, for devices that support a separate activation step.   |
++----------------+-----------------------------------------------------------------------------------+
+| **key**        | SQL-like string specifying criteria for item to configure                         |
++----------------+-----------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Specific to device adaptor.
+
+Outcomes
+^^^^^^^^
+
++----------------------+------------------------------------------------------------------+
+| **success**          | Device successfully configured                                   |
++----------------------+------------------------------------------------------------------+
+| **not-found**        | Element to be configured does not exist.                         |
++----------------------+------------------------------------------------------------------+
+| **not-ready**        | Element is not in a state where it can be configured/activated   |
++----------------------+------------------------------------------------------------------+
+| **already-active**   | Attempt to activate element that is already active               |
++----------------------+------------------------------------------------------------------+
+| **failure**          | Configure failed for some other reason                           |
++----------------------+------------------------------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+    <configure adaptor="org.onap.ccsdk.sli.adaptors.emt.EmtAdaptor"
+               key="$uni-circuit-id" activate="true">
+      <parameter name="circuit.id" value="$uni-circuit-id" />
+      <parameter name="subscriber.name" value="$subscriber-name" />
+      <parameter name="emt.clli" value="$edge-device-clli" />
+      <parameter name="port.tagging" value="$port-tagging" />
+      <parameter name="port.mediaSpeed" value="$media-speed" />
+      <parameter name="location.state" value="$uni-location-state" />
+      <parameter name="location.city" value="$uni-location-city" />
+      <parameter name="cosCategory" value="$cos-category" />
+      <parameter name="gosProfile" value="$gos-profile" />
+      <parameter name="lldp" value="$asePort.resource-lldp" />
+      <parameter name="mtu" value="$asePort.resource-mtu" />
+      <outcome value="success">
+        <block>
+          <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+            <parameter name="file" value="/tmp/sample_r1.log" />
+            <parameter name="field1" value="__TIMESTAMP__"/>
+            <parameter name="field2" value="ACTIVE"/>
+            <parameter name="field3" value="$uni-circuit-id"/>
+          </record>
+          <return status="success">
+            <parameter name="edge-device-clli" value="$asePort.resource-emt-clli" />
+          </return>
+        </block>
+      </outcome>
+      <outcome value="already-active">
+        <return status="failure">
+          <parameter name="error-code" value="1590" />
+          <parameter name="error-message" value="Port already active" />
+        </return>
+      </outcome>
+      <outcome value="Other">
+        <return status="failure">
+          <parameter name="error-code" value="1542" />
+          <parameter name="error-message" value="Activation failure" />
+        </return>
+      </outcome>
+    </configure>
+
+Java Plugin Support
+-------------------
+
+Execute node
+~~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+An **execute** node is used to execute Java code supplied as a plugin
+
+Attributes
+^^^^^^^^^^
+
++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| **plugin**   | Fully qualified Java class of plugin to be used                                                                                                                                                    |
++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| **method**   | Name of method in the plugin class to execute. Method must return void, and take 2 arguments: a Map (for parameters) and a SvcLogicContext (to allow plugin read/write access to context memory)   |
++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Specific to plugin / method
+
+Outcomes
+^^^^^^^^
+
++--------------------------+-----------------------------------------------------------------+
+| **success**              | Device successfully configured                                  |
++--------------------------+-----------------------------------------------------------------+
+| **not-found**            | Plugin class could not be loaded                                |
++--------------------------+-----------------------------------------------------------------+
+| **unsupported-method**   | Named method taking (Map, SvcLogicContext) could not be found   |
++--------------------------+-----------------------------------------------------------------+
+| **failure**              | Configure failed for some other reason                          |
++--------------------------+-----------------------------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+    <execute plugin="org.onap.ccsdk.sli.plugins.HelloWorld"
+               method="log">
+      <parameter name="message" value="Hello, world!" />
+      <outcome value="success">
+          <return status="success"/>
+      </outcome>
+      <outcome value="not-found">
+        <return status="failure">
+          <parameter name="error-code" value="1590" />
+          <parameter name="error-message" value="Could not locate plugin" />
+        </return>
+      </outcome>
+      <outcome value="Other">
+        <return status="failure">
+          <parameter name="error-code" value="1542" />
+          <parameter name="error-message" value="Internal error" />
+        </return>
+      </outcome>
+    </execute>
+
+Recording
+---------
+
+Record node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **record** node is used to record an event. For example, this might be
+used to log provisioning events.
+
+Attributes
+^^^^^^^^^^
+
++--------------+---------------------------------------------------+
+| **plugin**   | Fully qualified Java class to handle recording.   |
++--------------+---------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Parameters will depend on the plugin being used. For the FileRecorder
+class, the parameters are as follows
+
++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| **file**     | The file to which the record should be written                                                                                                                                                                       |
++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+| **field1**   | First field to write. There will be **field** parameters for each field to write, from **field1** through **fieldN**. A special value \_\_TIMESTAMP\_\_ may be assigned to a field to insert the current timestamp   |
++--------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
+
+Outcomes
+^^^^^^^^
+
++---------------+--------------------------------------------+
+| **success**   | Record successfully written                |
++---------------+--------------------------------------------+
+| **failure**   | Record could not be successfully written   |
++---------------+--------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+    <record plugin="org.onap.ccsdk.sli.core.sli.recording.FileRecorder">
+      <parameter name="file" value="/tmp/sample_r1.log" />
+      <parameter name="field1" value="__TIMESTAMP__"/>
+      <parameter name="field2" value="ACTIVE"/>
+      <parameter name="field3" value="$uni-circuit-id"/>
+    </record>
+
+Resource Management
+-------------------
+
+Delete node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **delete** node is used to delete a resource from the local resource
+inventory.
+
+Attributes
+^^^^^^^^^^
+
++----------------+-------------------------------------------------------------+
+| **plugin**     | Fully qualified Java class of resource adaptor to be used   |
++----------------+-------------------------------------------------------------+
+| **resource**   | Type of resource to delete                                  |
++----------------+-------------------------------------------------------------+
+| **key**        | SQL-like string specifying key to delete                    |
++----------------+-------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++---------------+--------------------------------------------+
+| **success**   | Resource specified deleted successfully.   |
++---------------+--------------------------------------------+
+| *failure*>    | Resource specified was not deleted         |
++---------------+--------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+    <delete plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
+            resource="ase-port"
+            key="uni_circuit_id == $uni-circuit-id">
+      <outcome value="true">
+        <return status="success"/>
+      </outcome>
+      <outcome value="false">
+        <return status="failure"/>
+      </outcome>
+    </delete>
+
+Exists node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+An **exists** node is used to determine whether a particular instance of
+a resource exists. For example, this might be used to test whether a
+particular switch CLLI is provisioned.
+
+Attributes
+^^^^^^^^^^
+
++----------------+-------------------------------------------------------------+
+| **plugin**     | Fully qualified Java class of resource adaptor to be used   |
++----------------+-------------------------------------------------------------+
+| **resource**   | Type of resource to check                                   |
++----------------+-------------------------------------------------------------+
+| **key**        | SQL-like string specifying key to check for                 |
++----------------+-------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++-------------+---------------------------------+
+| **true**    | Resource specified exists.      |
++-------------+---------------------------------+
+| **false**   | Resource specified is unknown   |
++-------------+---------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+    <exists plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
+            resource="ase-port"
+            key="uni_circuit_id == $uni-circuit-id">
+      <outcome value="true">
+        <return status="success"/>
+      </outcome>
+      <outcome value="false">
+        <return status="failure"/>
+      </outcome>
+    </exists>
+
+Get-resource node
+~~~~~~~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **get-resource** node is used to retrieve information about a
+particular resource and make it available to other nodes in the service
+logic tree. For example, this might be used to retrieve information
+about a particular uni-port.
+
+Attributes
+^^^^^^^^^^
+
++----------------+------------------------------------------------------------------------------------------+
+| **plugin**     | Fully qualified Java class of resource adaptor to be used                                |
++----------------+------------------------------------------------------------------------------------------+
+| **resource**   | Type of resource to retrieve                                                             |
++----------------+------------------------------------------------------------------------------------------+
+| **key**        | SQL-like string specifying criteria for retrieval                                        |
++----------------+------------------------------------------------------------------------------------------+
+| **pfx**        | Prefix to add to context variable names set for data retrieved                           |
++----------------+------------------------------------------------------------------------------------------+
+| **select**     | String to specify, if key matches multiple entries, which entry should take precedence   |
++----------------+------------------------------------------------------------------------------------------+
+| **order-by**   | Prefix to add to context variable names set for data retrieved                           |
++----------------+------------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++-----------------+--------------------------------------------------+
+| **success**     | Resource successfully retrieved                  |
++-----------------+--------------------------------------------------+
+| **not-found**   | Resource referenced does not exist               |
++-----------------+--------------------------------------------------+
+| **failure**     | Resource retrieve failed for some other reason   |
++-----------------+--------------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+    <get-resource plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
+                  resource="ase-port"
+                  key="uni_circuit_id == $uni-circuit-id"
+                  pfx="current-port">
+      <outcome value="success">
+        <return status="success"/>
+      </outcome>
+      <outcome value="not-found">
+        <return status="failure"/>
+      </outcome>
+      <outcome value="failure">
+        <return status="failure"/>
+      </outcome>
+    </get-resource>
+
+Is-available node
+~~~~~~~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+An **is-available** node is used to determine whether a particular type
+of resource is available. For example, this might be used to test
+whether any ports are available for assignment on a particular switch.
+
+Attributes
+^^^^^^^^^^
+
++----------------+------------------------------------------------------------------+
+| **plugin**     | Fully qualified Java class of resource adaptor to be used        |
++----------------+------------------------------------------------------------------+
+| **resource**   | Type of resource to check                                        |
++----------------+------------------------------------------------------------------+
+| **key**        | SQL-like string specifying key to check for                      |
++----------------+------------------------------------------------------------------+
+| **pfx**        | Prefix to add to context variable names set for data retrieved   |
++----------------+------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++-------------+---------------------------------------+
+| **true**    | Resource requested is available       |
++-------------+---------------------------------------+
+| **false**   | Resource requested is not available   |
++-------------+---------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+    <is-available plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
+                  resource="ase-port"
+                  key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value">
+      <outcome value="true">
+        <return status="success"/>
+      </outcome>
+      <outcome value="false">
+        <return status="failure"/>
+      </outcome>
+    </is-available>
+
+Notify node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **notify** node is used to inform an external application (e.g. A&AI)
+that a resource was updated.
+
+Attributes
+^^^^^^^^^^
+
++----------------+---------------------------------------------------------------------+
+| **plugin**     | Fully qualified Java class of resource adaptor to be used           |
++----------------+---------------------------------------------------------------------+
+| **resource**   | Identifies resource that was updated                                |
++----------------+---------------------------------------------------------------------+
+| **action**     | Action that triggered notification to be sent (ADD/UPDATE/DELETE)   |
++----------------+---------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++---------------+----------------------------------------+
+| **success**   | Notification was successful            |
++---------------+----------------------------------------+
+| **failure**   | Notification failed is not available   |
++---------------+----------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+    <notify plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
+                  resource="ase-port"
+                  action="ADD">
+      <outcome value="success">
+        <return status="success"/>
+      </outcome>
+      <outcome value="Other">
+        <return status="failure"/>
+      </outcome>
+    </notify>
+
+Release node
+~~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **release** node is used to mark a resource as no longer in use, and
+thus available for assignment.
+
+Attributes
+^^^^^^^^^^
+
++----------------+------------------------------------------------------------------+
+| **plugin**     | Fully qualified Java class of resource adaptor to be used        |
++----------------+------------------------------------------------------------------+
+| **resource**   | Type of resource to release                                      |
++----------------+------------------------------------------------------------------+
+| **key**        | SQL-like string specifying key to check of resource to release   |
++----------------+------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++-----------------+-------------------------------------------------+
+| **success**     | Resource successfully released                  |
++-----------------+-------------------------------------------------+
+| **not-found**   | Resource referenced does not exist              |
++-----------------+-------------------------------------------------+
+| **failure**     | Resource release failed for some other reason   |
++-----------------+-------------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+    <release plugin="org.onap.ccsdk.sli.adaptors.SampleServiceResource"
+             resource="ase-port"
+             key="uni_circuit_id == $uni-circuit-id">
+      <outcome value="success">
+        <return status="success"/>
+      </outcome>
+      <outcome value="not-found">
+        <return status="failure"/>
+      </outcome>
+      <outcome value="failure">
+        <return status="failure"/>
+      </outcome>
+    </release>
+
+Reserve node
+~~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **reserve** node is used to reserve a particular type of resource..
+For example, this might be used to reserve a port on a particular
+switch.
+
+Attributes
+^^^^^^^^^^
+
++----------------+----------------------------------------------------------------------------------------------+
+| **plugin**     | Fully qualified Java class of resource adaptor to be used                                    |
++----------------+----------------------------------------------------------------------------------------------+
+| **resource**   | Type of resource to reserve                                                                  |
++----------------+----------------------------------------------------------------------------------------------+
+| **key**        | SQL-like string specifying criteria for reservation                                          |
++----------------+----------------------------------------------------------------------------------------------+
+| **select**     | String to specify, if **key** matches multiple entries, which entry should take precedence   |
++----------------+----------------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+None
+
+Outcomes
+^^^^^^^^
+
++---------------+----------------------------------------------------+
+| **success**   | Resource requested was successfully reserved       |
++---------------+----------------------------------------------------+
+| **failure**   | Resource requested was not successfully reserved   |
++---------------+----------------------------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+    <reserve plugin="org.onap.ccsdk.sli.adaptors.samplesvc.SampleServiceResource"
+             resource="ase-port"
+             key="resource-emt-clli == $edge-device-clli and speed >= $uni-cir-value"
+             select="min(speed)">
+      <outcome value="success">
+        <return status="success"/>
+      </outcome>
+      <outcome value="failure">
+        <return status="failure"/>
+      </outcome>
+    </reserve>
+
+Save node
+~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+A **save** node is used to save information about a particular resource
+to persistent storage. For example, this might be used to save
+information about a particular uni-port.
+
+Attributes
+^^^^^^^^^^
+
++----------------+------------------------------------------------------------------------------------------+
+| **plugin**     | Fully qualified Java class of resource adaptor to be used                                |
++----------------+------------------------------------------------------------------------------------------+
+| **resource**   | Type of resource to save                                                                 |
++----------------+------------------------------------------------------------------------------------------+
+| **key**        | SQL-like string specifying criteria for retrieval                                        |
++----------------+------------------------------------------------------------------------------------------+
+| **force**      | If "true", save resource even if this resource is already stored in persistent storage   |
++----------------+------------------------------------------------------------------------------------------+
+| **pfx**        | Prefix to be prepended to variable names, when attributes are set in SvcLogicContext     |
++----------------+------------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Values to save (columns) are specified as parameters, with each name
+corresponding to a column name and each value corresponding to the value
+to set.
+
+Outcomes
+^^^^^^^^
+
++---------------+-------------------------------+
+| **success**   | Resource successfully saved   |
++---------------+-------------------------------+
+| **failure**   | Resource save failed          |
++---------------+-------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+    <save plugin="`$sample-resource-plugin`" resource="vnf"
+        key="vnf-name = $requests.vnf.vnf-name" force="true"
+        pfx="requests.vnf">
+        <parameter name="vnf-name"
+            value="`$requests.cust-country-code + $requests.cust-id + $requests.cust-city + $requests.cust-state + '001VCE'`" />
+        <parameter name="vnf-type" value="vce" />
+        <parameter name="orchestration-status" value="pending-create" />
+        <parameter name="heat-stack-id" value="`$requests.heat-stack-id`" />
+        <parameter name="mso-catalog-key" value="`$requests.mso-catalog-key`" />
+        <parameter name="oam-ipv4-address" value="`$vce-ipv4-oam-addr.ipv4-addr`" />
+    </save>
+
+Update node
+~~~~~~~~~~~
+
+Description
+^^^^^^^^^^^
+
+An **update** node is used to update information about a particular
+resource to persistent storage.
+
+Attributes
+^^^^^^^^^^
+
++----------------+----------------------------------------------------------------------------------------+
+| **plugin**     | Fully qualified Java class of resource adaptor to be used                              |
++----------------+----------------------------------------------------------------------------------------+
+| **resource**   | Type of resource to update                                                             |
++----------------+----------------------------------------------------------------------------------------+
+| **key**        | SQL-like string specifying criteria for retrieval                                      |
++----------------+----------------------------------------------------------------------------------------+
+| **pfx**        | Prefix to be prepended to variable names, when attributes are set in SvcLogicContext   |
++----------------+----------------------------------------------------------------------------------------+
+
+Parameters
+^^^^^^^^^^
+
+Values to save (columns) are specified as parameters, with each name
+corresponding to a column name and each value corresponding to the value
+to set.
+
+Outcomes
+^^^^^^^^
+
++---------------+-------------------------------+
+| **success**   | Resource successfully saved   |
++---------------+-------------------------------+
+| **failure**   | Resource save failed          |
++---------------+-------------------------------+
+
+Example
+^^^^^^^
+
+::
+
+    <update plugin="`$sample-resource-plugin`" resource="vnf"
+        key="vnf-name = $requests.vnf.vnf-name"
+        pfx="requests.vnf">
+        <parameter name="vnf-name"
+            value="`$requests.cust-country-code + $requests.cust-id + $requests.cust-city + $requests.cust-state + '001VCE'`" />
+        <parameter name="vnf-type" value="vce" />
+        <parameter name="orchestration-status" value="pending-create" />
+        <parameter name="heat-stack-id" value="`$requests.heat-stack-id`" />
+        <parameter name="mso-catalog-key" value="`$requests.mso-catalog-key`" />
+        <parameter name="oam-ipv4-address" value="`$vce-ipv4-oam-addr.ipv4-addr`" />
+    </update>
index de686ad..42eafdd 100644 (file)
@@ -8,9 +8,5 @@ Offered APIs
    :maxdepth: 1
    :titlesonly:
 
-SLI-API(2016-11-11)
-===================
-
-.. swaggerv2doc:: https://gerrit.onap.org/r/gitweb?p=ccsdk/sli/core.git;a=blob_plain;f=sliapi/model/src/main/resources/sli-api.20161110.json
-
+   apis/sliapi.rst
 
index fc9b763..d36aaa1 100755 (executable)
                                                <version>${odl.sal.api.gen.plugin.version}</version>
                                                <type>jar</type>
                                        </dependency>
+                    <dependency>
+                        <groupId>org.opendaylight.netconf</groupId>
+                        <artifactId>sal-rest-docgen-maven</artifactId>
+                        <version>${odl.restconf.version}</version>
+                        <type>jar</type>
+                    </dependency>
                                </dependencies>
                                <executions>
                                        <execution>
                                                        <yangFilesRootDir>${yang.file.directory}</yangFilesRootDir>
                                                        <codeGenerators>
                                                                <generator>
-                                                                       <!--
-                                                                       <codeGeneratorClass>org.opendaylight.yangtools.maven.sal.api.gen.plugin.CodeGeneratorImpl</codeGeneratorClass>
-                                                                       -->
                                                                        <codeGeneratorClass>org.opendaylight.mdsal.binding.maven.api.gen.plugin.CodeGeneratorImpl</codeGeneratorClass>
                                                                        <outputBaseDir>${salGeneratorPath}</outputBaseDir>
                                                                </generator>
+                                 <generator>
+                                    <codeGeneratorClass>org.opendaylight.netconf.sal.rest.doc.maven.StaticDocGenerator</codeGeneratorClass>
+                                    <outputBaseDir>target/swagger</outputBaseDir>
+                                </generator>
                                                        </codeGenerators>
                                                        <inspectDependencies>true</inspectDependencies>
                                                </configuration>
index 0cc53fe..da966e1 100644 (file)
@@ -1 +1,513 @@
-{"apiVersion":"1.0.0","swaggerVersion":"1.2","basePath":"restconf","resourcePath":null,"produces":["application/json","application/xml"],"apis":[{"path":"/config","operations":[{"method":"POST","summary":null,"notes":"Defines API to service logic interpreter","type":"(config)SLI-API_modulePOST","nickname":"POST-SLI-API_module","consumes":["application/json","application/xml"],"parameters":[{"name":"**(config)test-results","description":null,"required":false,"type":"SLI-API(config)test-results-TOP","paramType":"body"}],"responseMessages":null}]},{"path":"/config/SLI-API:test-results","operations":[{"method":"GET","summary":null,"notes":"Test results","type":"(config)test-results","nickname":"GET-test-results","consumes":null,"parameters":[],"responseMessages":null},{"method":"PUT","summary":null,"notes":"Test results","type":"SLI-API(config)test-results-TOP","nickname":"PUT-test-results","consumes":["application/json","application/xml"],"parameters":[{"name":"(config)test-results","description":null,"required":false,"type":"SLI-API(config)test-results-TOP","paramType":"body"}],"responseMessages":null},{"method":"DELETE","summary":null,"notes":"Test results","type":null,"nickname":"DELETE-test-results","consumes":null,"parameters":[],"responseMessages":null},{"method":"POST","summary":null,"notes":"Test results","type":"(config)test-resultsPOST","nickname":"POST-test-results","consumes":["application/json","application/xml"],"parameters":[{"name":"**(config)test-result","description":null,"required":false,"type":"SLI-API/test-results(config)test-result-TOP","paramType":"body"}],"responseMessages":null}]},{"path":"/config/SLI-API:test-results/test-result/{test-identifier}","operations":[{"method":"GET","summary":null,"notes":null,"type":"(config)test-result","nickname":"GET-test-result","consumes":null,"parameters":[{"name":"test-identifier","description":null,"required":false,"type":"string","paramType":"path"}],"responseMessages":null},{"method":"PUT","summary":null,"notes":null,"type":"SLI-API/test-results(config)test-result-TOP","nickname":"PUT-test-result","consumes":["application/json","application/xml"],"parameters":[{"name":"test-identifier","description":null,"required":false,"type":"string","paramType":"path"},{"name":"(config)test-result","description":null,"required":false,"type":"SLI-API/test-results(config)test-result-TOP","paramType":"body"}],"responseMessages":null},{"method":"DELETE","summary":null,"notes":null,"type":null,"nickname":"DELETE-test-result","consumes":null,"parameters":[{"name":"test-identifier","description":null,"required":false,"type":"string","paramType":"path"}],"responseMessages":null}]},{"path":"/operational/SLI-API:test-results","operations":[{"method":"GET","summary":null,"notes":"Test results","type":"(operational)test-results","nickname":"GET-test-results","consumes":null,"parameters":[],"responseMessages":null}]},{"path":"/operations/SLI-API:healthcheck","operations":[{"method":"POST","summary":null,"notes":null,"type":"(healthcheck)output-TOP","nickname":"healthcheck","consumes":["application/json","application/xml"],"parameters":[{"name":null,"description":null,"required":false,"type":"(healthcheck)input-TOP","paramType":"body"}],"responseMessages":null}]},{"path":"/operations/SLI-API:execute-graph","operations":[{"method":"POST","summary":null,"notes":" Method to add a new parameter.","type":"(execute-graph)output-TOP","nickname":"execute-graph","consumes":["application/json","application/xml"],"parameters":[{"name":null,"description":null,"required":false,"type":"(execute-graph)input-TOP","paramType":"body"}],"responseMessages":null}]}],"models":{"(execute-graph)output":{"$schema":"http://json-schema.org/draft-04/schema","id":"(execute-graph)output","type":"object","properties":{"SLI-API:response-code":{"type":"Some response-code","required":false},"SLI-API:ack-final-indicator":{"type":"Some ack-final-indicator","required":false},"SLI-API:context-memory-json":{"type":"Some context-memory-json","required":false},"SLI-API:response-message":{"type":"Some response-message","required":false}}},"SLI-API(config)sli-parameter":{"$schema":"http://json-schema.org/draft-04/schema","id":"SLI-API(config)sli-parameter","type":"object","properties":{"SLI-API:boolean-value":{"type":"true","required":false},"SLI-API:parameter-name":{"description":"Parameter name","type":"Some parameter-name","required":false},"SLI-API:int-value":{"type":"-2147483648","required":false},"SLI-API:string-value":{"type":"Some string-value","required":false}}},"SLI-API/test-results(config)test-result":{"$schema":"http://json-schema.org/draft-04/schema","id":"SLI-API/test-results(config)test-result","type":"object","properties":{"SLI-API:results":{"type":"array","items":{"type":"Some results"},"required":false},"SLI-API:test-identifier":{"type":"Some test-identifier","required":false}}},"(config)sli-parameterPOST":{"$schema":"http://json-schema.org/draft-04/schema","id":"(config)sli-parameterPOST","type":"object","properties":{"parameter-name":{"description":"Parameter name","type":"Some parameter-name","required":false},"boolean-value":{"type":"true","required":false},"string-value":{"type":"Some string-value","required":false},"int-value":{"type":"-2147483648","required":false}}},"SLI-API(config)test-results":{"$schema":"http://json-schema.org/draft-04/schema","id":"SLI-API(config)test-results","type":"object","properties":{"SLI-API:test-result":{"type":"array","items":{"$ref":"SLI-API/test-results(config)test-result"}}}},"(healthcheck)input":{"$schema":"http://json-schema.org/draft-04/schema","id":"(healthcheck)input","type":"object","properties":{"SLI-API:dummy-leaf":{"type":"Some dummy-leaf","required":false}}},"(execute-graph)input":{"$schema":"http://json-schema.org/draft-04/schema","id":"(execute-graph)input","type":"object","properties":{"SLI-API:rpc-name":{"type":"Some rpc-name","required":false},"SLI-API:sli-parameter":{"type":"array","items":{"$ref":"SLI-API(config)sli-parameter"}},"SLI-API:module-name":{"type":"Some module-name","required":false},"SLI-API:mode":{"type":"sync","required":false,"enum":["sync","async"]}}},"(execute-graph)input-TOP":{"$schema":"http://json-schema.org/draft-04/schema","id":"(execute-graph)input-TOP","type":"object","properties":{"SLI-API:input":{"type":"object","items":{"$ref":"(execute-graph)input"}}}},"unique_empty_identifier":{},"SLI-API/test-results(config)test-result-TOP":{"$schema":"http://json-schema.org/draft-04/schema","id":"SLI-API/test-results(config)test-result-TOP","type":"object","properties":{"SLI-API:test-result":{"type":"array","items":{"$ref":"SLI-API/test-results(config)test-result"}}}},"SLI-API(config)sli-parameter-TOP":{"$schema":"http://json-schema.org/draft-04/schema","id":"SLI-API(config)sli-parameter-TOP","type":"object","properties":{"SLI-API:sli-parameter":{"type":"array","items":{"$ref":"SLI-API(config)sli-parameter"}}}},"SLI-API(operational)test-results":{"$schema":"http://json-schema.org/draft-04/schema","id":"SLI-API(operational)test-results","type":"object","properties":{}},"(execute-graph)output-TOP":{"$schema":"http://json-schema.org/draft-04/schema","id":"(execute-graph)output-TOP","type":"object","properties":{"SLI-API:output":{"type":"object","items":{"$ref":"(execute-graph)output"}}}},"(healthcheck)output":{"$schema":"http://json-schema.org/draft-04/schema","id":"(healthcheck)output","type":"object","properties":{"SLI-API:response-code":{"type":"Some response-code","required":false},"SLI-API:ack-final-indicator":{"type":"Some ack-final-indicator","required":false},"SLI-API:context-memory-json":{"type":"Some context-memory-json","required":false},"SLI-API:response-message":{"type":"Some response-message","required":false}}},"(config)SLI-API_modulePOST":{"$schema":"http://json-schema.org/draft-04/schema","id":"(config)SLI-API_modulePOST","type":"object","properties":{"test-results":{"type":"object","items":{"$ref":"SLI-API(config)test-results"}}}},"(config)test-resultsPOST":{"$schema":"http://json-schema.org/draft-04/schema","id":"(config)test-resultsPOST","type":"object","properties":{"test-result":{"type":"array","items":{"$ref":"SLI-API/test-results(config)test-result"}}}},"SLI-API(operational)test-results-TOP":{"$schema":"http://json-schema.org/draft-04/schema","id":"SLI-API(operational)test-results-TOP","type":"object","properties":{"SLI-API:test-results":{"description":"Test results","type":"object","items":{"$ref":"SLI-API(operational)test-results"}}}},"SLI-API(config)test-results-TOP":{"$schema":"http://json-schema.org/draft-04/schema","id":"SLI-API(config)test-results-TOP","type":"object","properties":{"SLI-API:test-results":{"description":"Test results","type":"object","items":{"$ref":"SLI-API(config)test-results"}}}},"(healthcheck)input-TOP":{"$schema":"http://json-schema.org/draft-04/schema","id":"(healthcheck)input-TOP","type":"object","properties":{"SLI-API:input":{"type":"object","items":{"$ref":"(healthcheck)input"}}}},"(healthcheck)output-TOP":{"$schema":"http://json-schema.org/draft-04/schema","id":"(healthcheck)output-TOP","type":"object","properties":{"SLI-API:output":{"type":"object","items":{"$ref":"(healthcheck)output"}}}},"(config)test-resultPOST":{"$schema":"http://json-schema.org/draft-04/schema","id":"(config)test-resultPOST","type":"object","properties":{"test-identifier":{"type":"Some test-identifier","required":false}}}}}
\ No newline at end of file
+{
+  "swagger": "2.0",
+  "info": {
+    "version": "1.0.0"
+  },
+  "basePath": "/restconf",
+  "paths": {
+    "/config": {
+      "post": {
+        "consumes": [
+          "application/json",
+          "application/xml"
+        ],
+        "produces": [
+          "application/json",
+          "application/xml"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "**(config)test-results",
+            "required": false,
+            "schema": {
+              "$ref": "#/definitions/SLI-API(config)test-results-TOP"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "No response was specified",
+            "schema": {
+              "$ref": "#/definitions/(config)SLI-API_modulePOST"
+            }
+          }
+        },
+        "description": "Defines API to service logic interpreter",
+        "operationId": "POST-SLI-API_module"
+      }
+    },
+    "/config/SLI-API:test-results": {
+      "delete": {
+        "produces": [
+          "application/json",
+          "application/xml"
+        ],
+        "responses": {
+          "200": {
+            "description": "No response was specified"
+          }
+        },
+        "description": "Test results",
+        "operationId": "DELETE-test-results"
+      },
+      "get": {
+        "produces": [
+          "application/json",
+          "application/xml"
+        ],
+        "responses": {
+          "200": {
+            "description": "No response was specified",
+            "schema": {
+              "$ref": "#/definitions/(config)test-results"
+            }
+          }
+        },
+        "description": "Test results",
+        "operationId": "GET-test-results"
+      },
+      "post": {
+        "consumes": [
+          "application/json",
+          "application/xml"
+        ],
+        "produces": [
+          "application/json",
+          "application/xml"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "**(config)test-result",
+            "required": false,
+            "schema": {
+              "$ref": "#/definitions/SLI-API/test-results(config)test-result-TOP"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "No response was specified",
+            "schema": {
+              "$ref": "#/definitions/(config)test-resultsPOST"
+            }
+          }
+        },
+        "description": "Test results",
+        "operationId": "POST-test-results"
+      },
+      "put": {
+        "consumes": [
+          "application/json",
+          "application/xml"
+        ],
+        "produces": [
+          "application/json",
+          "application/xml"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "(config)test-results",
+            "required": false,
+            "schema": {
+              "$ref": "#/definitions/SLI-API(config)test-results-TOP"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "No response was specified",
+            "schema": {
+              "$ref": "#/definitions/SLI-API(config)test-results-TOP"
+            }
+          }
+        },
+        "description": "Test results",
+        "operationId": "PUT-test-results"
+      }
+    },
+    "/config/SLI-API:test-results/test-result/{test-identifier}": {
+      "delete": {
+        "produces": [
+          "application/json",
+          "application/xml"
+        ],
+        "parameters": [
+          {
+            "in": "path",
+            "name": "test-identifier",
+            "required": true,
+            "type": "string"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "No response was specified"
+          }
+        },
+        "operationId": "DELETE-test-result"
+      },
+      "get": {
+        "produces": [
+          "application/json",
+          "application/xml"
+        ],
+        "parameters": [
+          {
+            "in": "path",
+            "name": "test-identifier",
+            "required": true,
+            "type": "string"
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "No response was specified",
+            "schema": {
+              "$ref": "#/definitions/(config)test-result"
+            }
+          }
+        },
+        "operationId": "GET-test-result"
+      },
+      "put": {
+        "consumes": [
+          "application/json",
+          "application/xml"
+        ],
+        "produces": [
+          "application/json",
+          "application/xml"
+        ],
+        "parameters": [
+          {
+            "in": "path",
+            "name": "test-identifier",
+            "required": true,
+            "type": "string"
+          },
+          {
+            "in": "body",
+            "name": "(config)test-result",
+            "required": false,
+            "schema": {
+              "$ref": "#/definitions/SLI-API/test-results(config)test-result-TOP"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "No response was specified",
+            "schema": {
+              "$ref": "#/definitions/SLI-API/test-results(config)test-result-TOP"
+            }
+          }
+        },
+        "operationId": "PUT-test-result"
+      }
+    },
+    "/operational/SLI-API:test-results": {
+      "get": {
+        "produces": [
+          "application/json",
+          "application/xml"
+        ],
+        "responses": {
+          "200": {
+            "description": "No response was specified",
+            "schema": {
+              "$ref": "#/definitions/(operational)test-results"
+            }
+          }
+        },
+        "description": "Test results",
+        "operationId": "GET-test-results"
+      }
+    },
+    "/operations/SLI-API:execute-graph": {
+      "post": {
+        "consumes": [
+          "application/json",
+          "application/xml"
+        ],
+        "produces": [
+          "application/json",
+          "application/xml"
+        ],
+        "parameters": [
+          {
+            "in": "body",
+            "name": "body",
+            "required": false,
+            "schema": {
+              "$ref": "#/definitions/(execute-graph)input-TOP"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "No response was specified",
+            "schema": {
+              "$ref": "#/definitions/(execute-graph)output-TOP"
+            }
+          }
+        },
+        "description": " Method to add a new parameter.",
+        "operationId": "execute-graph"
+      }
+    },
+    "/operations/SLI-API:healthcheck": {
+      "post": {
+        "produces": [
+          "application/json",
+          "application/xml"
+        ],
+        "responses": {
+          "200": {
+            "description": "No response was specified",
+            "schema": {
+              "$ref": "#/definitions/(healthcheck)output-TOP"
+            }
+          }
+        },
+        "operationId": "healthcheck"
+      }
+    }
+  },
+  "definitions": {
+    "(config)SLI-API_modulePOST": {
+      "properties": {
+        "test-results": {
+          "items": {
+            "$ref": "#/definitions/SLI-API(config)test-results"
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "(config)sli-parameterPOST": {
+      "properties": {
+        "boolean-value": {
+          "$ref": "#/definitions/true"
+        },
+        "int-value": {
+          "$ref": "#/definitions/-2147483648"
+        },
+        "parameter-name": {
+          "$ref": "#/definitions/Some parameter-name",
+          "description": "Parameter name"
+        },
+        "string-value": {
+          "$ref": "#/definitions/Some string-value"
+        }
+      },
+      "type": "object"
+    },
+    "(config)test-resultPOST": {
+      "properties": {
+        "test-identifier": {
+          "$ref": "#/definitions/Some test-identifier"
+        }
+      },
+      "type": "object"
+    },
+    "(config)test-resultsPOST": {
+      "properties": {
+        "test-result": {
+          "items": {
+            "$ref": "#/definitions/SLI-API/test-results(config)test-result"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "(execute-graph)input": {
+      "properties": {
+        "SLI-API:mode": {
+          "$ref": "#/definitions/sync",
+          "enum": [
+            "sync",
+            "async"
+          ]
+        },
+        "SLI-API:module-name": {
+          "$ref": "#/definitions/Some module-name"
+        },
+        "SLI-API:rpc-name": {
+          "$ref": "#/definitions/Some rpc-name"
+        },
+        "SLI-API:sli-parameter": {
+          "items": {
+            "$ref": "#/definitions/SLI-API(config)sli-parameter"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "(execute-graph)input-TOP": {
+      "properties": {
+        "SLI-API:input": {
+          "items": {
+            "$ref": "#/definitions/(execute-graph)input"
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "(execute-graph)output": {
+      "properties": {
+        "SLI-API:ack-final-indicator": {
+          "$ref": "#/definitions/Some ack-final-indicator"
+        },
+        "SLI-API:context-memory-json": {
+          "$ref": "#/definitions/Some context-memory-json"
+        },
+        "SLI-API:response-code": {
+          "$ref": "#/definitions/Some response-code"
+        },
+        "SLI-API:response-message": {
+          "$ref": "#/definitions/Some response-message"
+        }
+      },
+      "type": "object"
+    },
+    "(execute-graph)output-TOP": {
+      "properties": {
+        "SLI-API:output": {
+          "items": {
+            "$ref": "#/definitions/(execute-graph)output"
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "(healthcheck)output": {
+      "properties": {
+        "SLI-API:ack-final-indicator": {
+          "$ref": "#/definitions/Some ack-final-indicator"
+        },
+        "SLI-API:context-memory-json": {
+          "$ref": "#/definitions/Some context-memory-json"
+        },
+        "SLI-API:response-code": {
+          "$ref": "#/definitions/Some response-code"
+        },
+        "SLI-API:response-message": {
+          "$ref": "#/definitions/Some response-message"
+        }
+      },
+      "type": "object"
+    },
+    "(healthcheck)output-TOP": {
+      "properties": {
+        "SLI-API:output": {
+          "items": {
+            "$ref": "#/definitions/(healthcheck)output"
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "SLI-API(config)sli-parameter": {
+      "properties": {
+        "SLI-API:boolean-value": {
+          "$ref": "#/definitions/true"
+        },
+        "SLI-API:int-value": {
+          "$ref": "#/definitions/-2147483648"
+        },
+        "SLI-API:parameter-name": {
+          "$ref": "#/definitions/Some parameter-name",
+          "description": "Parameter name"
+        },
+        "SLI-API:string-value": {
+          "$ref": "#/definitions/Some string-value"
+        }
+      },
+      "type": "object"
+    },
+    "SLI-API(config)sli-parameter-TOP": {
+      "properties": {
+        "SLI-API:sli-parameter": {
+          "items": {
+            "$ref": "#/definitions/SLI-API(config)sli-parameter"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "SLI-API(config)test-results": {
+      "properties": {
+        "SLI-API:test-result": {
+          "items": {
+            "$ref": "#/definitions/SLI-API/test-results(config)test-result"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "SLI-API(config)test-results-TOP": {
+      "properties": {
+        "SLI-API:test-results": {
+          "description": "Test results",
+          "items": {
+            "$ref": "#/definitions/SLI-API(config)test-results"
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "SLI-API(operational)test-results": {
+      "type": "object"
+    },
+    "SLI-API(operational)test-results-TOP": {
+      "properties": {
+        "SLI-API:test-results": {
+          "description": "Test results",
+          "items": {
+            "$ref": "#/definitions/SLI-API(operational)test-results"
+          },
+          "type": "object"
+        }
+      },
+      "type": "object"
+    },
+    "SLI-API/test-results(config)test-result": {
+      "properties": {
+        "SLI-API:results": {
+          "items": {
+            "$ref": "#/definitions/Some results"
+          },
+          "type": "array"
+        },
+        "SLI-API:test-identifier": {
+          "$ref": "#/definitions/Some test-identifier"
+        }
+      },
+      "type": "object"
+    },
+    "SLI-API/test-results(config)test-result-TOP": {
+      "properties": {
+        "SLI-API:test-result": {
+          "items": {
+            "$ref": "#/definitions/SLI-API/test-results(config)test-result"
+          },
+          "type": "array"
+        }
+      },
+      "type": "object"
+    },
+    "unique_empty_identifier": {}
+  }
+}