Added JSON and XML payloads tabs with RFC 8040 URL 47/90547/10
authorDhiraj Sharma <dhiraj.8.sharma@gmail.com>
Mon, 22 Jun 2020 07:12:32 +0000 (12:42 +0530)
committerDhiraj Sharma <dhiraj.8.sharma@gmail.com>
Sat, 25 Jul 2020 05:08:43 +0000 (10:38 +0530)
Signed-off-by: Dhiraj Sharma <dhiraj.8.sharma@gmail.com>
Change-Id: I4efd1b236dae9a93c02cad1c9e3a99600d45d3b4

docs/users/operation.rst

index 9f5d6bbe30b9cad87d3196139b354035a5e8e422..ba6ca1375a563c836356052e9e4a63cf21e336a9 100644 (file)
@@ -68,84 +68,184 @@ request.
 To view the topology data for all the connected nodes, send the following
 request to the controller:
 
-**Headers:**
-
--  **Content-type:** ``application/xml``
-
--  **Accept:** ``application/xml``
-
--  **Authentication:** ``admin:admin``
-
 **URL:** ``/restconf/operational/network-topology:network-topology/topology/flow:1``
 
-**Method:** GET
+**RFC8040 URL:** ``/rests/data/network-topology:network-topology/topology=flow%3A1?content=nonconfig``
 
-**Sample output:**
+**Method:** ``GET``
 
-.. code-block:: none
+.. tabs::
+
+    .. tab:: XML
+
+        **Headers:**
+
+        **Content-type:** ``application/xml``
+
+        **Accept:** ``application/xml``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+            <topology xmlns="urn:TBD:params:xml:ns:yang:network-topology">
+                <topology-id>flow: 1</topology-id>
+                <node>
+                    <node-id>openflow: 2</node-id>
+                    <termination-point>
+                        <tp-id>openflow: 2: 2</tp-id>
+                        <inventory-node-connector-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow: 2']/a:node-connector[a:id='openflow: 2: 2']
+                    </inventory-node-connector-ref>
+                    </termination-point>
+                    <termination-point>
+                        <tp-id>openflow: 2: 1</tp-id>
+                        <inventory-node-connector-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow: 2']/a:node-connector[a:id='openflow: 2: 1']
+                    </inventory-node-connector-ref>
+                    </termination-point>
+                    <termination-point>
+                        <tp-id>openflow: 2:LOCAL</tp-id>
+                        <inventory-node-connector-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow: 2']/a:node-connector[a:id='openflow: 2:LOCAL']
+                    </inventory-node-connector-ref>
+                    </termination-point>
+                    <inventory-node-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow: 2']
+                    </inventory-node-ref>
+                </node>
+                <node>
+                    <node-id>openflow: 1</node-id>
+                    <termination-point>
+                        <tp-id>openflow: 1: 1</tp-id>
+                        <inventory-node-connector-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow: 1']/a:node-connector[a:id='openflow: 1: 1']
+                    </inventory-node-connector-ref>
+                    </termination-point>
+                    <termination-point>
+                        <tp-id>openflow: 1:LOCAL</tp-id>
+                        <inventory-node-connector-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow: 1']/a:node-connector[a:id='openflow: 1:LOCAL']
+                    </inventory-node-connector-ref>
+                    </termination-point>
+                    <termination-point>
+                        <tp-id>openflow: 1: 2</tp-id>
+                        <inventory-node-connector-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow: 1']/a:node-connector[a:id='openflow: 1: 2']
+                    </inventory-node-connector-ref>
+                    </termination-point>
+                    <inventory-node-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow: 1']
+                </inventory-node-ref>
+                </node>
+                <link>
+                    <link-id>openflow:1:2</link-id>
+                    <destination>
+                        <dest-tp>openflow:2:2</dest-tp>
+                        <dest-node>openflow:2</dest-node>
+                    </destination>
+                    <source>
+                        <source-node>openflow:1</source-node>
+                        <source-tp>openflow:1:2</source-tp>
+                    </source>
+                </link>
+                <link>
+                    <link-id>openflow:2:2</link-id>
+                    <destination>
+                        <dest-tp>openflow:1:2</dest-tp>
+                        <dest-node>openflow:1</dest-node>
+                    </destination>
+                    <source>
+                        <source-node>openflow:2</source-node>
+                        <source-tp>openflow:2:2</source-tp>
+                    </source>
+                </link>
+            </topology>
+
+    .. tab:: JSON
+
+        **Headers:**
+
+        **Content-type:** ``application/json``
+
+        **Accept:** ``application/json``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+            {
+                "topology": [
+                    {
+                        "topology-id": "flow:1",
+                        "node": [
+                            {
+                                "node-id": "openflow:2",
+                                "termination-point": [
+                                    {
+                                        "tp-id": "openflow:2:2",
+                                        "opendaylight-topology-inventory:inventory-node-connector-ref":
+                                        "/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:2']/opendaylight-inventory:node-connector[opendaylight-inventory:id='openflow:2:2']"
+                                    },
+                                    {
+                                        "tp-id": "openflow:2:1",
+                                        "opendaylight-topology-inventory:inventory-node-connector-ref":
+                                        "/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:2']/opendaylight-inventory:node-connector[opendaylight-inventory:id='openflow:2:1']"
+                                    },
+                                    {
+                                        "tp-id": "openflow:2:LOCAL",
+                                        "opendaylight-topology-inventory:inventory-node-connector-ref":
+                                        "/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:2']/opendaylight-inventory:node-connector[opendaylight-inventory:id='openflow:2:LOCAL']"
+                                    }
+                                ],
+                                "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:2']"
+                            },
+                            {
+                                "node-id": "openflow:1",
+                                "termination-point": [
+                                    {
+                                        "tp-id": "openflow:1:1",
+                                        "opendaylight-topology-inventory:inventory-node-connector-ref":
+                                        "/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:1']/opendaylight-inventory:node-connector[opendaylight-inventory:id='openflow:1:1']"
+                                    },
+                                    {
+                                        "tp-id": "openflow:1:LOCAL",
+                                        "opendaylight-topology-inventory:inventory-node-connector-ref":
+                                        "/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:1']/opendaylight-inventory:node-connector[opendaylight-inventory:id='openflow:1:LOCAL']"
+                                    },
+                                    {
+                                        "tp-id": "openflow:1:2",
+                                        "opendaylight-topology-inventory:inventory-node-connector-ref":
+                                        "/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:1']/opendaylight-inventory:node-connector[opendaylight-inventory:id='openflow:1:2']"
+                                    }
+                                ],
+                                "opendaylight-topology-inventory:inventory-node-ref": "/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:1']"
+                            }
+                        ],
+                        "link": [
+                            {
+                                "link-id": "openflow:1:2",
+                                "destination": {
+                                    "dest-tp": "openflow:2:2",
+                                    "dest-node": "openflow:2"
+                                },
+                                "source": {
+                                    "source-node": "openflow:1",
+                                    "source-tp": "openflow:1:2"
+                                }
+                            },
+                            {
+                                "link-id": "openflow:2:2",
+                                "destination": {
+                                    "dest-tp": "openflow:1:2",
+                                    "dest-node": "openflow:1"
+                                },
+                                "source": {
+                                    "source-node": "openflow:2",
+                                     "source-tp": "openflow:2:2"
+                                    }
+                            }
+                        ]
+                    }
+                ]
+            }
 
-   <topology xmlns="urn:TBD:params:xml:ns:yang:network-topology">
-       <topology-id>flow:1</topology-id>
-       <node>
-           <node-id>openflow:1</node-id>
-           <inventory-node-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow:1']</inventory-node-ref>
-           <termination-point>
-               <tp-id>openflow:1:1</tp-id>
-               <inventory-node-connector-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow:1']/a:node-connector[a:id='openflow:1:1']</inventory-node-connector-ref>
-           </termination-point>
-           <termination-point>
-               <tp-id>openflow:1:LOCAL</tp-id>
-               <inventory-node-connector-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow:1']/a:node-connector[a:id='openflow:1:LOCAL']</inventory-node-connector-ref>
-           </termination-point>
-           <termination-point>
-               <tp-id>openflow:1:2</tp-id>
-               <inventory-node-connector-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow:1']/a:node-connector[a:id='openflow:1:2']</inventory-node-connector-ref>
-           </termination-point>
-       </node>
-       <node>
-           <node-id>openflow:2</node-id>
-           <inventory-node-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow:2']</inventory-node-ref>
-           <termination-point>
-               <tp-id>openflow:2:2</tp-id>
-               <inventory-node-connector-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow:2']/a:node-connector[a:id='openflow:2:2']</inventory-node-connector-ref>
-           </termination-point>
-           <termination-point>
-               <tp-id>openflow:2:LOCAL</tp-id>
-               <inventory-node-connector-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow:2']/a:node-connector[a:id='openflow:2:LOCAL']</inventory-node-connector-ref>
-           </termination-point>
-           <termination-point>
-               <tp-id>openflow:2:1</tp-id>
-               <inventory-node-connector-ref xmlns="urn:opendaylight:model:topology:inventory" xmlns:a="urn:opendaylight:inventory">/a:nodes/a:node[a:id='openflow:2']/a:node-connector[a:id='openflow:2:1']</inventory-node-connector-ref>
-           </termination-point>
-       </node>
-       <link>
-           <link-id>openflow:2:2</link-id>
-           <source>
-               <source-node>openflow:2</source-node>
-               <source-tp>openflow:2:2</source-tp>
-           </source>
-           <destination>
-               <dest-node>openflow:1</dest-node>
-               <dest-tp>openflow:1:2</dest-tp>
-           </destination>
-       </link>
-       <link>
-           <link-id>openflow:1:2</link-id>
-           <source>
-               <source-node>openflow:1</source-node>
-               <source-tp>openflow:1:2</source-tp>
-           </source>
-           <destination>
-               <dest-node>openflow:2</dest-node>
-               <dest-tp>openflow:2:2</dest-tp>
-           </destination>
-       </link>
-   </topology>
-
-.. note:: In the example above the OpenFlow node is represented as openflow:1
+.. note:: In the examples above the OpenFlow node is represented as openflow:1
           where 1 is the datapath ID of the OpenFlow-enabled device.
 
-.. note:: In the example above the OpenFlow node connector is represented as
+.. note:: In the examples above the OpenFlow node connector is represented as
           openflow:1:2 where 1 is the datapath ID and 2 is the port ID of the
           OpenFlow-enabled device.
 
@@ -219,109 +319,219 @@ Example of node inventory data
 To view the inventory data of a connected node, send the following request to
 the controller:
 
-**Headers:**
+**URL:** ``/restconf/operational/opendaylight-inventory:nodes/node/openflow:1``
 
--  **Content-type:** ``application/xml``
+**RFC8040 URL:** ``/rests/data/opendaylight-inventory:nodes/node=openflow%3A1?content=nonconfig``
 
--  **Accept:** ``application/xml``
+**Method:** ``GET``
 
--  **Authentication:** ``admin:admin``
+.. tabs::
 
-**URL:** ``/restconf/operational/opendaylight-inventory:nodes/node/openflow:1``
+    .. tab:: XML
 
-**Method:** ``GET``
+        **Headers:**
 
-**Sample output:**
+        **Content-type:** ``application/xml``
 
-.. code-block:: none
+        **Accept:** ``application/xml``
 
-   <node>
-      <hardware xmlns="urn:opendaylight:flow:inventory">Open vSwitch</hardware>
-      <description xmlns="urn:opendaylight:flow:inventory">None</description>
-      <switch-features xmlns="urn:opendaylight:flow:inventory">
-          <max_tables>254</max_tables>
-          <max_buffers>0</max_buffers>
-          <capabilities>flow-feature-capability-queue-stats</capabilities>
-          <capabilities>flow-feature-capability-table-stats</capabilities>
-          <capabilities>flow-feature-capability-flow-stats</capabilities>
-          <capabilities>flow-feature-capability-port-stats</capabilities>
-          <capabilities>flow-feature-capability-group-stats</capabilities>
-      </switch-features>
-      <manufacturer xmlns="urn:opendaylight:flow:inventory">Nicira, Inc.</manufacturer>
-      <serial-number xmlns="urn:opendaylight:flow:inventory">None</serial-number>
-      <software xmlns="urn:opendaylight:flow:inventory">2.8.1</software>
-      <ip-address xmlns="urn:opendaylight:flow:inventory">192.168.0.24</ip-address>
-
-      --- Omitted output —--
-
-.. note:: In the example above the OpenFlow node is represented as openflow:1
-          where 1 is the datapath ID of the OpenFlow-enabled device.
+        **Authentication:** ``admin:admin``
 
-Example of port description and port statistics
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+        .. code-block:: none
 
-To view the port description and port statistics of a connected node, send the
-following request to the controller:
+           <node xmlns="urn:opendaylight:inventory">
+                <id>openflow:1</id>
+                <serial-number xmlns="urn:opendaylight:flow:inventory">None</serial-number>
+                <port-number xmlns="urn:opendaylight:flow:inventory">45170</port-number>
+                <description xmlns="urn:opendaylight:flow:inventory">None</description>
+                <hardware xmlns="urn:opendaylight:flow:inventory">Open vSwitch</hardware>
+                <manufacturer xmlns="urn:opendaylight:flow:inventory">Nicira, Inc.</manufacturer>
+                <switch-features xmlns="urn:opendaylight:flow:inventory">
+                    <max_tables>254</max_tables>
+                    <capabilities>flow-feature-capability-queue-stats</capabilities>
+                    <capabilities>flow-feature-capability-flow-stats</capabilities>
+                    <capabilities>flow-feature-capability-port-stats</capabilities>
+                    <capabilities>flow-feature-capability-table-stats</capabilities>
+                    <max_buffers>256</max_buffers>
+                </switch-features>
 
-**Headers:**
+              --- Omitted output —--
 
--  **Content-type:** ``application/xml``
+    .. tab:: JSON
 
--  **Accept:** ``application/xml``
+        **Headers:**
 
--  **Authentication:** ``admin:admin``
+        **Content-type:** ``application/json``
 
-**URL:** ``/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/node-connector/openflow:1:2``
+        **Accept:** ``application/json``
 
-**Method:** ``GET``
+        **Authentication:** ``admin:admin``
 
-**Sample output:**
+        .. code-block:: none
 
-.. code-block:: none
+           {
+                "opendaylight-inventory:nodes": {
+                    "node": [
+                        {
+                            "id": "openflow:1",
+                            "flow-node-inventory:serial-number": "None",
+                            "flow-node-inventory:port-number": 45170,
+                            "flow-node-inventory:description": "None",
+                            "flow-node-inventory:hardware": "Open vSwitch",
+                            "flow-node-inventory:manufacturer": "Nicira, Inc.",
+                            "flow-node-inventory:switch-features": {
+                                "max_tables": 254,
+                                "capabilities": [
+                                    "flow-node-inventory:flow-feature-capability-queue-stats",
+                                    "flow-node-inventory:flow-feature-capability-flow-stats",
+                                    "flow-node-inventory:flow-feature-capability-port-stats",
+                                    "flow-node-inventory:flow-feature-capability-table-stats"
+                                ],
+                                "max_buffers": 256
+                            },
+                            "flow-node-inventory:software": "2.0.2",
+                            "flow-node-inventory:ip-address": "192.168.56.106",
+                            "flow-node-inventory:table": [
+                                {
+                                    "id": 88,
+                                    "opendaylight-flow-table-statistics:flow-table-statistics": {
+                                        "packets-looked-up": "0",
+                                        "active-flows": 0,
+                                        "packets-matched": "0"
+                                    }
+                                },
+
+              --- Omitted output —--
+
+.. note:: In the examples above the OpenFlow node is represented as openflow:1
+          where 1 is the datapath ID of the OpenFlow-enabled device.
 
-   <node-connector xmlns="urn:opendaylight:inventory">
-       <id>openflow:1:2</id>
-       <supported xmlns="urn:opendaylight:flow:inventory"></supported>
-       <peer-features xmlns="urn:opendaylight:flow:inventory"></peer-features>
-       <port-number xmlns="urn:opendaylight:flow:inventory">2</port-number>
-       <hardware-address xmlns="urn:opendaylight:flow:inventory">4e:92:4a:c8:4c:fa</hardware-address>
-       <current-feature xmlns="urn:opendaylight:flow:inventory">ten-gb-fd copper</current-feature>
-       <maximum-speed xmlns="urn:opendaylight:flow:inventory">0</maximum-speed>
-       <reason xmlns="urn:opendaylight:flow:inventory">update</reason>
-       <configuration xmlns="urn:opendaylight:flow:inventory"></configuration>
-       <advertised-features xmlns="urn:opendaylight:flow:inventory"></advertised-features>
-       <current-speed xmlns="urn:opendaylight:flow:inventory">10000000</current-speed>
-       <name xmlns="urn:opendaylight:flow:inventory">s1-eth2</name>
-       <state xmlns="urn:opendaylight:flow:inventory">
-           <link-down>false</link-down>
-           <blocked>false</blocked>
-           <live>true</live>
-       </state>
-       <flow-capable-node-connector-statistics xmlns="urn:opendaylight:port:statistics">
-           <receive-errors>0</receive-errors>
-           <packets>
-               <transmitted>444</transmitted>
-               <received>444</received>
-           </packets>
-           <receive-over-run-error>0</receive-over-run-error>
-           <transmit-drops>0</transmit-drops>
-           <collision-count>0</collision-count>
-           <receive-frame-error>0</receive-frame-error>
-           <bytes>
-               <transmitted>37708</transmitted>
-               <received>37708</received>
-           </bytes>
-           <receive-drops>0</receive-drops>
-           <transmit-errors>0</transmit-errors>
-           <duration>
-               <second>2181</second>
-               <nanosecond>550000000</nanosecond>
-           </duration>
-           <receive-crc-error>0</receive-crc-error>
-       </flow-capable-node-connector-statistics>
-   </node-connector>
+Example of port description and port statistics
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To view the port description and port statistics of a connected node, send the
+following request to the controller:
+
+**URL:** ``/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/node-connector/openflow:1:2``
+
+**RFC8040 URL:** ``/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/node-connector=openflow%3A1%3A2?content=nonconfig``
 
-.. note:: In the example above the OpenFlow node connector is represented as
+**Method:** ``GET``
+
+.. tabs::
+
+    .. tab:: XML
+
+        **Headers:**
+
+        **Content-type:** ``application/xml``
+
+        **Accept:** ``application/xml``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           <node-connector xmlns="urn:opendaylight:inventory">
+               <id>openflow:1:2</id>
+               <supported xmlns="urn:opendaylight:flow:inventory"></supported>
+               <peer-features xmlns="urn:opendaylight:flow:inventory"></peer-features>
+               <port-number xmlns="urn:opendaylight:flow:inventory">2</port-number>
+               <hardware-address xmlns="urn:opendaylight:flow:inventory">4e:92:4a:c8:4c:fa</hardware-address>
+               <current-feature xmlns="urn:opendaylight:flow:inventory">ten-gb-fd copper</current-feature>
+               <maximum-speed xmlns="urn:opendaylight:flow:inventory">0</maximum-speed>
+               <reason xmlns="urn:opendaylight:flow:inventory">update</reason>
+               <configuration xmlns="urn:opendaylight:flow:inventory"></configuration>
+               <advertised-features xmlns="urn:opendaylight:flow:inventory"></advertised-features>
+               <current-speed xmlns="urn:opendaylight:flow:inventory">10000000</current-speed>
+               <name xmlns="urn:opendaylight:flow:inventory">s1-eth2</name>
+               <state xmlns="urn:opendaylight:flow:inventory">
+                   <link-down>false</link-down>
+                   <blocked>false</blocked>
+                   <live>true</live>
+               </state>
+               <flow-capable-node-connector-statistics xmlns="urn:opendaylight:port:statistics">
+                   <receive-errors>0</receive-errors>
+                   <packets>
+                       <transmitted>444</transmitted>
+                       <received>444</received>
+                   </packets>
+                   <receive-over-run-error>0</receive-over-run-error>
+                   <transmit-drops>0</transmit-drops>
+                   <collision-count>0</collision-count>
+                   <receive-frame-error>0</receive-frame-error>
+                   <bytes>
+                       <transmitted>37708</transmitted>
+                       <received>37708</received>
+                   </bytes>
+                   <receive-drops>0</receive-drops>
+                   <transmit-errors>0</transmit-errors>
+                   <duration>
+                       <second>2181</second>
+                       <nanosecond>550000000</nanosecond>
+                   </duration>
+                   <receive-crc-error>0</receive-crc-error>
+               </flow-capable-node-connector-statistics>
+           </node-connector>
+
+    .. tab:: JSON
+
+        **Headers:**
+
+        **Content-type:** ``application/json``
+
+        **Accept:** ``application/json``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           {
+                "node-connector": [
+                    {
+                        "id": "openflow:1:2",
+                        "flow-node-inventory:hardware-address": "ca:56:91:bf:07:c9",
+                        "flow-node-inventory:supported": "",
+                        "flow-node-inventory:peer-features": "",
+                        "flow-node-inventory:advertised-features": "",
+                        "flow-node-inventory:name": "s1-eth2",
+                        "flow-node-inventory:port-number": 2,
+                        "flow-node-inventory:current-speed": 10000000,
+                        "flow-node-inventory:configuration": "",
+                        "flow-node-inventory:current-feature": "ten-gb-fd copper",
+                        "flow-node-inventory:maximum-speed": 0,
+                        "flow-node-inventory:state": {
+                            "blocked": false,
+                            "link-down": false,
+                            "live": false
+                        },
+                        "opendaylight-port-statistics:flow-capable-node-connector-statistics": {
+                            "packets": {
+                                "transmitted": 203,
+                                "received": 203
+                            },
+                            "receive-frame-error": 0,
+                            "collision-count": 0,
+                            "receive-errors": 0,
+                            "transmit-errors": 0,
+                            "bytes": {
+                                "transmitted": 17255,
+                                "received": 17255
+                            },
+                            "receive-crc-error": 0,
+                            "duration": {
+                                "nanosecond": 246000000,
+                                "second": 1008
+                            },
+                            "receive-drops": 0,
+                            "transmit-drops": 0,
+                            "receive-over-run-error": 0
+                        }
+                    }
+                ]
+            }
+
+.. note:: In the examples above the OpenFlow node connector is represented as
           openflow:1:2 where 1 is the datapath ID and 2 is the port ID of the
           OpenFlow-enabled device.
 
@@ -333,33 +543,132 @@ Example of flow table and aggregated statistics
 To view the flow table and flow aggregated statistics for a connected node,
 send the following request to the controller:
 
-**Headers:**
-
--  **Content-type:** ``application/xml``
-
--  **Accept:** ``application/xml``
-
--  **Authentication:** ``admin:admin``
-
 **URL:** ``/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/table/0/``
 
-**Method:** ``GET``
-
-**Sample output:**
-
-.. code-block:: none
+**RFC8040 URL:** ``/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/table=0?content=nonconfig``
 
-   <table xmlns="urn:opendaylight:flow:inventory">
-     <id>0</id>
-     <flow-table-statistics xmlns="urn:opendaylight:flow:table:statistics">
-        <active-flows>3</active-flows>
-        <packets-looked-up>548</packets-looked-up>
-        <packets-matched>535</packets-matched>
-     </flow-table-statistics>
+**Method:** ``GET``
 
-   --- Omitted output —--
+.. tabs::
+
+    .. tab:: XML
+
+        **Headers:**
+
+        **Content-type:** ``application/xml``
+
+        **Accept:** ``application/xml``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           <table xmlns="urn:opendaylight:flow:inventory">
+                <id>0</id>
+                <flow-table-statistics xmlns="urn:opendaylight:flow:table:statistics">
+                    <packets-looked-up>1570</packets-looked-up>
+                    <active-flows>1</active-flows>
+                    <packets-matched>1570</packets-matched>
+                </flow-table-statistics>
+                <flow>
+                    <id>#UF$TABLE*0-1</id>
+                    <table_id>0</table_id>
+                    <flow-statistics xmlns="urn:opendaylight:flow:statistics">
+                        <duration>
+                            <second>4004</second>
+                            <nanosecond>706000000</nanosecond>
+                        </duration>
+                        <packet-count>786</packet-count>
+                        <byte-count>66810</byte-count>
+                    </flow-statistics>
+                    <priority>0</priority>
+                    <hard-timeout>0</hard-timeout>
+                    <match/>
+                    <cookie_mask>0</cookie_mask>
+                    <cookie>10</cookie>
+                    <flags>SEND_FLOW_REM</flags>
+                    <instructions>
+                        <instruction>
+                            <order>0</order>
+                            <apply-actions>
+                                <action>
+                                    <order>0</order>
+                                    <output-action>
+                                        <output-node-connector>CONTROLLER</output-node-connector>
+                                        <max-length>65535</max-length>
+                                    </output-action>
+                                </action>
+                            </apply-actions>
+                        </instruction>
+                    </instructions>
+                    <idle-timeout>0</idle-timeout>
+                </flow>
+            </table>
+
+    .. tab:: JSON
+
+        **Headers:**
+
+        **Content-type:** ``application/json``
+
+        **Accept:** ``application/json``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           {
+                "flow-node-inventory:table": [
+                    {
+                        "id": 0,
+                        "opendaylight-flow-table-statistics:flow-table-statistics": {
+                            "packets-looked-up": 1581,
+                            "active-flows": 1,
+                            "packets-matched": 1581
+                        },
+                        "flow": [
+                            {
+                                "id": "#UF$TABLE*0-1",
+                                "table_id": 0,
+                                "opendaylight-flow-statistics:flow-statistics": {
+                                    "duration": {
+                                        "second": 4056,
+                                        "nanosecond": 4000000
+                                    },
+                                    "packet-count": 797,
+                                    "byte-count": 67745
+                                },
+                                "priority": 0,
+                                "hard-timeout": 0,
+                                "cookie_mask": 0,
+                                "cookie": 10,
+                                "flags": "SEND_FLOW_REM",
+                                "instructions": {
+                                    "instruction": [
+                                        {
+                                            "order": 0,
+                                            "apply-actions": {
+                                                "action": [
+                                                    {
+                                                        "order": 0,
+                                                        "output-action": {
+                                                            "output-node-connector": "CONTROLLER",
+                                                            "max-length": 65535
+                                                        }
+                                                    }
+                                                ]
+                                            }
+                                        }
+                                    ]
+                                },
+                                "idle-timeout": 0
+                            }
+                        ]
+                    }
+                ]
+            }
 
-.. note:: In the example above the OpenFlow node table is 0.
+.. note:: In the examples above the OpenFlow node table is 0.
 
 .. _example-of-individual-flow-statistics:
 
@@ -367,65 +676,129 @@ Example of flow description and flow statistics
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 To view the individual flow statistics, send the following request to the
-controller:
-
-**Headers:**
-
--  **Content-type:** ``application/xml``
-
--  **Accept:** ``application/xml``
-
--  **Authentication:** ``admin:admin``
+controller but before that :
 
 **URL:** ``/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/fm-sr-link-discovery``
 
-**Method:** ``GET``
-
-**Sample output:**
+**RFC8040 URL:** ``/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/table=0/flow=fm-sr-link-discovery?content=nonconfig``
 
-.. code-block:: none
-
-   <flow>
-       <id>fm-sr-link-discovery</id>
-       <flow-statistics xmlns="urn:opendaylight:flow:statistics">
-           <packet-count>536</packet-count>
-           <duration>
-               <nanosecond>174000000</nanosecond>
-               <second>2681</second>
-           </duration>
-           <byte-count>45560</byte-count>
-       </flow-statistics>
-       <priority>99</priority>
-       <table_id>0</table_id>
-       <cookie_mask>0</cookie_mask>
-       <hard-timeout>0</hard-timeout>
-       <match>
-           <ethernet-match>
-               <ethernet-type>
-                   <type>35020</type>
-               </ethernet-type>
-           </ethernet-match>
-       </match>
-       <cookie>1000000000000001</cookie>
-       <flags></flags>
-       <instructions>
-           <instruction>
-               <order>0</order>
-               <apply-actions>
-                   <action>
-                       <order>0</order>
-                       <output-action>
-                           <max-length>65535</max-length>
-                           <output-node-connector>CONTROLLER</output-node-connector>
-                       </output-action>
-                   </action>
-               </apply-actions>
-           </instruction>
-       </instructions>
-       <idle-timeout>0</idle-timeout>
-   </flow>
+**Method:** ``GET``
 
-.. note:: In the example above the flow ID fm-sr-link-discovery is internal to
+.. tabs::
+
+    .. tab:: XML
+
+        **Headers:**
+
+        **Content-type:** ``application/xml``
+
+        **Accept:** ``application/xml``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+                   <flow>
+                       <id>fm-sr-link-discovery</id>
+                       <flow-statistics xmlns="urn:opendaylight:flow:statistics">
+                           <packet-count>536</packet-count>
+                           <duration>
+                               <nanosecond>174000000</nanosecond>
+                               <second>2681</second>
+                           </duration>
+                           <byte-count>45560</byte-count>
+                       </flow-statistics>
+                       <priority>99</priority>
+                       <table_id>0</table_id>
+                       <cookie_mask>0</cookie_mask>
+                       <hard-timeout>0</hard-timeout>
+                       <match>
+                           <ethernet-match>
+                               <ethernet-type>
+                                   <type>35020</type>
+                               </ethernet-type>
+                           </ethernet-match>
+                       </match>
+                       <cookie>1000000000000001</cookie>
+                       <flags></flags>
+                       <instructions>
+                           <instruction>
+                               <order>0</order>
+                               <apply-actions>
+                                   <action>
+                                       <order>0</order>
+                                       <output-action>
+                                           <max-length>65535</max-length>
+                                           <output-node-connector>CONTROLLER</output-node-connector>
+                                       </output-action>
+                                   </action>
+                               </apply-actions>
+                           </instruction>
+                       </instructions>
+                       <idle-timeout>0</idle-timeout>
+                   </flow>
+
+    .. tab:: JSON
+
+        **Headers:**
+
+        **Content-type:** ``application/json``
+
+        **Accept:** ``application/json``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           {
+                "flow-node-inventory:flow": [
+                    {
+                        "id": "fm-sr-link-discovery",
+                        "table_id": 0,
+                        "opendaylight-flow-statistics:flow-statistics": {
+                            "duration": {
+                                "second": 2681,
+                                "nanosecond": 174000000
+                            },
+                            "packet-count": 536,
+                            "byte-count": 45560
+                        },
+                        "priority": 99,
+                        "hard-timeout": 0,
+                        "match": {
+                            "ethernet-match": {
+                                "ethernet-type": {
+                                    "type": 35020
+                                }
+                            }
+                        },
+                        "cookie_mask": 0,
+                        "cookie": 1000000000000001,
+                        "flags": "",
+                        "instructions": {
+                            "instruction": [
+                                {
+                                    "order": 0,
+                                    "apply-actions": {
+                                        "action": [
+                                            {
+                                                "order": 0,
+                                                "output-action": {
+                                                    "output-node-connector": "CONTROLLER",
+                                                    "max-length": 65535
+                                                }
+                                            }
+                                        ]
+                                    }
+                                }
+                            ]
+                        },
+                        "idle-timeout": 0
+                    }
+                ]
+            }
+
+.. note:: In the examples above the flow ID fm-sr-link-discovery is internal to
           the controller and has to match the datastore configured flow ID.
           For more information see flow ID match section
           :ref:`flow-id-match-function`.
@@ -438,66 +811,135 @@ Example of group description and group statistics
 To view the group description and group statistics, send the following request
 to the controller:
 
-**Headers:**
-
--  **Content-type:** ``application/xml``
-
--  **Accept:** ``application/xml``
-
--  **Authentication:** ``admin:admin``
-
 **URL:** ``/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/group/2``
 
-**Method:** ``GET``
-
-**Sample output:**
+**RFC8040 URL:** ``/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/group=2?content=nonconfig``
 
-.. code-block:: none
+**Method:** ``GET``
 
-   <group xmlns="urn:opendaylight:flow:inventory">
-      <group-id>2</group-id>
-      <buckets>
-           <bucket>
-               <bucket-id>0</bucket-id>
-               <action>
-                   <order>1</order>
-                   <output-action>
-                       <max-length>0</max-length>
-                       <output-node-connector>2</output-node-connector>
-                   </output-action>
-               </action>
-               <action>
-                   <order>0</order>
-                   <pop-mpls-action>
-                       <ethernet-type>34887</ethernet-type>
-                   </pop-mpls-action>
-               </action>
-               <watch_group>4294967295</watch_group>
-               <weight>0</weight>
-               <watch_port>2</watch_port>
-           </bucket>
-      </buckets>
-      <group-type>group-ff</group-type>
-      <group-statistics xmlns="urn:opendaylight:group:statistics">
-           <buckets>
-               <bucket-counter>
-                   <bucket-id>0</bucket-id>
+.. tabs::
+
+    .. tab:: XML
+
+        **Headers:**
+
+        **Content-type:** ``application/xml``
+
+        **Accept:** ``application/xml``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           <group xmlns="urn:opendaylight:flow:inventory">
+              <group-id>2</group-id>
+              <buckets>
+                   <bucket>
+                       <bucket-id>0</bucket-id>
+                       <action>
+                           <order>1</order>
+                           <output-action>
+                               <max-length>0</max-length>
+                               <output-node-connector>2</output-node-connector>
+                           </output-action>
+                       </action>
+                       <action>
+                           <order>0</order>
+                           <pop-mpls-action>
+                               <ethernet-type>34887</ethernet-type>
+                           </pop-mpls-action>
+                       </action>
+                       <watch_group>4294967295</watch_group>
+                       <weight>0</weight>
+                       <watch_port>2</watch_port>
+                   </bucket>
+              </buckets>
+              <group-type>group-ff</group-type>
+              <group-statistics xmlns="urn:opendaylight:group:statistics">
+                   <buckets>
+                       <bucket-counter>
+                           <bucket-id>0</bucket-id>
+                           <packet-count>0</packet-count>
+                           <byte-count>0</byte-count>
+                       </bucket-counter>
+                   </buckets>
+                   <group-id>2</group-id>
                    <packet-count>0</packet-count>
                    <byte-count>0</byte-count>
-               </bucket-counter>
-           </buckets>
-           <group-id>2</group-id>
-           <packet-count>0</packet-count>
-           <byte-count>0</byte-count>
-           <duration>
-               <second>4116</second>
-               <nanosecond>746000000</nanosecond>
-           </duration>
-           <ref-count>1</ref-count>
-      </group-statistics>
-   </group>
-
-.. note:: In the example above the group ID 2 matches the switch stored
+                   <duration>
+                       <second>4116</second>
+                       <nanosecond>746000000</nanosecond>
+                   </duration>
+                   <ref-count>1</ref-count>
+              </group-statistics>
+           </group>
+
+    .. tab:: JSON
+
+        **Headers:**
+
+        **Content-type:** ``application/json``
+
+        **Accept:** ``application/json``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           {
+                "flow-node-inventory:group": [
+                    {
+                        "group-id": 2,
+                        "buckets": {
+                            "bucket": [
+                                {
+                                    "bucket-id": 0,
+                                    "watch_group": 4294967295,
+                                    "action": [
+                                        {
+                                            "order": 0,
+                                            "pop-mpls-action": {
+                                                "ethernet-type": 34887
+                                            }
+                                        },
+                                        {
+                                            "order": 1,
+                                            "output-action": {
+                                                "output-node-connector": "2",
+                                                "max-length": 0
+                                            }
+                                        }
+                                    ],
+                                    "weight": 0,
+                                    "watch_port": 2
+                                }
+                            ]
+                        },
+                        "group-type": "group-ff",
+                        "opendaylight-group-statistics:group-statistics": {
+                            "byte-count": 0,
+                            "group-id": 2,
+                            "buckets": {
+                                "bucket-counter": [
+                                    {
+                                        "bucket-id": 0,
+                                        "packet-count": 0,
+                                        "byte-count": 0
+                                    }
+                                ]
+                            },
+                            "duration": {
+                                "nanosecond": 746000000,
+                                "second": 4116
+                            },
+                            "ref-count": 1,
+                            "packet-count": 0
+                        }
+                    }
+                ]
+            }
+
+.. note:: In the examples above the group ID 2 matches the switch stored
           group ID.
 
 .. _example-of-meter-description-and-meter-statistics:
@@ -508,58 +950,116 @@ Example of meter description and meter statistics
 To view the meter description and meter statistics, send the following request
 to the controller:
 
-**Headers:**
-
--  **Content-type:** ``application/xml``
-
--  **Accept:** ``application/xml``
-
--  **Authentication:** ``admin:admin``
-
 **URL:** ``/restconf/operational/opendaylight-inventory:nodes/node/openflow:1/meter/2``
 
-**Method:** ``GET``
+**RFC8040 URL:** ``/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/meter=2?content=nonconfig``
 
-**Sample output:**
+**Method:** ``GET``
 
-.. code-block:: none
+.. tabs::
+
+    .. tab:: XML
+
+        **Headers:**
+
+        **Content-type:** ``application/xml``
+
+        **Accept:** ``application/xml``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           <?xml version="1.0"?>
+           <meter xmlns="urn:opendaylight:flow:inventory">
+             <meter-id>2</meter-id>
+             <flags>meter-kbps</flags>
+             <meter-statistics xmlns="urn:opendaylight:meter:statistics">
+               <packet-in-count>0</packet-in-count>
+               <byte-in-count>0</byte-in-count>
+               <meter-band-stats>
+                 <band-stat>
+                   <band-id>0</band-id>
+                   <byte-band-count>0</byte-band-count>
+                   <packet-band-count>0</packet-band-count>
+                 </band-stat>
+               </meter-band-stats>
+               <duration>
+                 <nanosecond>364000000</nanosecond>
+                 <second>114</second>
+               </duration>
+               <meter-id>2</meter-id>
+               <flow-count>0</flow-count>
+             </meter-statistics>
+             <meter-band-headers>
+               <meter-band-header>
+                 <band-id>0</band-id>
+                 <band-rate>100</band-rate>
+                 <band-burst-size>0</band-burst-size>
+                 <meter-band-types>
+                   <flags>ofpmbt-drop</flags>
+                 </meter-band-types>
+                 <drop-burst-size>0</drop-burst-size>
+                 <drop-rate>100</drop-rate>
+               </meter-band-header>
+             </meter-band-headers>
+           </meter>
+
+    .. tab:: JSON
+
+        **Headers:**
+
+        **Content-type:** ``application/json``
+
+        **Accept:** ``application/json``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           {
+                "flow-node-inventory:meter": [
+                   {
+                        "meter-id": 2,
+                        "meter-band-headers": {
+                            "meter-band-header": [
+                                {
+                                    "band-id": 0,
+                                    "drop-rate": 100,
+                                    "drop-burst-size": 0,
+                                    "band-rate": 100,
+                                    "band-burst-size": 0,
+                                    "meter-band-types": {
+                                        "flags": "ofpmbt-drop"
+                                    }
+                                }
+                            ]
+                        },
+                        "opendaylight-meter-statistics:meter-statistics": {
+                            "packet-in-count": 0,
+                            "flow-count": 0,
+                            "meter-id": 2,
+                            "byte-in-count": 0,
+                            "meter-band-stats": {
+                                "band-stat": [
+                                    {
+                                        "band-id": 0,
+                                        "packet-band-count": 0,
+                                        "byte-band-count": 0
+                                    }
+                                ]
+                            },
+                            "duration": {
+                                "nanosecond": 364000000,
+                                "second": 114
+                            }
+                        },
+                        "flags": "meter-kbps"
+                    }
+                ]
+            }
 
-   <?xml version="1.0"?>
-   <meter xmlns="urn:opendaylight:flow:inventory">
-     <meter-id>2</meter-id>
-     <flags>meter-kbps</flags>
-     <meter-statistics xmlns="urn:opendaylight:meter:statistics">
-       <packet-in-count>0</packet-in-count>
-       <byte-in-count>0</byte-in-count>
-       <meter-band-stats>
-         <band-stat>
-           <band-id>0</band-id>
-           <byte-band-count>0</byte-band-count>
-           <packet-band-count>0</packet-band-count>
-         </band-stat>
-       </meter-band-stats>
-       <duration>
-         <nanosecond>364000000</nanosecond>
-         <second>114</second>
-       </duration>
-       <meter-id>2</meter-id>
-       <flow-count>0</flow-count>
-     </meter-statistics>
-     <meter-band-headers>
-       <meter-band-header>
-         <band-id>0</band-id>
-         <band-rate>100</band-rate>
-         <band-burst-size>0</band-burst-size>
-         <meter-band-types>
-           <flags>ofpmbt-drop</flags>
-         </meter-band-types>
-         <drop-burst-size>0</drop-burst-size>
-         <drop-rate>100</drop-rate>
-       </meter-band-header>
-     </meter-band-headers>
-   </meter>
-
-.. note:: In the example above the meter ID 2 matches the switch stored
+.. note:: In the examples above the meter ID 2 matches the switch stored
           meter ID.
 
 .. _openflow-programming-overview:
@@ -592,55 +1092,110 @@ This example programs a flow that matches IPv4 packets (ethertype 0x800)
 with destination address in the 10.0.10.0/24 subnet and sends them to port 1.
 The flow is installed in table 0 of the switch with datapath ID 1.
 
-**Headers:**
+**URL:** ``/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/1``
 
--  **Content-type:** ``application/xml``
+**RFC8040 URL:** ``/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/table=0/flow=1``
 
--  **Accept:** ``application/xml``
+**Method:** ``PUT``
 
--  **Authentication:** ``admin:admin``
+.. tabs::
 
-**URL:** ``/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/1``
+    .. tab:: XML
 
-**Method:** ``PUT``
+        **Headers:**
 
-**Request body:**
+        **Content-type:** ``application/xml``
 
-.. code-block:: none
+        **Accept:** ``application/xml``
 
-   <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-   <flow xmlns="urn:opendaylight:flow:inventory">
-       <hard-timeout>0</hard-timeout>
-       <idle-timeout>0</idle-timeout>
-       <cookie>1</cookie>
-       <priority>2</priority>
-       <flow-name>flow1</flow-name>
-       <match>
-           <ethernet-match>
-               <ethernet-type>
-                   <type>2048</type>
-               </ethernet-type>
-           </ethernet-match>
-           <ipv4-destination>10.0.10.0/24</ipv4-destination>
-       </match>
-       <id>1</id>
-       <table_id>0</table_id>
-       <instructions>
-           <instruction>
-               <order>0</order>
-               <apply-actions>
-                   <action>
-                       <output-action>
-                           <output-node-connector>1</output-node-connector>
-                       </output-action>
-                       <order>0</order>
-                   </action>
-               </apply-actions>
-           </instruction>
-       </instructions>
-   </flow>
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
 
-.. note:: In the example above the flow ID 1 is internal to the controller and
+           <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+           <flow xmlns="urn:opendaylight:flow:inventory">
+               <hard-timeout>0</hard-timeout>
+               <idle-timeout>0</idle-timeout>
+               <cookie>1</cookie>
+               <priority>2</priority>
+               <flow-name>flow1</flow-name>
+               <match>
+                   <ethernet-match>
+                       <ethernet-type>
+                           <type>2048</type>
+                       </ethernet-type>
+                   </ethernet-match>
+                   <ipv4-destination>10.0.10.0/24</ipv4-destination>
+               </match>
+               <id>1</id>
+               <table_id>0</table_id>
+               <instructions>
+                   <instruction>
+                       <order>0</order>
+                       <apply-actions>
+                           <action>
+                               <output-action>
+                                   <output-node-connector>1</output-node-connector>
+                               </output-action>
+                               <order>0</order>
+                           </action>
+                       </apply-actions>
+                   </instruction>
+               </instructions>
+           </flow>
+
+    .. tab:: JSON
+
+        **Headers:**
+
+        **Content-type:** ``application/json``
+
+        **Accept:** ``application/json``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           {
+                "flow-node-inventory:flow": [
+                    {
+                        "id": "1",
+                        "priority": 2,
+                        "table_id": 0,
+                        "hard-timeout": 0,
+                        "match": {
+                            "ethernet-match": {
+                                "ethernet-type": {
+                                    "type": 2048
+                                }
+                            },
+                            "ipv4-destination": "10.0.10.0/24"
+                        },
+                        "cookie": 1,
+                        "flow-name": "flow1",
+                        "instructions": {
+                            "instruction": [
+                                {
+                                    "order": 0,
+                                    "apply-actions": {
+                                        "action": [
+                                            {
+                                                "order": 0,
+                                                "output-action": {
+                                                    "output-node-connector": "1"
+                                                }
+                                            }
+                                        ]
+                                    }
+                                }
+                            ]
+                        },
+                        "idle-timeout": 0
+                    }
+                ]
+            }
+
+.. note:: In the examples above the flow ID 1 is internal to the controller and
           the same ID can be found when retrieving the flow statistics if
           controller finds a match between the configured flow and the flow
           received from switch. For more information see flow ID match section
@@ -674,6 +1229,8 @@ ID 1.
 
 **URL:** ``/restconf/config/opendaylight-inventory:nodes/node/openflow:1/table/0/flow/1``
 
+**RFC8040 URL:** ``/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/table=0/flow=1``
+
 **Method:** ``DELETE``
 
 You can also use the below URL to delete all flows in table 0 of the switch
@@ -691,49 +1248,99 @@ This example programs a flow that matches IPv4 packets (ethertype 0x800)
 with destination address in the 10.0.10.0/24 subnet and sends them to port 1.
 The flow is installed in table 0 of the switch with datapath ID 1.
 
-**Headers:**
+**URL:** ``/restconf/operations/sal-flow:add-flow``
 
--  **Content-type:** ``application/xml``
+**RFC8040 URL:** ``/rests/operations/sal-flow:add-flow``
 
--  **Accept:** ``application/xml``
+**Method:** ``POST``
 
--  **Authentication:** ``admin:admin``
+.. tabs::
 
-**URL:** ``/restconf/operations/sal-flow:add-flow``
+    .. tab:: XML
 
-**Method:** ``POST``
+        **Headers:**
 
-**Request body:**
+        **Content-type:** ``application/xml``
 
-.. code-block:: none
+        **Accept:** ``application/xml``
 
-   <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-   <input xmlns="urn:opendaylight:flow:service">
-       <node xmlns:inv="urn:opendaylight:inventory">/inv:nodes/inv:node[inv:id="openflow:1"]</node>
-       <table_id>0</table_id>
-       <priority>2</priority>
-       <match>
-           <ethernet-match>
-               <ethernet-type>
-                   <type>2048</type>
-               </ethernet-type>
-           </ethernet-match>
-           <ipv4-destination>10.0.1.0/24</ipv4-destination>
-       </match>
-       <instructions>
-           <instruction>
-               <order>0</order>
-               <apply-actions>
-                   <action>
-                       <output-action>
-                           <output-node-connector>1</output-node-connector>
-                       </output-action>
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+           <input xmlns="urn:opendaylight:flow:service">
+               <node xmlns:inv="urn:opendaylight:inventory">/inv:nodes/inv:node[inv:id="openflow:1"]</node>
+               <table_id>0</table_id>
+               <priority>2</priority>
+               <match>
+                   <ethernet-match>
+                       <ethernet-type>
+                           <type>2048</type>
+                       </ethernet-type>
+                   </ethernet-match>
+                   <ipv4-destination>10.0.1.0/24</ipv4-destination>
+               </match>
+               <instructions>
+                   <instruction>
                        <order>0</order>
-                   </action>
-               </apply-actions>
-           </instruction>
-       </instructions>
-   </input>
+                       <apply-actions>
+                           <action>
+                               <output-action>
+                                   <output-node-connector>1</output-node-connector>
+                               </output-action>
+                               <order>0</order>
+                           </action>
+                       </apply-actions>
+                   </instruction>
+               </instructions>
+           </input>
+
+    .. tab:: JSON
+
+        **Headers:**
+
+        **Content-type:** ``application/json``
+
+        **Accept:** ``application/json``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           {
+                "input": {
+                    "node": "/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:1']",
+                    "table_id": 0,
+                    "priority": 2,
+                    "match": {
+                        "ipv4-destination": "10.0.1.0/24",
+                        "ethernet-match": {
+                            "ethernet-type": {
+                                "type": 2048
+                            }
+                        }
+                    },
+                    "instructions": {
+                        "instruction": [
+                            {
+                                "order": 0,
+                                "apply-actions": {
+                                    "action": [
+                                        {
+                                            "order": 0,
+                                            "output-action": {
+                                                "output-node-connector": "1",
+                                                "max-length": 0
+                                            }
+                                        }
+                                    ]
+                                }
+                            }
+                        ]
+                    }
+                }
+            }
 
 .. note:: This payload does not require flow ID as this value is internal to
           controller and only used to store flows in the datastore. When
@@ -751,37 +1358,70 @@ This example removes a flow that matches IPv4 packets (ethertype 0x800)
 with destination address in the 10.0.10.0/24 subnet from table 0 of the switch
 with datapath ID 1.
 
-**Headers:**
+**URL:** ``/restconf/operations/sal-flow:remove-flow``
 
--  **Content-type:** ``application/xml``
+**RFC8040 URL:** ``/rests/operations/sal-flow:remove-flow``
 
--  **Accept:** ``application/xml``
+**Method:** ``POST``
 
--  **Authentication:** ``admin:admin``
+.. tabs::
 
-**URL:** ``/restconf/operations/sal-flow:remove-flow``
+    .. tab:: XML
 
-**Method:** ``POST``
+        **Headers:**
 
-**Request body:**
+        **Content-type:** ``application/xml``
 
-.. code-block:: none
+        **Accept:** ``application/xml``
 
-   <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-   <input xmlns="urn:opendaylight:flow:service">
-       <node xmlns:inv="urn:opendaylight:inventory">/inv:nodes/inv:node[inv:id="openflow:1"]</node>
-       <table_id>0</table_id>
-       <priority>2</priority>
-       <strict>true</strict>
-       <match>
-           <ethernet-match>
-               <ethernet-type>
-                   <type>2048</type>
-               </ethernet-type>
-           </ethernet-match>
-           <ipv4-destination>10.0.10.0/24</ipv4-destination>
-       </match>
-   </input>
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+           <input xmlns="urn:opendaylight:flow:service">
+               <node xmlns:inv="urn:opendaylight:inventory">/inv:nodes/inv:node[inv:id="openflow:1"]</node>
+               <table_id>0</table_id>
+               <priority>2</priority>
+               <strict>true</strict>
+               <match>
+                   <ethernet-match>
+                       <ethernet-type>
+                           <type>2048</type>
+                       </ethernet-type>
+                   </ethernet-match>
+                   <ipv4-destination>10.0.10.0/24</ipv4-destination>
+               </match>
+           </input>
+
+    .. tab:: JSON
+
+        **Headers:**
+
+        **Content-type:** ``application/json``
+
+        **Accept:** ``application/json``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           {
+                "input": {
+                    "node": "/opendaylight-inventory:nodes/opendaylight-inventory:node[opendaylight-inventory:id='openflow:1']",
+                    "table_id": 0,
+                    "priority": 2,
+                    "strict": true,
+                    "match": {
+                        "ipv4-destination": "10.0.1.0/24",
+                        "ethernet-match": {
+                            "ethernet-type": {
+                                "type": 2048
+                            }
+                        }
+                    }
+                }
+            }
 
 To verify that the flow has been correctly programmed in the switch, issue the
 RESTCONF request as provided in :ref:`example-of-table-statistics`.
@@ -792,51 +1432,106 @@ Example of a group programming by using config datastore
 This example programs a select group to equally load balance traffic across
 port 1 and port 2 in switch with datapath ID 1.
 
-**Headers:**
+**URL:** ``/restconf/config/opendaylight-inventory:nodes/node/openflow:1/group/2``
 
--  **Content-type:** ``application/json``
-
--  **Accept:** ``application/json``
-
--  **Authentication:** ``admin:admin``
-
-**URL:** ``/restconf/config/opendaylight-inventory:nodes/node/openflow:1/group/1``
+**RFC8040 URL:** ``/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/group=2``
 
 **Method:** ``PUT``
 
-**Request body:**
-
-.. code-block:: none
-
-   <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-   <group xmlns="urn:opendaylight:flow:inventory">
-     <group-type>group-select</group-type>
-     <buckets>
-         <bucket>
-          <weight>1</weight>
-             <action>
-                 <output-action>
-                     <output-node-connector>1</output-node-connector>
-                 </output-action>
-                 <order>1</order>
-             </action>
-             <bucket-id>1</bucket-id>
-         </bucket>
-         <bucket>
-           <weight>1</weight>
-             <action>
-                 <output-action>
-                     <output-node-connector>2</output-node-connector>
-                 </output-action>
-                 <order>1</order>
-             </action>
-             <bucket-id>2</bucket-id>
-         </bucket>
-     </buckets>
-     <barrier>false</barrier>
-     <group-name>SelectGroup</group-name>
-     <group-id>1</group-id>
-   </group>
+.. tabs::
+
+    .. tab:: XML
+
+        **Headers:**
+
+        **Content-type:** ``application/xml``
+
+        **Accept:** ``application/xml``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+           <group xmlns="urn:opendaylight:flow:inventory">
+             <group-type>group-select</group-type>
+             <buckets>
+                 <bucket>
+                  <weight>1</weight>
+                     <action>
+                         <output-action>
+                             <output-node-connector>1</output-node-connector>
+                         </output-action>
+                         <order>1</order>
+                     </action>
+                     <bucket-id>1</bucket-id>
+                 </bucket>
+                 <bucket>
+                   <weight>1</weight>
+                     <action>
+                         <output-action>
+                             <output-node-connector>2</output-node-connector>
+                         </output-action>
+                         <order>1</order>
+                     </action>
+                     <bucket-id>2</bucket-id>
+                 </bucket>
+             </buckets>
+             <barrier>false</barrier>
+             <group-name>SelectGroup</group-name>
+             <group-id>2</group-id>
+           </group>
+
+    .. tab:: JSON
+
+        **Headers:**
+
+        **Content-type:** ``application/json``
+
+        **Accept:** ``application/json``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           {
+                "flow-node-inventory:group": [
+                    {
+                        "group-id": 2,
+                        "barrier": false,
+                        "group-name": "SelectGroup",
+                        "buckets": {
+                            "bucket": [
+                                {
+                                    "bucket-id": 1,
+                                    "weight": 1,
+                                    "action": [
+                                        {
+                                            "order": 1,
+                                            "output-action": {
+                                                "output-node-connector": "1"
+                                            }
+                                        }
+                                    ]
+                                },
+                                {
+                                    "bucket-id": 2,
+                                    "weight": 1,
+                                    "action": [
+                                        {
+                                            "order": 1,
+                                            "output-action": {
+                                                "output-node-connector": "2"
+                                            }
+                                        }
+                                    ]
+                                }
+                            ]
+                        },
+                        "group-type": "group-select"
+                    }
+                ]
+            }
 
 .. note:: In the example above the group ID 1 will be stored in the switch
           and will be used by the switch to report group statistics.
@@ -877,7 +1572,9 @@ This example deletes the group ID 1 in the switch with datapath ID 1.
 
 -  **Authentication:** ``admin:admin``
 
-**URL:** ``/restconf/config/opendaylight-inventory:nodes/node/openflow:1/group/1``
+**URL:** ``/restconf/config/opendaylight-inventory:nodes/node/openflow:1/group/2``
+
+**RFC8040 URL:** ``/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/group=2``
 
 **Method:** ``DELETE``
 
@@ -887,38 +1584,76 @@ Example of a meter programming by using config datastore
 This example programs a meter to drop traffic exceeding 256 kbps with a burst
 size of 512 in switch with datapath ID 1.
 
-**Headers:**
+**URL:** ``/restconf/config/opendaylight-inventory:nodes/node/openflow:1/meter/2``
 
--  **Content-type:** ``application/json``
+**RFC8040 URL:** ``/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/meter=2``
 
--  **Accept:** ``application/json``
+**Method:** ``PUT``
 
--  **Authentication:** ``admin:admin``
+.. tabs::
 
-**URL:** ``/restconf/config/opendaylight-inventory:nodes/node/openflow:1/meter/1``
+    .. tab:: XML
 
-**Method:** ``PUT``
+        **Headers:**
 
-**Request body:**
+        **Content-type:** ``application/xml``
 
-.. code-block:: none
+        **Accept:** ``application/xml``
 
-   <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-   <meter xmlns="urn:opendaylight:flow:inventory">
-       <flags>meter-kbps</flags>
-       <meter-band-headers>
-           <meter-band-header>
-               <band-id>0</band-id>
-               <drop-rate>256</drop-rate>
-               <drop-burst-size>512</drop-burst-size>
-               <meter-band-types>
-                   <flags>ofpmbt-drop</flags>
-               </meter-band-types>
-           </meter-band-header>
-       </meter-band-headers>
-       <meter-id>1</meter-id>
-       <meter-name>Foo</meter-name>
-   </meter>
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           <?xml version="1.0" encoding="UTF-8" standalone="no"?>
+           <meter xmlns="urn:opendaylight:flow:inventory">
+               <flags>meter-kbps</flags>
+               <meter-band-headers>
+                   <meter-band-header>
+                       <band-id>0</band-id>
+                       <drop-rate>256</drop-rate>
+                       <drop-burst-size>512</drop-burst-size>
+                       <meter-band-types>
+                           <flags>ofpmbt-drop</flags>
+                       </meter-band-types>
+                   </meter-band-header>
+               </meter-band-headers>
+               <meter-id>2</meter-id>
+               <meter-name>Foo</meter-name>
+           </meter>
+
+    .. tab:: JSON
+
+        **Headers:**
+
+        **Content-type:** ``application/json``
+
+        **Accept:** ``application/json``
+
+        **Authentication:** ``admin:admin``
+
+        .. code-block:: none
+
+           {
+                "flow-node-inventory:meter": [
+                    {
+                        "meter-id": 2,
+                        "meter-band-headers": {
+                            "meter-band-header": [
+                                {
+                                    "band-id": 0,
+                                    "drop-rate": 256,
+                                    "drop-burst-size": 512,
+                                    "meter-band-types": {
+                                        "flags": "ofpmbt-drop"
+                                    }
+                                }
+                            ]
+                        },
+                        "flags": "meter-kbps",
+                        "meter-name": "Foo"
+                    }
+                ]
+            }
 
 .. note:: In the example above the meter ID 1 will be stored in the switch
           and will be used by the switch to report group statistics.
@@ -959,7 +1694,9 @@ This example deletes the meter ID 1 in the switch with datapath ID 1.
 
 -  **Authentication:** ``admin:admin``
 
-**URL:** ``/restconf/config/opendaylight-inventory:nodes/node/openflow:1/meter/1``
+**URL:** ``/restconf/config/opendaylight-inventory:nodes/node/openflow:1/meter/2``
+
+**RFC8040 URL:** ``/rests/data/opendaylight-inventory:nodes/node=openflow%3A1/meter=2``
 
 **Method:** ``DELETE``
 
@@ -1103,13 +1840,15 @@ following request to the controller:
 
 **URL:** ``/restconf/operational/entity-owners:entity-owners``
 
+**RFC8040 URL:** ``/rests/data/entity-owners:entity-owners?content=nonconfig``
+
 **Method:** ``GET``
 
-**Sample output:**
+**Sample JSON output:**
 
 .. code-block:: none
 
-       {
+   {
           "entity-owners":{
              "entity-type":[
                 {
@@ -1198,7 +1937,7 @@ following request to the controller:
           }
        }
 
-In the above sample output, ``member 3`` is the master controller
+In the above sample outputs, ``member 3`` is the master controller
 (EOS owner) for the OpenFlow device with datapath ID ``1``, and
 ``member-1`` is the master controller (EOS owner) for the OpenFlow
 devices with the datapath IDs of ``2`` and ``3``.