OpenApi: Improve test coverage 86/108686/7
authorlubos-cicut <lubos.cicut@pantheon.tech>
Thu, 26 Oct 2023 13:55:22 +0000 (15:55 +0200)
committerIvan Hrasko <ivan.hrasko@pantheon.tech>
Mon, 20 Nov 2023 13:16:30 +0000 (13:16 +0000)
Created new tests which are expecting JSON outputs. Created suites for
models we are using in current unit tests.

JIRA: NETCONF-938
Change-Id: I8445ac3754b9e4cb604be36f517f1b75abfc27e6
Signed-off-by: lubos-cicut <lubos.cicut@pantheon.tech>
46 files changed:
restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/OperationalDocumentTest.java [new file with mode: 0644]
restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/ToasterDocumentTest.java [moved from restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/SwaggerDocumentTest.java with 89% similarity]
restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/YangDocumentTest.java [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/operational-document/controller-action-types.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/operational-document/controller-all.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/operational-document/controller-operational.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/operational-document/device-action-types.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/operational-document/device-all.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/operational-document/device-operational.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/toaster-document/controller-all.json [moved from restconf/restconf-openapi/src/test/resources/openapi-document/controller-all.json with 100% similarity]
restconf/restconf-openapi/src/test/resources/toaster-document/controller-toaster.json [moved from restconf/restconf-openapi/src/test/resources/openapi-document/controller-toaster.json with 98% similarity]
restconf/restconf-openapi/src/test/resources/toaster-document/device-all.json [moved from restconf/restconf-openapi/src/test/resources/openapi-document/device-all.json with 100% similarity]
restconf/restconf-openapi/src/test/resources/toaster-document/device-toaster.json [moved from restconf/restconf-openapi/src/test/resources/openapi-document/device-toaster.json with 98% similarity]
restconf/restconf-openapi/src/test/resources/toaster-document/toaster.yang [moved from restconf/restconf-openapi/src/test/resources/openapi-document/toaster.yang with 100% similarity]
restconf/restconf-openapi/src/test/resources/yang-document/controller-action-types.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-all.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-choice-test.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-definition-test.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-mandatory-test.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-my-yang.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-opflex.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-path-params-test.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-recursive.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-string-from-regex.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-string-types.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-test-container-childs.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-toaster-augmented.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-toaster.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-toaster2.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-typed-params.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-action-types.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-all.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-choice-test.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-definition-test.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-mandatory-test.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-my-yang.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-opflex.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-path-params-test.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-recursive.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-string-from-regex.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-string-types.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-test-container-childs.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-toaster-augmented.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-toaster.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-toaster2.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-typed-params.json [new file with mode: 0644]

diff --git a/restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/OperationalDocumentTest.java b/restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/OperationalDocumentTest.java
new file mode 100644 (file)
index 0000000..5eb3cda
--- /dev/null
@@ -0,0 +1,166 @@
+/*
+ * Copyright (c) 2023 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.restconf.openapi.impl;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.util.Optional;
+import org.glassfish.jersey.internal.util.collection.ImmutableMultivaluedMap;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.opendaylight.mdsal.dom.api.DOMMountPoint;
+import org.opendaylight.mdsal.dom.api.DOMMountPointService;
+import org.opendaylight.mdsal.dom.api.DOMSchemaService;
+import org.opendaylight.restconf.openapi.DocGenTestHelper;
+import org.opendaylight.restconf.openapi.api.OpenApiService;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
+import org.skyscreamer.jsonassert.JSONAssert;
+import org.skyscreamer.jsonassert.JSONCompareMode;
+
+public class OperationalDocumentTest {
+    private static final ObjectMapper MAPPER = new ObjectMapper();
+    /**
+     * We want flexibility in comparing the resulting JSONs by not enforcing strict ordering of array contents.
+     * This comparison mode allows us to do that and also to restrict extensibility (extensibility = additional fields)
+     */
+    private static final JSONCompareMode IGNORE_ORDER = JSONCompareMode.NON_EXTENSIBLE;
+    private static final String ACTION_TYPES = "action-types";
+    private static final String OPERATIONAL = "operational";
+    private static final YangInstanceIdentifier INSTANCE_ID = YangInstanceIdentifier.builder()
+        .node(QName.create("", "nodes"))
+        .node(QName.create("", "node"))
+        .nodeWithKey(QName.create("", "node"), QName.create("", "id"), "123").build();
+
+    private static OpenApiService openApiService;
+
+    @BeforeClass
+    public static void beforeClass() {
+        final var schemaService = mock(DOMSchemaService.class);
+        final var context = YangParserTestUtils.parseYangResourceDirectory("/operational/");
+        when(schemaService.getGlobalContext()).thenReturn(context);
+
+        final var mountPoint = mock(DOMMountPoint.class);
+        when(mountPoint.getService(DOMSchemaService.class)).thenReturn(Optional.of(schemaService));
+
+        final var service = mock(DOMMountPointService.class);
+        when(service.getMountPoint(INSTANCE_ID)).thenReturn(Optional.of(mountPoint));
+
+        final var mountPointRFC8040 = new MountPointOpenApiGeneratorRFC8040(schemaService, service);
+        final var openApiGeneratorRFC8040 = new OpenApiGeneratorRFC8040(schemaService);
+        mountPointRFC8040.getMountPointOpenApi().onMountPointCreated(INSTANCE_ID);
+        openApiService = new OpenApiServiceImpl(mountPointRFC8040, openApiGeneratorRFC8040);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/single' endpoint.
+     */
+    @Test
+    public void getAllModulesDocTest() throws Exception {
+        final var getAllController = DocGenTestHelper.createMockUriInfo("http://localhost:8181/openapi/api/v3/single");
+        final var controllerDocAll = openApiService.getAllModulesDoc(getAllController).getEntity();
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocAll);
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("operational-document/controller-all.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/action-types' endpoint.
+     *
+     * <p>
+     * Model action-types is used for test correct generating of action statements for openapi.
+     */
+    @Test
+    public void getDocActionTypesTest() throws Exception {
+        final var getActionTypesController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/action-types");
+        final var controllerDocActionTypes = openApiService.getDocByModule(ACTION_TYPES, null,
+            getActionTypesController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocActionTypes.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream(
+                "operational-document/controller-action-types.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/operational' endpoint.
+     *
+     * <p>
+     * Model operational is used for test correct generating of operational parameters for openapi.
+     */
+    @Test
+    public void getDocOperationalTest() throws Exception {
+        final var getOperationalController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/operational");
+        final var controllerDocOperational = openApiService.getDocByModule(OPERATIONAL, null,
+            getOperationalController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("operational-document/controller-operational.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1' endpoint.
+     */
+    @Test
+    public void getMountDocTest() throws Exception {
+        final var getAllDevice = DocGenTestHelper.createMockUriInfo("http://localhost:8181/openapi/api/v3/mounts/1");
+        when(getAllDevice.getQueryParameters()).thenReturn(ImmutableMultivaluedMap.empty());
+        final var deviceDocAll = openApiService.getMountDoc("1", getAllDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocAll.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("operational-document/device-all.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/action-types' endpoint.
+     *
+     * <p>
+     * Model action-types is used for test correct generating of action statements for openapi.
+     */
+    @Test
+    public void getMountDocActionTypesTest() throws Exception {
+        final var getActionTypesDevice = DocGenTestHelper.createMockUriInfo("http://localhost:8181/openapi/api/v3/mounts/1/action-types");
+        final var deviceDocActionTypes = openApiService.getMountDocByModule("1", ACTION_TYPES, null,
+            getActionTypesDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocActionTypes.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("operational-document/device-action-types.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/operational' endpoint.
+     *
+     * <p>
+     * Model operational is used for test correct generating of operational parameters for openapi.
+     */
+    @Test
+    public void getMountDocOperationalTest() throws Exception {
+        final var getOperationalDevice = DocGenTestHelper.createMockUriInfo("http://localhost:8181/openapi/api/v3/mounts/1/operational");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", OPERATIONAL, null,
+            getOperationalDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("operational-document/device-operational.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+}
similarity index 89%
rename from restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/SwaggerDocumentTest.java
rename to restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/ToasterDocumentTest.java
index 70132482a2978db5b6f9173a0ea8790a2814c4c2..f81326fd1b82c1b6870035295d9217344465a9c1 100644 (file)
@@ -26,7 +26,7 @@ import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
 import org.skyscreamer.jsonassert.JSONAssert;
 import org.skyscreamer.jsonassert.JSONCompareMode;
 
-public class SwaggerDocumentTest {
+public class ToasterDocumentTest {
     private static final ObjectMapper MAPPER = new ObjectMapper();
     /**
      * We want flexibility in comparing the resulting JSONs by not enforcing strict ordering of array contents.
@@ -45,7 +45,7 @@ public class SwaggerDocumentTest {
     @BeforeClass
     public static void beforeClass() {
         final var schemaService = mock(DOMSchemaService.class);
-        final var context = YangParserTestUtils.parseYangResource("/openapi-document/toaster.yang");
+        final var context = YangParserTestUtils.parseYangResource("/toaster-document/toaster.yang");
         when(schemaService.getGlobalContext()).thenReturn(context);
 
         final var mountPoint = mock(DOMMountPoint.class);
@@ -70,12 +70,15 @@ public class SwaggerDocumentTest {
 
         final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocAll);
         final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
-            getClass().getClassLoader().getResourceAsStream("openapi-document/controller-all.json")));
+            getClass().getClassLoader().getResourceAsStream("toaster-document/controller-all.json")));
         JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
     }
 
     /**
      * Tests the swagger document that is result of the call to the '/toaster(2009-11-20)' endpoint.
+     *
+     * <p>
+     * Model toaster is used for test correct generating of complex openapi object.
      */
     @Test
     public void getDocByModuleTest() throws Exception {
@@ -84,7 +87,7 @@ public class SwaggerDocumentTest {
 
         final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocToaster.getEntity());
         final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
-            getClass().getClassLoader().getResourceAsStream("openapi-document/controller-toaster.json")));
+            getClass().getClassLoader().getResourceAsStream("toaster-document/controller-toaster.json")));
         JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
     }
 
@@ -99,12 +102,15 @@ public class SwaggerDocumentTest {
 
         final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocAll.getEntity());
         final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
-            getClass().getClassLoader().getResourceAsStream("openapi-document/device-all.json")));
+            getClass().getClassLoader().getResourceAsStream("toaster-document/device-all.json")));
         JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
     }
 
     /**
      * Tests the swagger document that is result of the call to the '/mounts/1/toaster(2009-11-20)' endpoint.
+     *
+     * <p>
+     * Model toaster is used for test correct generating of complex openapi object.
      */
     @Test
     public void getMountDocByModuleTest() throws Exception {
@@ -113,7 +119,7 @@ public class SwaggerDocumentTest {
 
         final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocToaster.getEntity());
         final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
-            getClass().getClassLoader().getResourceAsStream("openapi-document/device-toaster.json")));
+            getClass().getClassLoader().getResourceAsStream("toaster-document/device-toaster.json")));
         JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
     }
 }
diff --git a/restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/YangDocumentTest.java b/restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/YangDocumentTest.java
new file mode 100644 (file)
index 0000000..b15755d
--- /dev/null
@@ -0,0 +1,688 @@
+/*
+ * Copyright (c) 2023 PANTHEON.tech, s.r.o. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.opendaylight.restconf.openapi.impl;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import com.fasterxml.jackson.databind.ObjectMapper;
+import java.util.Optional;
+import org.glassfish.jersey.internal.util.collection.ImmutableMultivaluedMap;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.opendaylight.mdsal.dom.api.DOMMountPoint;
+import org.opendaylight.mdsal.dom.api.DOMMountPointService;
+import org.opendaylight.mdsal.dom.api.DOMSchemaService;
+import org.opendaylight.restconf.openapi.DocGenTestHelper;
+import org.opendaylight.restconf.openapi.api.OpenApiService;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
+import org.opendaylight.yangtools.yang.test.util.YangParserTestUtils;
+import org.skyscreamer.jsonassert.JSONAssert;
+import org.skyscreamer.jsonassert.JSONCompareMode;
+
+public class YangDocumentTest {
+    private static final ObjectMapper MAPPER = new ObjectMapper();
+    /**
+     * We want flexibility in comparing the resulting JSONs by not enforcing strict ordering of array contents.
+     * This comparison mode allows us to do that and also to restrict extensibility (extensibility = additional fields)
+     */
+    private static final JSONCompareMode IGNORE_ORDER = JSONCompareMode.NON_EXTENSIBLE;
+    private static final String ACTION_TYPES = "action-types";
+    private static final String CHOICE_TEST = "choice-test";
+    private static final String DEFINITION_TEST = "definition-test";
+    private static final String MANDATORY_TEST = "mandatory-test";
+    private static final String MY_YANG = "my-yang";
+    private static final String MY_YANG_REV = "2022-10-06";
+    private static final String OPFLEX = "opflex";
+    private static final String OPFLEX_REV = "2014-05-28";
+    private static final String PATH_PARAMS_TEST = "path-params-test";
+    private static final String RECURSIVE = "recursive";
+    private static final String RECURSIVE_REV = "2023-05-22";
+    private static final String STRING_TYPES = "string-types";
+    private static final String STRINGS_FROM_REGEX = "strings-from-regex";
+    private static final String TEST_CONTAINER_CHILDS = "test-container-childs";
+    private static final String TEST_CONTAINER_CHILDS_REV = "2023-09-28";
+    private static final String TOASTER = "toaster";
+    private static final String TOASTER_REV = "2009-11-20";
+    private static final String TOASTER_AUGMENTED = "toaster-augmented";
+    private static final String TOASTER_AUGMENTED_REV = "2014-07-14";
+    private static final String TOASTER_SHORT = "toaster2";
+    private static final String TOASTER_SHORT_REV = "2009-11-20";
+    private static final String TYPED_PARAMS = "typed-params";
+    private static final String TYPED_PARAMS_REV = "2023-10-24";
+
+    private static final YangInstanceIdentifier INSTANCE_ID = YangInstanceIdentifier.builder()
+        .node(QName.create("", "nodes"))
+        .node(QName.create("", "node"))
+        .nodeWithKey(QName.create("", "node"), QName.create("", "id"), "123").build();
+
+    private static OpenApiService openApiService;
+
+    @BeforeClass
+    public static void beforeClass() {
+        final var schemaService = mock(DOMSchemaService.class);
+        final var context = YangParserTestUtils.parseYangResourceDirectory("/yang/");
+        when(schemaService.getGlobalContext()).thenReturn(context);
+
+        final var mountPoint = mock(DOMMountPoint.class);
+        when(mountPoint.getService(DOMSchemaService.class)).thenReturn(Optional.of(schemaService));
+
+        final var service = mock(DOMMountPointService.class);
+        when(service.getMountPoint(INSTANCE_ID)).thenReturn(Optional.of(mountPoint));
+
+        final var mountPointRFC8040 = new MountPointOpenApiGeneratorRFC8040(schemaService, service);
+        final var openApiGeneratorRFC8040 = new OpenApiGeneratorRFC8040(schemaService);
+        mountPointRFC8040.getMountPointOpenApi().onMountPointCreated(INSTANCE_ID);
+        openApiService = new OpenApiServiceImpl(mountPointRFC8040, openApiGeneratorRFC8040);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/single' endpoint.
+     */
+    @Test
+    public void getAllModulesDocTest() throws Exception {
+        final var getAllController = DocGenTestHelper.createMockUriInfo("http://localhost:8181/openapi/api/v3/single");
+        final var controllerDocAll = openApiService.getAllModulesDoc(getAllController).getEntity();
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocAll);
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-all.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/action-types' endpoint.
+     *
+     * <p>
+     * Model action-types is used for test correct generating of action statements for openapi.
+     */
+    @Test
+    public void getDocActionTypesTest() throws Exception {
+        final var getActionTypesController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/action-types");
+        final var controllerDocActionTypes = openApiService.getDocByModule(ACTION_TYPES, null,
+            getActionTypesController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocActionTypes.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-action-types.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/choice-test' endpoint.
+     *
+     * <p>
+     * Model choice-test is used for test correct generation of action statements for openapi.
+     */
+    @Test
+    public void getDocChoiceTest() throws Exception {
+        final var getChoiceTestController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/choice-test");
+        final var controllerDocOperational = openApiService.getDocByModule(CHOICE_TEST, null,
+            getChoiceTestController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-choice-test.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/definition-test' endpoint.
+     *
+     * <p>
+     * Model definition-test is used for test correct generating of definition for nodes and operations for openapi.
+     */
+    @Test
+    public void getDocDefinitionTest() throws Exception {
+        final var getDefinitionTestController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/definition-test");
+        final var controllerDocOperational = openApiService.getDocByModule(DEFINITION_TEST, null,
+            getDefinitionTestController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-definition-test.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mandatory-test' endpoint.
+     *
+     * <p>
+     * Model mandatory-test is used for test correct generating of mandatory nodes for openapi.
+     */
+    @Test
+    public void getDocMandatoryTest() throws Exception {
+        final var getMandatoryTestController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mandatory-test");
+        final var controllerDocOperational = openApiService.getDocByModule(MANDATORY_TEST, null,
+            getMandatoryTestController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-mandatory-test.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+
+    /**
+     * Tests the swagger document that is result of the call to the '/my-yang(2022-10-06)' endpoint.
+     *
+     * <p>
+     * Model my-yang is used for test correct generating of simple openapi object.
+     */
+    @Test
+    public void getDocMyYangTest() throws Exception {
+        final var getMyYangController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/my-yang(2022-10-06)");
+        final var controllerDocOperational = openApiService.getDocByModule(MY_YANG, MY_YANG_REV,
+            getMyYangController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-my-yang.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/opflex' endpoint.
+     *
+     * <p>
+     * Model opflex defines the group-based policy OpFlex renderer model.
+     */
+    @Test
+    public void getDocOpflexTest() throws Exception {
+        final var getOpflexController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/opflex");
+        final var controllerDocOperational = openApiService.getDocByModule(OPFLEX, OPFLEX_REV,
+            getOpflexController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-opflex.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/path-params-test' endpoint.
+     *
+     * <p>
+     * Model path-params-test is used for test correct generating of parameters numbering for openapi.
+     */
+    @Test
+    public void getDocPathParamsTest() throws Exception {
+        final var getPathParamsController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/path-params-test");
+        final var controllerDocOperational = openApiService.getDocByModule(PATH_PARAMS_TEST, null,
+            getPathParamsController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-path-params-test.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/recursive' endpoint.
+     *
+     * <p>
+     * Model recursive is used for test correct generating of recursive parameters for openapi.
+     */
+    @Test
+    public void getDocRecursiveTest() throws Exception {
+        final var getRecursiveController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/recursive");
+        final var controllerDocOperational = openApiService.getDocByModule(RECURSIVE, RECURSIVE_REV,
+            getRecursiveController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-recursive.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/string-types' endpoint.
+     *
+     * <p>
+     * Model string-types is used for test correct generating of types with restrictions for openapi.
+     */
+    @Test
+    public void getDocStringTypesTest() throws Exception {
+        final var getStringTypesController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/string-types");
+        final var controllerDocOperational = openApiService.getDocByModule(STRING_TYPES, null,
+            getStringTypesController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-string-types.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/strings-from-regex' endpoint.
+     *
+     * <p>
+     * Model strings-from-regex is used for test correct generating of string patterns for openapi.
+     */
+    @Test
+    public void getDocStringFromRegexTest() throws Exception {
+        final var getStringFromRegexController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/strings-from-regex");
+        final var controllerDocOperational = openApiService.getDocByModule(STRINGS_FROM_REGEX, null,
+            getStringFromRegexController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-string-from-regex.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/toaster' endpoint.
+     *
+     * <p>
+     * Model toaster is used for test correct generating of complex openapi object.
+     */
+    @Test
+    public void getDocToasterTest() throws Exception {
+        final var getToasterController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/toaster");
+        final var controllerDocOperational = openApiService.getDocByModule(TOASTER, TOASTER_REV,
+            getToasterController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-toaster.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/toaster-augmented' endpoint.
+     *
+     * <p>
+     * Model toaster_augmented is used for test correct generating of augmented model for openapi.
+     */
+    @Test
+    public void getDocToasterAugmentedTest() throws Exception {
+        final var getToasterAugmentedController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/toaster-augmented");
+        final var controllerDocOperational = openApiService.getDocByModule(TOASTER_AUGMENTED, TOASTER_AUGMENTED_REV,
+            getToasterAugmentedController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-toaster-augmented.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/toaster-short' endpoint.
+     *
+     * <p>
+     * Model toaster_short is used for test correct generating of types with restrictions for openapi.
+     */
+    @Test
+    public void getDocToasterShortTest() throws Exception {
+        final var getToasterShortController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/toaster2");
+        final var controllerDocOperational = openApiService.getDocByModule(TOASTER_SHORT, TOASTER_SHORT_REV,
+            getToasterShortController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-toaster2.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/typed-params' endpoint.
+     *
+     * <p>
+     * Model typed-params is used for test correct generating of all built-in types and assignment to allowed
+     * types for openapi.
+     */
+    @Test
+    public void getDocTypedParamsTest() throws Exception {
+        final var getTypedParamsController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/typed-params");
+        final var controllerDocOperational = openApiService.getDocByModule(TYPED_PARAMS, TYPED_PARAMS_REV,
+            getTypedParamsController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-typed-params.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/test-container-childs' endpoint.
+     *
+     * <p>
+     * Model test-container-childs is used for test correct generating of min-elements, max-elements and example
+     * elements for openapi.
+     */
+    @Test
+    public void getDocContainerChildsTest() throws Exception {
+        final var getTypedParamsController = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/test-container-childs");
+        final var controllerDocOperational = openApiService.getDocByModule(TEST_CONTAINER_CHILDS,
+            TEST_CONTAINER_CHILDS_REV, getTypedParamsController);
+
+        final var jsonControllerDoc = MAPPER.writeValueAsString(controllerDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/controller-test-container-childs.json")));
+        JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1' endpoint.
+     */
+    @Test
+    public void getMountDocTest() throws Exception {
+        final var getAllDevice = DocGenTestHelper.createMockUriInfo("http://localhost:8181/openapi/api/v3/mounts/1");
+        when(getAllDevice.getQueryParameters()).thenReturn(ImmutableMultivaluedMap.empty());
+        final var deviceDocAll = openApiService.getMountDoc("1", getAllDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocAll.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-all.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/action-types' endpoint.
+     *
+     * <p>
+     * Model action-types is used for test correct generating of action statements for openapi.
+     */
+    @Test
+    public void getMountDocActionTypesTest() throws Exception {
+        final var getActionTypesDevice = DocGenTestHelper.createMockUriInfo("http://localhost:8181/openapi/api/v3/mounts/1/action-types");
+        final var deviceDocActionTypes = openApiService.getMountDocByModule("1", ACTION_TYPES, null,
+            getActionTypesDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocActionTypes.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-action-types.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/choice-test' endpoint.
+     *
+     * <p>
+     * Model choice-test is used for test correct generation of action statements for openapi.
+     */
+    @Test
+    public void getMountDocChoiceTest() throws Exception {
+        final var getChoiceTestDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/choice-test");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", CHOICE_TEST, null,
+            getChoiceTestDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-choice-test.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/definition-test' endpoint.
+     *
+     * <p>
+     * Model definition-test is used for test correct generating of definition for nodes and operations for openapi.
+     */
+    @Test
+    public void getMountDocDefinitionTest() throws Exception {
+        final var getDefinitionTestDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/definition-test");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", DEFINITION_TEST, null,
+            getDefinitionTestDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-definition-test.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/mandatory-test' endpoint.
+     *
+     * <p>
+     * Model mandatory-test is used for test correct generating of mandatory nodes for openapi.
+     */
+    @Test
+    public void getMountDocMandatoryTest() throws Exception {
+        final var getMandatoryTestDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/mandatory-test");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", MANDATORY_TEST, null,
+            getMandatoryTestDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-mandatory-test.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/my-yang(2022-10-06)' endpoint.
+     *
+     * <p>
+     * Model my-yang is used for test correct generating of simple openapi object.
+     */
+    @Test
+    public void getMountDocMyYangTest() throws Exception {
+        final var getMyYangDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/my-yang(2022-10-06)");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", MY_YANG, MY_YANG_REV,
+            getMyYangDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-my-yang.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/opflex' endpoint.
+     *
+     * <p>
+     * Model opflex defines the group-based policy OpFlex renderer model.
+     */
+    @Test
+    public void getMountDocOpflexTest() throws Exception {
+        final var getOpflexDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/opflex");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", OPFLEX, OPFLEX_REV,
+            getOpflexDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-opflex.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/path-params-test' endpoint.
+     *
+     * <p>
+     * Model path-params-test is used for test correct generating of parameters numbering for openapi.
+     */
+    @Test
+    public void getMountDocPathParamsTest() throws Exception {
+        final var getPathParamsDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/path-params-test");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", PATH_PARAMS_TEST, null,
+            getPathParamsDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-path-params-test.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/recursive' endpoint.
+     *
+     * <p>
+     * Model recursive is used for test correct generating of recursive parameters for openapi.
+     */
+    @Test
+    public void getMountDocRecursiveTest() throws Exception {
+        final var getRecursiveDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/recursive");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", RECURSIVE, RECURSIVE_REV,
+            getRecursiveDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-recursive.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/string-types' endpoint.
+     *
+     * <p>
+     * Model string-types is used for test correct generating of types with restrictions for openapi.
+     */
+    @Test
+    public void getMountDocStringTypesTest() throws Exception {
+        final var getStringTypesDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/string-types");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", STRING_TYPES, null,
+            getStringTypesDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-string-types.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/string-from-regex' endpoint.
+     *
+     * <p>
+     * Model strings-from-regex is used for test correct generating of string patterns for openapi.
+     */
+    @Test
+    public void getMountDocStringFromRegexTest() throws Exception {
+        final var getStringFromRegexDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/string-from-regex");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", STRINGS_FROM_REGEX, null,
+            getStringFromRegexDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-string-from-regex.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/toaster' endpoint.
+     *
+     * <p>
+     * Model toaster is used for test correct generating of complex openapi object.
+     */
+    @Test
+    public void getMountDocToasterTest() throws Exception {
+        final var getToasterDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/toaster");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", TOASTER, TOASTER_REV,
+            getToasterDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-toaster.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/toaster-augmented' endpoint.
+     *
+     * <p>
+     * Model toaster_augmented is used for test correct generating of augmented model for openapi.
+     */
+    @Test
+    public void getMountDocToasterAugmentedTest() throws Exception {
+        final var getToasterAugmentedDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/toaster-augmented");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", TOASTER_AUGMENTED,
+            TOASTER_AUGMENTED_REV, getToasterAugmentedDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-toaster-augmented.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/toaster-short' endpoint.
+     *
+     * <p>
+     * Model toaster_short is used for test correct generating of types with restrictions for openapi.
+     */
+    @Test
+    public void getMountDocToasterShortTest() throws Exception {
+        final var getToasterShortDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/toaster2");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", TOASTER_SHORT, TOASTER_SHORT_REV,
+            getToasterShortDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-toaster2.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/typed-params' endpoint.
+     *
+     * <p>
+     * Model typed-params is used for test correct generating of all built-in types and assignment to allowed
+     * types for openapi.
+     */
+    @Test
+    public void getMountDocTypedParamsTest() throws Exception {
+        final var getTypedParamsDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/typed-params");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", TYPED_PARAMS, TYPED_PARAMS_REV,
+            getTypedParamsDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-typed-params.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1/test-container-childs' endpoint.
+     *
+     * <p>
+     * Model test-container-childs is used for test correct generating of min-elements, max-elements and example
+     * elements for openapi.
+     */
+    @Test
+    public void getMountDocContainerChildsTest() throws Exception {
+        final var getTypedParamsDevice = DocGenTestHelper.createMockUriInfo(
+            "http://localhost:8181/openapi/api/v3/mounts/1/test-container-childs");
+        final var deviceDocOperational = openApiService.getMountDocByModule("1", TEST_CONTAINER_CHILDS,
+            TEST_CONTAINER_CHILDS_REV, getTypedParamsDevice);
+
+        final var jsonDeviceDoc = MAPPER.writeValueAsString(deviceDocOperational.getEntity());
+        final var expectedJson = MAPPER.writeValueAsString(MAPPER.readTree(
+            getClass().getClassLoader().getResourceAsStream("yang-document/device-test-container-childs.json")));
+        JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
+    }
+}
diff --git a/restconf/restconf-openapi/src/test/resources/operational-document/controller-action-types.json b/restconf/restconf-openapi/src/test/resources/operational-document/controller-action-types.json
new file mode 100644 (file)
index 0000000..782f40e
--- /dev/null
@@ -0,0 +1,933 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "action-types",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/action-types:multi-container/inner-container": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "inner-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - inner-container"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - inner-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - inner-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - inner-container"
+      }
+    },
+    "/rests/operations/action-types:container/container-action": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_container-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC container-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - Controller - action-types - container-action"
+      }
+    },
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - action-types - action-types"
+      }
+    },
+    "/rests/data/action-types:multi-container": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "multi-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - multi-container"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - multi-container"
+      },
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - action-types - multi-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - multi-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - multi-container"
+      }
+    },
+    "/rests/data/action-types:list={name}": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/action-types_list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - list"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - list"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - list"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - list"
+      }
+    },
+    "/rests/operations/action-types:list={name}/list-action": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC list-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - Controller - action-types - list-action"
+      }
+    },
+    "/rests/data/action-types:container": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "container": {
+                      "$ref": "#/components/schemas/action-types_container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - container"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - container"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - container"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - container"
+      }
+    },
+    "/rests/operations/action-types:multi-container/inner-container/action": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+                },
+                "type": "object"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC action success"
+          }
+        },
+        "description": "",
+        "summary": "POST - Controller - action-types - action"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "action-types_list-action_input": {
+        "required": [
+          "la-input"
+        ],
+        "properties": {
+          "la-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_input",
+        "type": "object"
+      },
+      "action-types_container": {
+        "properties": {},
+        "xml": {
+          "name": "container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_container",
+        "type": "object"
+      },
+      "action-types_multi-container": {
+        "properties": {
+          "inner-container": {
+            "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+          }
+        },
+        "xml": {
+          "name": "multi-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container",
+        "type": "object"
+      },
+      "action-types_list-action_output": {
+        "required": [
+          "la-output"
+        ],
+        "properties": {
+          "la-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_output",
+        "type": "object"
+      },
+      "action-types_container-action_input": {
+        "required": [
+          "ca-input"
+        ],
+        "properties": {
+          "ca-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_input",
+        "type": "object"
+      },
+      "action-types_multi-container_inner-container": {
+        "properties": {},
+        "xml": {
+          "name": "inner-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container_inner-container",
+        "type": "object"
+      },
+      "action-types_list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_list",
+        "type": "object"
+      },
+      "action-types_container-action_output": {
+        "required": [
+          "ca-output"
+        ],
+        "properties": {
+          "ca-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_output",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/operational-document/controller-all.json b/restconf/restconf-openapi/src/test/resources/operational-document/controller-all.json
new file mode 100644 (file)
index 0000000..2aa4934
--- /dev/null
@@ -0,0 +1,1557 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "Controller modules of RESTCONF",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/action-types:multi-container/inner-container": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "inner-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - inner-container"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - inner-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - inner-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - inner-container"
+      }
+    },
+    "/rests/operations/action-types:container/container-action": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_container-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC container-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - Controller - action-types - container-action"
+      }
+    },
+    "/rests/data/operational:root/config-container": {
+      "get": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_config-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "config-container": {
+                      "$ref": "#/components/schemas/operational_root_config-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - operational - config-container"
+      },
+      "put": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "config-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "operational:config-container": {
+                    "$ref": "#/components/schemas/operational_root_config-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - operational - Controller - config-container"
+      },
+      "post": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "config-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - operational - config-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - operational - config-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "config-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "operational:config-container": {
+                    "$ref": "#/components/schemas/operational_root_config-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - operational - Controller - config-container"
+      }
+    },
+    "/rests/data/operational:root/config-container/config-container-oper-list={oper-container-list-leaf}": {
+      "get": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [
+          {
+            "name": "oper-container-list-leaf",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_config-container_config-container-oper-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "config-container-oper-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/operational_root_config-container_config-container-oper-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - operational - config-container-oper-list"
+      }
+    },
+    "/rests/data/action-types:multi-container": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "multi-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - multi-container"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - multi-container"
+      },
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - action-types - multi-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - multi-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - multi-container"
+      }
+    },
+    "/rests/data/operational:root": {
+      "get": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root": {
+                      "$ref": "#/components/schemas/operational_root",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - operational - root"
+      },
+      "put": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "operational:root": {
+                    "$ref": "#/components/schemas/operational_root",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - operational - Controller - root"
+      },
+      "post": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - operational - root"
+      },
+      "delete": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - operational - root"
+      },
+      "patch": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "operational:root": {
+                    "$ref": "#/components/schemas/operational_root",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - operational - Controller - root"
+      }
+    },
+    "/rests/operations/action-types:list={name}/list-action": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC list-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - Controller - action-types - list-action"
+      }
+    },
+    "/rests/data/operational:root/oper-container/config-container": {
+      "get": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_oper-container_config-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "config-container": {
+                      "$ref": "#/components/schemas/operational_root_oper-container_config-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - operational - config-container"
+      }
+    },
+    "/rests/operations/action-types:multi-container/inner-container/action": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+                },
+                "type": "object"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC action success"
+          }
+        },
+        "description": "",
+        "summary": "POST - Controller - action-types - action"
+      }
+    },
+    "/rests/data/operational:root/oper-container/oper-container-list={oper-container-list-leaf}": {
+      "get": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [
+          {
+            "name": "oper-container-list-leaf",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_oper-container_oper-container-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "oper-container-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/operational_root_oper-container_oper-container-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - operational - oper-container-list"
+      }
+    },
+    "/rests/data/operational:root/oper-container": {
+      "get": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_oper-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "oper-container": {
+                      "$ref": "#/components/schemas/operational_root_oper-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - operational - oper-container"
+      }
+    },
+    "/rests/data/action-types:list={name}": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/action-types_list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - list"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - list"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - list"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - list"
+      }
+    },
+    "/rests/data/action-types:container": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "container": {
+                      "$ref": "#/components/schemas/action-types_container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - container"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - container"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - container"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - container"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "action-types_multi-container": {
+        "properties": {
+          "inner-container": {
+            "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+          }
+        },
+        "xml": {
+          "name": "multi-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container",
+        "type": "object"
+      },
+      "operational_root_config-container": {
+        "properties": {
+          "config-container-config-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some config-container-config-leaf"
+          },
+          "leaf-second-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-second-case"
+          }
+        },
+        "xml": {
+          "name": "config-container",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_config-container",
+        "type": "object"
+      },
+      "operational_root": {
+        "properties": {
+          "leaf-config": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-config"
+          },
+          "config-container": {
+            "$ref": "#/components/schemas/operational_root_config-container"
+          }
+        },
+        "xml": {
+          "name": "root",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root",
+        "type": "object"
+      },
+      "action-types_container-action_input": {
+        "required": [
+          "ca-input"
+        ],
+        "properties": {
+          "ca-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_input",
+        "type": "object"
+      },
+      "operational_root_oper-container_config-container": {
+        "required": [
+          "config-container-config-leaf"
+        ],
+        "properties": {
+          "opconfig-container-oper-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some opconfig-container-oper-leaf"
+          },
+          "config-container-config-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some config-container-config-leaf"
+          }
+        },
+        "xml": {
+          "name": "config-container",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_oper-container_config-container",
+        "type": "object"
+      },
+      "operational_root_oper-container": {
+        "required": [
+          "config-container"
+        ],
+        "properties": {
+          "config-container": {
+            "$ref": "#/components/schemas/operational_root_oper-container_config-container"
+          },
+          "oper-container-config-leaf-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": "Some oper-container-config-leaf-list"
+            }
+          },
+          "oper-container-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/operational_root_oper-container_oper-container-list"
+            }
+          },
+          "leaf-first-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-first-case"
+          },
+          "oper-leaf-first-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some oper-leaf-first-case"
+          }
+        },
+        "xml": {
+          "name": "oper-container",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_oper-container",
+        "type": "object"
+      },
+      "action-types_multi-container_inner-container": {
+        "properties": {},
+        "xml": {
+          "name": "inner-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container_inner-container",
+        "type": "object"
+      },
+      "operational_root_config-container_config-container-oper-list": {
+        "properties": {
+          "oper-container-list-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some oper-container-list-leaf"
+          }
+        },
+        "xml": {
+          "name": "config-container-oper-list",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_config-container_config-container-oper-list",
+        "type": "object"
+      },
+      "action-types_container-action_output": {
+        "required": [
+          "ca-output"
+        ],
+        "properties": {
+          "ca-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_output",
+        "type": "object"
+      },
+      "action-types_list-action_input": {
+        "required": [
+          "la-input"
+        ],
+        "properties": {
+          "la-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_input",
+        "type": "object"
+      },
+      "action-types_container": {
+        "properties": {},
+        "xml": {
+          "name": "container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_container",
+        "type": "object"
+      },
+      "action-types_list-action_output": {
+        "required": [
+          "la-output"
+        ],
+        "properties": {
+          "la-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_output",
+        "type": "object"
+      },
+      "operational_root_oper-container_oper-container-list": {
+        "properties": {
+          "oper-container-list-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some oper-container-list-leaf"
+          }
+        },
+        "xml": {
+          "name": "oper-container-list",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_oper-container_oper-container-list",
+        "type": "object"
+      },
+      "action-types_list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_list",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/operational-document/controller-operational.json b/restconf/restconf-openapi/src/test/resources/operational-document/controller-operational.json
new file mode 100644 (file)
index 0000000..0e6d754
--- /dev/null
@@ -0,0 +1,727 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "operational",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/operational:root/config-container": {
+      "get": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_config-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "config-container": {
+                      "$ref": "#/components/schemas/operational_root_config-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - operational - config-container"
+      },
+      "put": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "config-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "operational:config-container": {
+                    "$ref": "#/components/schemas/operational_root_config-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - operational - Controller - config-container"
+      },
+      "post": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "config-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - operational - config-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - operational - config-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "config-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "operational:config-container": {
+                    "$ref": "#/components/schemas/operational_root_config-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - operational - Controller - config-container"
+      }
+    },
+    "/rests/data/operational:root/config-container/config-container-oper-list={oper-container-list-leaf}": {
+      "get": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [
+          {
+            "name": "oper-container-list-leaf",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_config-container_config-container-oper-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "config-container-oper-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/operational_root_config-container_config-container-oper-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - operational - config-container-oper-list"
+      }
+    },
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "root": {
+                    "$ref": "#/components/schemas/operational_root",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - operational - operational"
+      }
+    },
+    "/rests/data/operational:root": {
+      "get": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root": {
+                      "$ref": "#/components/schemas/operational_root",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - operational - root"
+      },
+      "put": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "operational:root": {
+                    "$ref": "#/components/schemas/operational_root",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - operational - Controller - root"
+      },
+      "post": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - operational - root"
+      },
+      "delete": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - operational - root"
+      },
+      "patch": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "operational:root": {
+                    "$ref": "#/components/schemas/operational_root",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - operational - Controller - root"
+      }
+    },
+    "/rests/data/operational:root/oper-container": {
+      "get": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_oper-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "oper-container": {
+                      "$ref": "#/components/schemas/operational_root_oper-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - operational - oper-container"
+      }
+    },
+    "/rests/data/operational:root/oper-container/config-container": {
+      "get": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_oper-container_config-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "config-container": {
+                      "$ref": "#/components/schemas/operational_root_oper-container_config-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - operational - config-container"
+      }
+    },
+    "/rests/data/operational:root/oper-container/oper-container-list={oper-container-list-leaf}": {
+      "get": {
+        "tags": [
+          "Controller operational"
+        ],
+        "parameters": [
+          {
+            "name": "oper-container-list-leaf",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_oper-container_oper-container-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "oper-container-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/operational_root_oper-container_oper-container-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - operational - oper-container-list"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "operational_root_config-container": {
+        "properties": {
+          "config-container-config-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some config-container-config-leaf"
+          },
+          "leaf-second-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-second-case"
+          }
+        },
+        "xml": {
+          "name": "config-container",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_config-container",
+        "type": "object"
+      },
+      "operational_root": {
+        "properties": {
+          "leaf-config": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-config"
+          },
+          "config-container": {
+            "$ref": "#/components/schemas/operational_root_config-container"
+          }
+        },
+        "xml": {
+          "name": "root",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root",
+        "type": "object"
+      },
+      "operational_root_oper-container_oper-container-list": {
+        "properties": {
+          "oper-container-list-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some oper-container-list-leaf"
+          }
+        },
+        "xml": {
+          "name": "oper-container-list",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_oper-container_oper-container-list",
+        "type": "object"
+      },
+      "operational_root_oper-container_config-container": {
+        "required": [
+          "config-container-config-leaf"
+        ],
+        "properties": {
+          "opconfig-container-oper-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some opconfig-container-oper-leaf"
+          },
+          "config-container-config-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some config-container-config-leaf"
+          }
+        },
+        "xml": {
+          "name": "config-container",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_oper-container_config-container",
+        "type": "object"
+      },
+      "operational_root_oper-container": {
+        "required": [
+          "config-container"
+        ],
+        "properties": {
+          "config-container": {
+            "$ref": "#/components/schemas/operational_root_oper-container_config-container"
+          },
+          "oper-container-config-leaf-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": "Some oper-container-config-leaf-list"
+            }
+          },
+          "oper-container-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/operational_root_oper-container_oper-container-list"
+            }
+          },
+          "leaf-first-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-first-case"
+          },
+          "oper-leaf-first-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some oper-leaf-first-case"
+          }
+        },
+        "xml": {
+          "name": "oper-container",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_oper-container",
+        "type": "object"
+      },
+      "operational_root_config-container_config-container-oper-list": {
+        "properties": {
+          "oper-container-list-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some oper-container-list-leaf"
+          }
+        },
+        "xml": {
+          "name": "config-container-oper-list",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_config-container_config-container-oper-list",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/operational-document/device-action-types.json b/restconf/restconf-openapi/src/test/resources/operational-document/device-action-types.json
new file mode 100644 (file)
index 0000000..d65ed46
--- /dev/null
@@ -0,0 +1,933 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "action-types",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:list={name}/list-action": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC list-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - 123 - action-types - list-action"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:container/container-action": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_container-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC container-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - 123 - action-types - container-action"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:list={name}": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/action-types_list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - list"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - list"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - list"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:container": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "container": {
+                      "$ref": "#/components/schemas/action-types_container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - container"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - container"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - container"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:multi-container": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "multi-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - multi-container"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - multi-container"
+      },
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - action-types - multi-container"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - multi-container"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - multi-container"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:multi-container/inner-container/action": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+                },
+                "type": "object"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC action success"
+          }
+        },
+        "description": "",
+        "summary": "POST - 123 - action-types - action"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - action-types - action-types"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:multi-container/inner-container": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "inner-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - inner-container"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - inner-container"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - inner-container"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - inner-container"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "action-types_list-action_input": {
+        "required": [
+          "la-input"
+        ],
+        "properties": {
+          "la-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_input",
+        "type": "object"
+      },
+      "action-types_container": {
+        "properties": {},
+        "xml": {
+          "name": "container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_container",
+        "type": "object"
+      },
+      "action-types_multi-container": {
+        "properties": {
+          "inner-container": {
+            "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+          }
+        },
+        "xml": {
+          "name": "multi-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container",
+        "type": "object"
+      },
+      "action-types_list-action_output": {
+        "required": [
+          "la-output"
+        ],
+        "properties": {
+          "la-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_output",
+        "type": "object"
+      },
+      "action-types_container-action_input": {
+        "required": [
+          "ca-input"
+        ],
+        "properties": {
+          "ca-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_input",
+        "type": "object"
+      },
+      "action-types_multi-container_inner-container": {
+        "properties": {},
+        "xml": {
+          "name": "inner-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container_inner-container",
+        "type": "object"
+      },
+      "action-types_list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_list",
+        "type": "object"
+      },
+      "action-types_container-action_output": {
+        "required": [
+          "ca-output"
+        ],
+        "properties": {
+          "ca-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_output",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/operational-document/device-all.json b/restconf/restconf-openapi/src/test/resources/operational-document/device-all.json
new file mode 100644 (file)
index 0000000..ee5daa2
--- /dev/null
@@ -0,0 +1,1585 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "123 modules of RESTCONF",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:list={name}/list-action": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC list-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - 123 - action-types - list-action"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:container/container-action": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_container-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC container-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - 123 - action-types - container-action"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:list={name}": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/action-types_list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - list"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - list"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - list"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/operational:root": {
+      "get": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root": {
+                      "$ref": "#/components/schemas/operational_root",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - operational - root"
+      },
+      "put": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "operational:root": {
+                    "$ref": "#/components/schemas/operational_root",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - operational - 123 - root"
+      },
+      "post": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - operational - root"
+      },
+      "delete": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - operational - root"
+      },
+      "patch": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "operational:root": {
+                    "$ref": "#/components/schemas/operational_root",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - operational - 123 - root"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/operational:root/oper-container/config-container": {
+      "get": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_oper-container_config-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "config-container": {
+                      "$ref": "#/components/schemas/operational_root_oper-container_config-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - operational - config-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/operational:root/oper-container/oper-container-list={oper-container-list-leaf}": {
+      "get": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [
+          {
+            "name": "oper-container-list-leaf",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_oper-container_oper-container-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "oper-container-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/operational_root_oper-container_oper-container-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - operational - oper-container-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:multi-container": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "multi-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - multi-container"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - multi-container"
+      },
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - action-types - multi-container"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - multi-container"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - multi-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:multi-container/inner-container": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "inner-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - inner-container"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - inner-container"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - inner-container"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - inner-container"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount": {
+      "get": {
+        "tags": [
+          "123 GET root"
+        ],
+        "responses": {
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "Queries the available operations (RPC calls) on the mounted hosted.",
+        "summary": "GET - 123 - datastore - operations"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/operational:root/oper-container": {
+      "get": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_oper-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "oper-container": {
+                      "$ref": "#/components/schemas/operational_root_oper-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - operational - oper-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:container": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "container": {
+                      "$ref": "#/components/schemas/action-types_container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - container"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - container"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - container"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - container"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:multi-container/inner-container/action": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+                },
+                "type": "object"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC action success"
+          }
+        },
+        "description": "",
+        "summary": "POST - 123 - action-types - action"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/operational:root/config-container/config-container-oper-list={oper-container-list-leaf}": {
+      "get": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [
+          {
+            "name": "oper-container-list-leaf",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_config-container_config-container-oper-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "config-container-oper-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/operational_root_config-container_config-container-oper-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - operational - config-container-oper-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/operational:root/config-container": {
+      "get": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_config-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "config-container": {
+                      "$ref": "#/components/schemas/operational_root_config-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - operational - config-container"
+      },
+      "put": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "config-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "operational:config-container": {
+                    "$ref": "#/components/schemas/operational_root_config-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - operational - 123 - config-container"
+      },
+      "post": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "config-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - operational - config-container"
+      },
+      "delete": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - operational - config-container"
+      },
+      "patch": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "config-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "operational:config-container": {
+                    "$ref": "#/components/schemas/operational_root_config-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - operational - 123 - config-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "get": {
+        "tags": [
+          "123 GET root"
+        ],
+        "responses": {
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "Queries the config (startup) datastore on the mounted hosted.",
+        "summary": "GET - 123 - datastore - data"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "action-types_multi-container": {
+        "properties": {
+          "inner-container": {
+            "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+          }
+        },
+        "xml": {
+          "name": "multi-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container",
+        "type": "object"
+      },
+      "operational_root_config-container": {
+        "properties": {
+          "leaf-second-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-second-case"
+          },
+          "config-container-config-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some config-container-config-leaf"
+          }
+        },
+        "xml": {
+          "name": "config-container",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_config-container",
+        "type": "object"
+      },
+      "operational_root": {
+        "properties": {
+          "leaf-config": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-config"
+          },
+          "config-container": {
+            "$ref": "#/components/schemas/operational_root_config-container"
+          }
+        },
+        "xml": {
+          "name": "root",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root",
+        "type": "object"
+      },
+      "action-types_container-action_input": {
+        "required": [
+          "ca-input"
+        ],
+        "properties": {
+          "ca-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_input",
+        "type": "object"
+      },
+      "operational_root_oper-container_config-container": {
+        "required": [
+          "config-container-config-leaf"
+        ],
+        "properties": {
+          "config-container-config-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some config-container-config-leaf"
+          },
+          "opconfig-container-oper-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some opconfig-container-oper-leaf"
+          }
+        },
+        "xml": {
+          "name": "config-container",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_oper-container_config-container",
+        "type": "object"
+      },
+      "operational_root_oper-container": {
+        "required": [
+          "config-container"
+        ],
+        "properties": {
+          "oper-container-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/operational_root_oper-container_oper-container-list"
+            }
+          },
+          "oper-container-config-leaf-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": "Some oper-container-config-leaf-list"
+            }
+          },
+          "config-container": {
+            "$ref": "#/components/schemas/operational_root_oper-container_config-container"
+          },
+          "oper-leaf-first-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some oper-leaf-first-case"
+          },
+          "leaf-first-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-first-case"
+          }
+        },
+        "xml": {
+          "name": "oper-container",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_oper-container",
+        "type": "object"
+      },
+      "action-types_multi-container_inner-container": {
+        "properties": {},
+        "xml": {
+          "name": "inner-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container_inner-container",
+        "type": "object"
+      },
+      "operational_root_config-container_config-container-oper-list": {
+        "properties": {
+          "oper-container-list-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some oper-container-list-leaf"
+          }
+        },
+        "xml": {
+          "name": "config-container-oper-list",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_config-container_config-container-oper-list",
+        "type": "object"
+      },
+      "action-types_container-action_output": {
+        "required": [
+          "ca-output"
+        ],
+        "properties": {
+          "ca-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_output",
+        "type": "object"
+      },
+      "action-types_list-action_input": {
+        "required": [
+          "la-input"
+        ],
+        "properties": {
+          "la-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_input",
+        "type": "object"
+      },
+      "action-types_container": {
+        "properties": {},
+        "xml": {
+          "name": "container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_container",
+        "type": "object"
+      },
+      "action-types_list-action_output": {
+        "required": [
+          "la-output"
+        ],
+        "properties": {
+          "la-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_output",
+        "type": "object"
+      },
+      "operational_root_oper-container_oper-container-list": {
+        "properties": {
+          "oper-container-list-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some oper-container-list-leaf"
+          }
+        },
+        "xml": {
+          "name": "oper-container-list",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_oper-container_oper-container-list",
+        "type": "object"
+      },
+      "action-types_list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_list",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/operational-document/device-operational.json b/restconf/restconf-openapi/src/test/resources/operational-document/device-operational.json
new file mode 100644 (file)
index 0000000..fab4fc0
--- /dev/null
@@ -0,0 +1,727 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "operational",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/nodes/node=123/yang-ext:mount/operational:root": {
+      "get": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root": {
+                      "$ref": "#/components/schemas/operational_root",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - operational - root"
+      },
+      "put": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "operational:root": {
+                    "$ref": "#/components/schemas/operational_root",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - operational - 123 - root"
+      },
+      "post": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - operational - root"
+      },
+      "delete": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - operational - root"
+      },
+      "patch": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "operational:root": {
+                    "$ref": "#/components/schemas/operational_root",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - operational - 123 - root"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/operational:root/oper-container/config-container": {
+      "get": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_oper-container_config-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "config-container": {
+                      "$ref": "#/components/schemas/operational_root_oper-container_config-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - operational - config-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/operational:root/oper-container": {
+      "get": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_oper-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "oper-container": {
+                      "$ref": "#/components/schemas/operational_root_oper-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - operational - oper-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/operational:root/oper-container/oper-container-list={oper-container-list-leaf}": {
+      "get": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [
+          {
+            "name": "oper-container-list-leaf",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_oper-container_oper-container-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "oper-container-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/operational_root_oper-container_oper-container-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - operational - oper-container-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/operational:root/config-container/config-container-oper-list={oper-container-list-leaf}": {
+      "get": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [
+          {
+            "name": "oper-container-list-leaf",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": true,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_config-container_config-container-oper-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "config-container-oper-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/operational_root_config-container_config-container-oper-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - operational - config-container-oper-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/operational:root/config-container": {
+      "get": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/operational_root_config-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "config-container": {
+                      "$ref": "#/components/schemas/operational_root_config-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - operational - config-container"
+      },
+      "put": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "config-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "operational:config-container": {
+                    "$ref": "#/components/schemas/operational_root_config-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - operational - 123 - config-container"
+      },
+      "post": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "config-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - operational - config-container"
+      },
+      "delete": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - operational - config-container"
+      },
+      "patch": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "config-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "operational:config-container": {
+                    "$ref": "#/components/schemas/operational_root_config-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root_config-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - operational - 123 - config-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 operational"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/operational_root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "root": {
+                    "$ref": "#/components/schemas/operational_root",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - operational - operational"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "operational_root_config-container": {
+        "properties": {
+          "config-container-config-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some config-container-config-leaf"
+          },
+          "leaf-second-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-second-case"
+          }
+        },
+        "xml": {
+          "name": "config-container",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_config-container",
+        "type": "object"
+      },
+      "operational_root": {
+        "properties": {
+          "leaf-config": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-config"
+          },
+          "config-container": {
+            "$ref": "#/components/schemas/operational_root_config-container"
+          }
+        },
+        "xml": {
+          "name": "root",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root",
+        "type": "object"
+      },
+      "operational_root_oper-container_oper-container-list": {
+        "properties": {
+          "oper-container-list-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some oper-container-list-leaf"
+          }
+        },
+        "xml": {
+          "name": "oper-container-list",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_oper-container_oper-container-list",
+        "type": "object"
+      },
+      "operational_root_oper-container_config-container": {
+        "required": [
+          "config-container-config-leaf"
+        ],
+        "properties": {
+          "opconfig-container-oper-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some opconfig-container-oper-leaf"
+          },
+          "config-container-config-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some config-container-config-leaf"
+          }
+        },
+        "xml": {
+          "name": "config-container",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_oper-container_config-container",
+        "type": "object"
+      },
+      "operational_root_oper-container": {
+        "required": [
+          "config-container"
+        ],
+        "properties": {
+          "config-container": {
+            "$ref": "#/components/schemas/operational_root_oper-container_config-container"
+          },
+          "oper-container-config-leaf-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": "Some oper-container-config-leaf-list"
+            }
+          },
+          "oper-container-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/operational_root_oper-container_oper-container-list"
+            }
+          },
+          "leaf-first-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-first-case"
+          },
+          "oper-leaf-first-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some oper-leaf-first-case"
+          }
+        },
+        "xml": {
+          "name": "oper-container",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_oper-container",
+        "type": "object"
+      },
+      "operational_root_config-container_config-container-oper-list": {
+        "properties": {
+          "oper-container-list-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some oper-container-list-leaf"
+          }
+        },
+        "xml": {
+          "name": "config-container-oper-list",
+          "namespace": "urn:opendaylight:oper"
+        },
+        "description": "",
+        "title": "operational_root_config-container_config-container-oper-list",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
similarity index 98%
rename from restconf/restconf-openapi/src/test/resources/openapi-document/controller-toaster.json
rename to restconf/restconf-openapi/src/test/resources/toaster-document/controller-toaster.json
index 8651a56e89c832dab11823a59d9d8cf92a1ae495..4268396cccef0316cb9261837a937ed7ba1733b5 100644 (file)
           "content": {
             "application/json": {
               "schema": {
-                "properties":{
-                  "toaster":{
-                    "$ref":"#/components/schemas/toaster_toaster",
-                    "type":"object"
+                "properties": {
+                  "toaster": {
+                    "$ref": "#/components/schemas/toaster_toaster",
+                    "type": "object"
                   }
                 }
               }
similarity index 98%
rename from restconf/restconf-openapi/src/test/resources/openapi-document/device-toaster.json
rename to restconf/restconf-openapi/src/test/resources/toaster-document/device-toaster.json
index 205928321698f59abd9c5577f09f1d77d66e1baa..011d7bfc6da2a6d259cd947f7f2c1ef1e6651ffd 100644 (file)
             },
             "application/json": {
               "schema": {
-                "properties":{
-                  "toaster":{
-                    "$ref":"#/components/schemas/toaster_toaster",
-                    "type":"object"
+                "properties": {
+                  "toaster": {
+                    "$ref": "#/components/schemas/toaster_toaster",
+                    "type": "object"
                   }
                 }
               }
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-action-types.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-action-types.json
new file mode 100644 (file)
index 0000000..ac74c97
--- /dev/null
@@ -0,0 +1,933 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "action-types",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/action-types:multi-container/inner-container": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "inner-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - inner-container"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - inner-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - inner-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - inner-container"
+      }
+    },
+    "/rests/operations/action-types:container/container-action": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_container-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC container-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - Controller - action-types - container-action"
+      }
+    },
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - action-types - action-types"
+      }
+    },
+    "/rests/data/action-types:multi-container": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "multi-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - multi-container"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - multi-container"
+      },
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - action-types - multi-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - multi-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - multi-container"
+      }
+    },
+    "/rests/data/action-types:list={name}": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/action-types_list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - list"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - list"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - list"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - list"
+      }
+    },
+    "/rests/operations/action-types:list={name}/list-action": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC list-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - Controller - action-types - list-action"
+      }
+    },
+    "/rests/data/action-types:container": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "container": {
+                      "$ref": "#/components/schemas/action-types_container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - container"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - container"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - container"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - container"
+      }
+    },
+    "/rests/operations/action-types:multi-container/inner-container/action": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+                },
+                "type": "object"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC action success"
+          }
+        },
+        "description": "",
+        "summary": "POST - Controller - action-types - action"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "action-types_list-action_input": {
+        "required": [
+          "la-input"
+        ],
+        "properties": {
+          "la-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_input",
+        "type": "object"
+      },
+      "action-types_container": {
+        "properties": {},
+        "xml": {
+          "name": "container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_container",
+        "type": "object"
+      },
+      "action-types_multi-container": {
+        "properties": {
+          "inner-container": {
+            "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+          }
+        },
+        "xml": {
+          "name": "multi-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container",
+        "type": "object"
+      },
+      "action-types_list-action_output": {
+        "required": [
+          "la-output"
+        ],
+        "properties": {
+          "la-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_output",
+        "type": "object"
+      },
+      "action-types_container-action_input": {
+        "required": [
+          "ca-input"
+        ],
+        "properties": {
+          "ca-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_input",
+        "type": "object"
+      },
+      "action-types_multi-container_inner-container": {
+        "properties": {},
+        "xml": {
+          "name": "inner-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container_inner-container",
+        "type": "object"
+      },
+      "action-types_list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_list",
+        "type": "object"
+      },
+      "action-types_container-action_output": {
+        "required": [
+          "ca-output"
+        ],
+        "properties": {
+          "ca-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_output",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-all.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-all.json
new file mode 100644 (file)
index 0000000..bc8af19
--- /dev/null
@@ -0,0 +1,13689 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "Controller modules of RESTCONF",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/typed-params:typed/binary={binary-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_binary"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "binary": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_binary",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - binary"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "binary",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_binary"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:binary": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_binary",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - binary"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - binary"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "binary",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:binary": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_binary",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_binary"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - binary"
+      }
+    },
+    "/rests/data/choice-test:second-container": {
+      "get": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/choice-test_second-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "second-container": {
+                      "$ref": "#/components/schemas/choice-test_second-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - choice-test - second-container"
+      },
+      "put": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "second-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_second-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "choice-test:second-container": {
+                    "$ref": "#/components/schemas/choice-test_second-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - choice-test - Controller - second-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - choice-test - second-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "second-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "choice-test:second-container": {
+                    "$ref": "#/components/schemas/choice-test_second-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_second-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - choice-test - Controller - second-container"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-unique": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-unique"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container-unique": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - root-container-unique"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-unique",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - root-container-unique"
+      },
+      "post": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-unique",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "nested-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - test-container-childs - root-container-unique"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - root-container-unique"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-unique",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - root-container-unique"
+      }
+    },
+    "/rests/operations/toaster:cancel-toast": {
+      "post": {
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cancel-toast_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "http://netconfcentral.org/ns/toaster"
+                },
+                "type": "object"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC cancel-toast success"
+          }
+        },
+        "description": "Stop making toast, if any is being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - Controller - toaster - cancel-toast"
+      }
+    },
+    "/rests/operations/action-types:list={name}/list-action": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC list-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - Controller - action-types - list-action"
+      }
+    },
+    "/rests/data/typed-params:typed/int64={int64-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int64"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int64": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int64",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - int64"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int64",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int64"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - int64"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - int64"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int64",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int64"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - int64"
+      }
+    },
+    "/rests/data/toaster2:lst={lf1}/lst1={key1},{key2}": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_lst1"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "lst1": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_lst_lst1",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - lst1"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst1",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_lst1"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_lst1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - lst1"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - lst1"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst1",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_lst1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_lst1"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - lst1"
+      }
+    },
+    "/rests/data/definition-test:number-container": {
+      "get": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_number-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "number-container": {
+                      "$ref": "#/components/schemas/definition-test_number-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - definition-test - number-container"
+      },
+      "put": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "number-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_number-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:number-container": {
+                    "$ref": "#/components/schemas/definition-test_number-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - Controller - number-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - number-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "number-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:number-container": {
+                    "$ref": "#/components/schemas/definition-test_number-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_number-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - number-container"
+      }
+    },
+    "/rests/data/recursive:container-root": {
+      "get": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "container-root": {
+                      "$ref": "#/components/schemas/recursive_container-root",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - recursive - container-root"
+      },
+      "put": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:container-root": {
+                    "$ref": "#/components/schemas/recursive_container-root",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - Controller - container-root"
+      },
+      "post": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "root-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - recursive - container-root"
+      },
+      "delete": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - recursive - container-root"
+      },
+      "patch": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-root",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:container-root": {
+                    "$ref": "#/components/schemas/recursive_container-root",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - Controller - container-root"
+      }
+    },
+    "/rests/data/typed-params:typed/uint8={uint8-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint8"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint8": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint8",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - uint8"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint8",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint8"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - uint8"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - uint8"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint8",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint8"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - uint8"
+      }
+    },
+    "/rests/data/recursive:container-root/root-list={name}/nested-list={name1}/super-nested-list={name2}": {
+      "get": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "super-nested-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - recursive - super-nested-list"
+      },
+      "put": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "super-nested-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:super-nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - Controller - super-nested-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - recursive - super-nested-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "super-nested-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:super-nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - Controller - super-nested-list"
+      }
+    },
+    "/rests/data/toaster2:lst={lf1}": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "lst": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_lst",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - lst"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - lst"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - lst"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - lst"
+      }
+    },
+    "/rests/data/typed-params:typed/int8={int8-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int8"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int8": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int8",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - int8"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int8",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int8"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - int8"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - int8"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int8",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int8"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - int8"
+      }
+    },
+    "/rests/data/toaster2:toaster": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_toaster"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "toaster": {
+                      "$ref": "#/components/schemas/toaster2_toaster",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - Controller - toaster2 - toaster"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toaster": {
+                    "$ref": "#/components/schemas/toaster2_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster2 - Controller - toaster"
+      },
+      "post": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toasterSlot",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toasterSlot": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - toaster2 - toaster"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - Controller - toaster2 - toaster"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toaster": {
+                    "$ref": "#/components/schemas/toaster2_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster2 - Controller - toaster"
+      }
+    },
+    "/rests/data/mandatory-test:root-container/optional-list={id}": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "optional-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-container_optional-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - optional-list"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "optional-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - optional-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - optional-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "optional-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - optional-list"
+      }
+    },
+    "/rests/data/path-params-test:cont/list3={name}": {
+      "get": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list3"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list3": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list3",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - path-params-test - list3"
+      },
+      "put": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list3",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list3"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list3": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list3",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - list3"
+      },
+      "delete": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - list3"
+      },
+      "patch": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list3",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list3": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list3",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list3"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - list3"
+      }
+    },
+    "/rests/data/typed-params:typed/boolean={boolean-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_boolean"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "boolean": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_boolean",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - boolean"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "boolean",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_boolean"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:boolean": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_boolean",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - boolean"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - boolean"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "boolean",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:boolean": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_boolean",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_boolean"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - boolean"
+      }
+    },
+    "/rests/data/toaster2:lst={lf1}/cont1/lst11={lf111}": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "lst11": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_lst_cont1_lst11",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - lst11"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst11",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst11": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1_lst11",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - lst11"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - lst11"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst11",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst11": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1_lst11",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - lst11"
+      }
+    },
+    "/rests/data/typed-params:typed/empty={empty-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_empty"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "empty": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_empty",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - empty"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "empty",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_empty"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:empty": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_empty",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - empty"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - empty"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "empty",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:empty": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_empty",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_empty"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - empty"
+      }
+    },
+    "/rests/data/toaster2:toaster/toasterSlot={slotId}": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "toasterSlot": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - toasterSlot"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "toasterSlot",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toasterSlot": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - toasterSlot"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - toasterSlot"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "toasterSlot",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toasterSlot": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - toasterSlot"
+      }
+    },
+    "/rests/data/test-container-childs:root-container": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - root-container"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - root-container"
+      },
+      "post": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - test-container-childs - root-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - root-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - root-container"
+      }
+    },
+    "/rests/operations/toaster2:restock-toaster": {
+      "post": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "restock-toaster_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_restock-toaster_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/toaster2_restock-toaster_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC restock-toaster success"
+          }
+        },
+        "description": "Restocks the toaster with the amount of bread specified.",
+        "summary": "POST - Controller - toaster2 - restock-toaster"
+      }
+    },
+    "/rests/data/test-container-childs:root-container/nested-container": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-container": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - nested-container"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - nested-container"
+      },
+      "post": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - test-container-childs - nested-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - nested-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - nested-container"
+      }
+    },
+    "/rests/data/toaster2:lst={lf1}/cont1": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_cont1"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont1": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - cont1"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont1",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont1": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - cont1"
+      },
+      "post": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont11",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "cont11": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - toaster2 - cont1"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - cont1"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont1",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont1": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - cont1"
+      }
+    },
+    "/rests/data/strings-from-regex:test": {
+      "get": {
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/strings-from-regex_test"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "test": {
+                      "$ref": "#/components/schemas/strings-from-regex_test",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - strings-from-regex - test"
+      },
+      "put": {
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-from-regex_test"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "strings-from-regex:test": {
+                    "$ref": "#/components/schemas/strings-from-regex_test",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - strings-from-regex - Controller - test"
+      },
+      "delete": {
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - strings-from-regex - test"
+      },
+      "patch": {
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "strings-from-regex:test": {
+                    "$ref": "#/components/schemas/strings-from-regex_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-from-regex_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - strings-from-regex - Controller - test"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-unique/nested-container-unique/mandatory-list-unique={id}": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list-unique": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - mandatory-list-unique"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-unique",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-unique": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - mandatory-list-unique"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - mandatory-list-unique"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-unique",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-unique": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - mandatory-list-unique"
+      }
+    },
+    "/rests/data/my-yang:data": {
+      "get": {
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/my-yang_data"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "data": {
+                      "$ref": "#/components/schemas/my-yang_data",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - my-yang - data"
+      },
+      "put": {
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "data",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/my-yang_data"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "my-yang:data": {
+                    "$ref": "#/components/schemas/my-yang_data",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - my-yang - Controller - data"
+      },
+      "delete": {
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - my-yang - data"
+      },
+      "patch": {
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "data",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "my-yang:data": {
+                    "$ref": "#/components/schemas/my-yang_data",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/my-yang_data"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - my-yang - Controller - data"
+      }
+    },
+    "/rests/data/definition-test:network-container": {
+      "get": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_network-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "network-container": {
+                      "$ref": "#/components/schemas/definition-test_network-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - definition-test - network-container"
+      },
+      "put": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "network-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_network-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:network-container": {
+                    "$ref": "#/components/schemas/definition-test_network-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - Controller - network-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - network-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "network-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:network-container": {
+                    "$ref": "#/components/schemas/definition-test_network-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_network-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - network-container"
+      }
+    },
+    "/rests/data/toaster2:lst={lf1}/cont1/cont11": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont11": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - cont11"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont11",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont11": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - cont11"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - cont11"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont11",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont11": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - cont11"
+      }
+    },
+    "/rests/data/typed-params:typed/uint64={uint64-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint64"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint64": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint64",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - uint64"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint64",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint64"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - uint64"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - uint64"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint64",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint64"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - uint64"
+      }
+    },
+    "/rests/data/typed-params:typed/bits={bits-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_bits"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "bits": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_bits",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - bits"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "bits",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_bits"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:bits": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_bits",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - bits"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - bits"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "bits",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:bits": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_bits",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_bits"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - bits"
+      }
+    },
+    "/rests/data/typed-params:typed/string={string-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_string"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "string": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_string",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - string"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "string",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_string"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:string": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_string",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - string"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - string"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "string",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:string": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_string",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_string"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - string"
+      }
+    },
+    "/rests/data/choice-test:first-container": {
+      "get": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/choice-test_first-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "first-container": {
+                      "$ref": "#/components/schemas/choice-test_first-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - choice-test - first-container"
+      },
+      "put": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_first-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "choice-test:first-container": {
+                    "$ref": "#/components/schemas/choice-test_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - choice-test - Controller - first-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - choice-test - first-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "choice-test:first-container": {
+                    "$ref": "#/components/schemas/choice-test_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_first-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - choice-test - Controller - first-container"
+      }
+    },
+    "/rests/data/test-container-childs:root-container/nested-container/mandatory-list={id}": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - mandatory-list"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - mandatory-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - mandatory-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - mandatory-list"
+      }
+    },
+    "/rests/data/string-types:test": {
+      "get": {
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/string-types_test"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "test": {
+                      "$ref": "#/components/schemas/string-types_test",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "GET - Controller - string-types - test"
+      },
+      "put": {
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/string-types_test"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "string-types:test": {
+                    "$ref": "#/components/schemas/string-types_test",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "PUT - string-types - Controller - test"
+      },
+      "delete": {
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "DELETE - Controller - string-types - test"
+      },
+      "patch": {
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "string-types:test": {
+                    "$ref": "#/components/schemas/string-types_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/string-types_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "PATCH - string-types - Controller - test"
+      }
+    },
+    "/rests/data/path-params-test:cont": {
+      "get": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont": {
+                      "$ref": "#/components/schemas/path-params-test_cont",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - path-params-test - cont"
+      },
+      "put": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cont",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont": {
+                    "$ref": "#/components/schemas/path-params-test_cont",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - cont"
+      },
+      "post": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "list1",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "list1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - path-params-test - cont"
+      },
+      "delete": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - cont"
+      },
+      "patch": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cont",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont": {
+                    "$ref": "#/components/schemas/path-params-test_cont",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - cont"
+      }
+    },
+    "/rests/data/action-types:multi-container/inner-container": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "inner-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - inner-container"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - inner-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - inner-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - inner-container"
+      }
+    },
+    "/rests/data/mandatory-test:root-mandatory-list={id}": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-mandatory-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-mandatory-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-mandatory-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - root-mandatory-list"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-mandatory-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-mandatory-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - root-mandatory-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - root-mandatory-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-mandatory-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - root-mandatory-list"
+      }
+    },
+    "/rests/operations/toaster2:cancel-toast": {
+      "post": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cancel-toast_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "http://netconfcentral.org/ns/toaster2"
+                },
+                "type": "object"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC cancel-toast success"
+          }
+        },
+        "description": "Stop making toast, if any is being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - Controller - toaster2 - cancel-toast"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-unique/nested-container-unique": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-container-unique": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - nested-container-unique"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-unique",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - nested-container-unique"
+      },
+      "post": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-list-unique",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-list-unique": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - test-container-childs - nested-container-unique"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - nested-container-unique"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-unique",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - nested-container-unique"
+      }
+    },
+    "/rests/data/typed-params:typed/uint32={uint32-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint32"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint32": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint32",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - uint32"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint32",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint32"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - uint32"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - uint32"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint32",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint32"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - uint32"
+      }
+    },
+    "/rests/data/typed-params:typed/decimal64={decimal64-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_decimal64"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "decimal64": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_decimal64",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - decimal64"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "decimal64",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_decimal64"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:decimal64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_decimal64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - decimal64"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - decimal64"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "decimal64",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:decimal64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_decimal64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_decimal64"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - decimal64"
+      }
+    },
+    "/rests/data/recursive:container-root/root-list={name}/nested-list={name1}": {
+      "get": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - recursive - nested-list"
+      },
+      "put": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "nested-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - Controller - nested-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - recursive - nested-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "nested-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - Controller - nested-list"
+      }
+    },
+    "/rests/data/definition-test:union-container": {
+      "get": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_union-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "union-container": {
+                      "$ref": "#/components/schemas/definition-test_union-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - definition-test - union-container"
+      },
+      "put": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "union-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_union-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:union-container": {
+                    "$ref": "#/components/schemas/definition-test_union-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - Controller - union-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - union-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "union-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:union-container": {
+                    "$ref": "#/components/schemas/definition-test_union-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_union-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - union-container"
+      }
+    },
+    "/rests/data/mandatory-test:root-container/mandatory-list={id}": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - mandatory-list"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - mandatory-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - mandatory-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - mandatory-list"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-two-keys": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container-two-keys": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - root-container-two-keys"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-two-keys",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - root-container-two-keys"
+      },
+      "post": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-two-keys",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "nested-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - test-container-childs - root-container-two-keys"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - root-container-two-keys"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-two-keys",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - root-container-two-keys"
+      }
+    },
+    "/rests/data/path-params-test:cont/list1={name}/cont2": {
+      "get": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont2": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_cont2",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - path-params-test - cont2"
+      },
+      "put": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont2",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont2": {
+                    "$ref": "#/components/schemas/path-params-test_cont_list1_cont2",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - cont2"
+      },
+      "delete": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - cont2"
+      },
+      "patch": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont2",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont2": {
+                    "$ref": "#/components/schemas/path-params-test_cont_list1_cont2",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - cont2"
+      }
+    },
+    "/rests/data/toaster:toaster": {
+      "get": {
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster_toaster"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "toaster": {
+                      "$ref": "#/components/schemas/toaster_toaster",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - Controller - toaster - toaster"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_toaster"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster:toaster": {
+                    "$ref": "#/components/schemas/toaster_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster - Controller - toaster"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - Controller - toaster - toaster"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster:toaster": {
+                    "$ref": "#/components/schemas/toaster_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_toaster"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster - Controller - toaster"
+      }
+    },
+    "/rests/data/typed-params:typed/int16={int16-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int16"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int16": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int16",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - int16"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int16",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int16"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - int16"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - int16"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int16",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int16"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - int16"
+      }
+    },
+    "/rests/data/typed-params:typed": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "typed": {
+                      "$ref": "#/components/schemas/typed-params_typed",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - typed"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "typed",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:typed": {
+                    "$ref": "#/components/schemas/typed-params_typed",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - typed"
+      },
+      "post": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "string",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_string"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "string": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_string",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - typed-params - typed"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - typed"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "typed",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:typed": {
+                    "$ref": "#/components/schemas/typed-params_typed",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - typed"
+      }
+    },
+    "/rests/data/action-types:list={name}": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/action-types_list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - list"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - list"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - list"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - list"
+      }
+    },
+    "/rests/data/definition-test:binary-container": {
+      "get": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_binary-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "binary-container": {
+                      "$ref": "#/components/schemas/definition-test_binary-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - definition-test - binary-container"
+      },
+      "put": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "binary-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_binary-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:binary-container": {
+                    "$ref": "#/components/schemas/definition-test_binary-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - Controller - binary-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - binary-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "binary-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:binary-container": {
+                    "$ref": "#/components/schemas/definition-test_binary-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_binary-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - binary-container"
+      }
+    },
+    "/rests/operations/toaster2:make-toast": {
+      "post": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "make-toast_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_make-toast_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/toaster2_make-toast_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC make-toast success"
+          }
+        },
+        "description": "Make some toast.\n  The toastDone notification will be sent when\n  the toast is finished.\n  An 'in-use' error will be returned if toast\n  is already being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - Controller - toaster2 - make-toast"
+      }
+    },
+    "/rests/data/mandatory-test:root-container/optional-presence-container": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "optional-presence-container": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - optional-presence-container"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "optional-presence-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-presence-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - optional-presence-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - optional-presence-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "optional-presence-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-presence-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - optional-presence-container"
+      }
+    },
+    "/rests/data/mandatory-test:root-optional-list={id}": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-optional-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-optional-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-optional-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - root-optional-list"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-optional-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-optional-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - root-optional-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - root-optional-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-optional-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-optional-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - root-optional-list"
+      }
+    },
+    "/rests/data/mandatory-test:root-container/mandatory-container": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-container": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - mandatory-container"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - mandatory-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - mandatory-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - mandatory-container"
+      }
+    },
+    "/rests/data/path-params-test:cont/list1={name}/list4={name1}": {
+      "get": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list4": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list1_list4",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - path-params-test - list4"
+      },
+      "put": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list4",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list4": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list4",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - list4"
+      },
+      "delete": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - list4"
+      },
+      "patch": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list4",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list4": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list4",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - list4"
+      }
+    },
+    "/rests/operations/action-types:container/container-action": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_container-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC container-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - Controller - action-types - container-action"
+      }
+    },
+    "/rests/data/typed-params:typed/instance-identifier={instance-identifier-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "instance-identifier": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_instance-identifier",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - instance-identifier"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "instance-identifier",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:instance-identifier": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_instance-identifier",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - instance-identifier"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - instance-identifier"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "instance-identifier",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:instance-identifier": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_instance-identifier",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - instance-identifier"
+      }
+    },
+    "/rests/data/action-types:multi-container": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "multi-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - multi-container"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - multi-container"
+      },
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - action-types - multi-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - multi-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - multi-container"
+      }
+    },
+    "/rests/data/path-params-test:cont/list1={name}": {
+      "get": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list1": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list1",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - path-params-test - list1"
+      },
+      "put": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list1",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - list1"
+      },
+      "delete": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - list1"
+      },
+      "patch": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list1",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - list1"
+      }
+    },
+    "/rests/operations/toaster:make-toast": {
+      "post": {
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "make-toast_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_make-toast_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/toaster_make-toast_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC make-toast success"
+          }
+        },
+        "description": "Make some toast.\n  The toastDone notification will be sent when\n  the toast is finished.\n  An 'in-use' error will be returned if toast\n  is already being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - Controller - toaster - make-toast"
+      }
+    },
+    "/rests/data/typed-params:typed/uint16={uint16-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint16"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint16": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint16",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - uint16"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint16",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint16"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - uint16"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - uint16"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint16",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint16"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - uint16"
+      }
+    },
+    "/rests/data/path-params-test:cont/list1={name}/list2={name1}": {
+      "get": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list2": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list1_list2",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - path-params-test - list2"
+      },
+      "put": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list2",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list2": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list2",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - list2"
+      },
+      "delete": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - list2"
+      },
+      "patch": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list2",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list2": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list2",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - list2"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-two-keys/nested-container-two-keys/mandatory-list-two-keys={id},{name}/list-nested-container": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list-nested-container": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - list-nested-container"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-nested-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:list-nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - list-nested-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - list-nested-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-nested-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:list-nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - list-nested-container"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-two-keys/nested-container-two-keys/mandatory-list-two-keys={id},{name}": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list-two-keys": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - mandatory-list-two-keys"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-two-keys",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-two-keys": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - mandatory-list-two-keys"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - mandatory-list-two-keys"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-two-keys",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-two-keys": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - mandatory-list-two-keys"
+      }
+    },
+    "/rests/data/mandatory-test:root-container": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - root-container"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - root-container"
+      },
+      "post": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "optional-presence-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "optional-presence-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - mandatory-test - root-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - root-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - root-container"
+      }
+    },
+    "/rests/data/typed-params:typed/int32={int32-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int32"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int32": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int32",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - int32"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int32",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int32"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - int32"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - int32"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int32",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int32"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - int32"
+      }
+    },
+    "/rests/operations/action-types:multi-container/inner-container/action": {
+      "post": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+                },
+                "type": "object"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC action success"
+          }
+        },
+        "description": "",
+        "summary": "POST - Controller - action-types - action"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-two-keys/nested-container-two-keys": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-container-two-keys": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - nested-container-two-keys"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-two-keys",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - nested-container-two-keys"
+      },
+      "post": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-list-two-keys",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-list-two-keys": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - test-container-childs - nested-container-two-keys"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - nested-container-two-keys"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-two-keys",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - nested-container-two-keys"
+      }
+    },
+    "/rests/data/typed-params:typed/union={union-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_union"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "union": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_union",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - union"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "union",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_union"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:union": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_union",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - union"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - union"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "union",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:union": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_union",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_union"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - union"
+      }
+    },
+    "/rests/data/definition-test:enum-container": {
+      "get": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_enum-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "enum-container": {
+                      "$ref": "#/components/schemas/definition-test_enum-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - definition-test - enum-container"
+      },
+      "put": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "enum-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_enum-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:enum-container": {
+                    "$ref": "#/components/schemas/definition-test_enum-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - Controller - enum-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - enum-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "enum-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:enum-container": {
+                    "$ref": "#/components/schemas/definition-test_enum-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_enum-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - enum-container"
+      }
+    },
+    "/rests/data/toaster2:toaster/toasterSlot={slotId}/toaster-augmented:slotInfo": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "slotInfo": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - slotInfo"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "slotInfo",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster-augmented:slotInfo": {
+                    "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - slotInfo"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - slotInfo"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "slotInfo",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster-augmented:slotInfo": {
+                    "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - slotInfo"
+      }
+    },
+    "/rests/data/recursive:container-root/root-list={name}": {
+      "get": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root_root-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/recursive_container-root_root-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - recursive - root-list"
+      },
+      "put": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:root-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - Controller - root-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - recursive - root-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:root-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - Controller - root-list"
+      }
+    },
+    "/rests/data/action-types:container": {
+      "get": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "container": {
+                      "$ref": "#/components/schemas/action-types_container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - action-types - container"
+      },
+      "put": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - Controller - container"
+      },
+      "delete": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - action-types - container"
+      },
+      "patch": {
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - Controller - container"
+      }
+    },
+    "/rests/data/typed-params:typed/enumeration={enumeration-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_enumeration"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "enumeration": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_enumeration",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - enumeration"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "enumeration",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_enumeration"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:enumeration": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_enumeration",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - enumeration"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - enumeration"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "enumeration",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:enumeration": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_enumeration",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_enumeration"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - enumeration"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "toaster2_lst_cont1": {
+        "properties": {
+          "lst11": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+            }
+          },
+          "cont11": {
+            "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+          }
+        },
+        "xml": {
+          "name": "cont1",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_cont1",
+        "type": "object"
+      },
+      "toaster2_make-toast_input": {
+        "properties": {
+          "toasterDoneness": {
+            "default": 5,
+            "description": "This variable controls how well-done is the\n      ensuing toast. It should be on a scale of 1 to 10.\n      Toast made at 10 generally is considered unfit\n      for human consumption; toast made at 1 is warmed\n      lightly.",
+            "type": "integer",
+            "example": 1,
+            "format": "int64"
+          },
+          "toasterToastType": {
+            "default": "wheat-bread",
+            "enum": [
+              "toast-type",
+              "wonder-bread",
+              "frozen-waffle",
+              "frozen-bagel",
+              "white-bread",
+              "hash-brown",
+              "wheat-bread"
+            ],
+            "description": "This variable informs the toaster of the type of\n      material that is being toasted. The toaster\n      uses this information, combined with\n      toasterDoneness, to compute for how\n      long the material must be toasted to achieve\n      the required doneness.",
+            "type": "string",
+            "example": "toast-type"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "title": "toaster2_make-toast_input",
+        "type": "object"
+      },
+      "typed-params_typed_boolean": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "boolean-key": {
+            "description": "",
+            "type": "boolean",
+            "example": true
+          }
+        },
+        "xml": {
+          "name": "boolean",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_boolean",
+        "type": "object"
+      },
+      "typed-params_typed_instance-identifier": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "instance-identifier-key": {
+            "description": "",
+            "type": "string",
+            "example": "/tparams:typed"
+          }
+        },
+        "xml": {
+          "name": "instance-identifier",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_instance-identifier",
+        "type": "object"
+      },
+      "test-container-childs_root-container": {
+        "properties": {
+          "nested-container": {
+            "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+          }
+        },
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container",
+        "type": "object"
+      },
+      "typed-params_typed_bits": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "bits-key": {
+            "default": "UP UP",
+            "enum": [
+              "UP"
+            ],
+            "description": "",
+            "type": "string",
+            "minItems": 0,
+            "uniqueItems": true
+          }
+        },
+        "xml": {
+          "name": "bits",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_bits",
+        "type": "object"
+      },
+      "recursive_container-root": {
+        "properties": {
+          "root-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/recursive_container-root_root-list"
+            }
+          }
+        },
+        "xml": {
+          "name": "container-root",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root",
+        "type": "object"
+      },
+      "typed-params_typed": {
+        "properties": {
+          "union": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_union"
+            }
+          },
+          "instance-identifier": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+            }
+          },
+          "uint64": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint64"
+            }
+          },
+          "string": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_string"
+            }
+          },
+          "int32": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int32"
+            }
+          },
+          "int64": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int64"
+            }
+          },
+          "int8": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int8"
+            }
+          },
+          "bits": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_bits"
+            }
+          },
+          "uint16": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint16"
+            }
+          },
+          "binary": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_binary"
+            }
+          },
+          "empty": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_empty"
+            }
+          },
+          "enumeration": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_enumeration"
+            }
+          },
+          "uint8": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint8"
+            }
+          },
+          "decimal64": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_decimal64"
+            }
+          },
+          "boolean": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_boolean"
+            }
+          },
+          "int16": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int16"
+            }
+          },
+          "uint32": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint32"
+            }
+          }
+        },
+        "xml": {
+          "name": "typed",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed",
+        "type": "object"
+      },
+      "action-types_container-action_output": {
+        "required": [
+          "ca-output"
+        ],
+        "properties": {
+          "ca-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_output",
+        "type": "object"
+      },
+      "typed-params_typed_uint32": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "uint32-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "uint32",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint32",
+        "type": "object"
+      },
+      "recursive_container-root_root-list_nested-list_super-nested-list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "super-nested-list",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root_root-list_nested-list_super-nested-list",
+        "type": "object"
+      },
+      "typed-params_typed_int16": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "int16-key": {
+            "description": "",
+            "type": "integer",
+            "example": -32768,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "int16",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int16",
+        "type": "object"
+      },
+      "toaster2_restock-toaster_input": {
+        "properties": {
+          "amountOfBreadToStock": {
+            "description": "Indicates the amount of bread to re-stock",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "title": "toaster2_restock-toaster_input",
+        "type": "object"
+      },
+      "typed-params_typed_decimal64": {
+        "properties": {
+          "decimal64-key": {
+            "description": "",
+            "type": "number",
+            "example": -92233720368547758.08
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "decimal64",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_decimal64",
+        "type": "object"
+      },
+      "definition-test_binary-container": {
+        "properties": {
+          "binary-data": {
+            "default": "SGVsbG8gdGVzdCE=",
+            "description": "",
+            "type": "string",
+            "format": "byte"
+          }
+        },
+        "xml": {
+          "name": "binary-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_binary-container",
+        "type": "object"
+      },
+      "toaster_toaster": {
+        "properties": {
+          "testToasterBits": {
+            "default": "testbit2",
+            "enum": [
+              "testbit1",
+              "testbit2"
+            ],
+            "description": "",
+            "type": "string",
+            "minItems": 0,
+            "uniqueItems": true
+          },
+          "allow-user": {
+            "description": "A list of user name patterns to allow",
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": "Some allow-user"
+            }
+          },
+          "interval": {
+            "default": 30,
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          },
+          "testUnion": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "title": "toaster_toaster",
+        "type": "object"
+      },
+      "typed-params_typed_string": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "string-key": {
+            "description": "",
+            "type": "string",
+            "example": "Some string-key"
+          }
+        },
+        "xml": {
+          "name": "string",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_string",
+        "type": "object"
+      },
+      "definition-test_union-container": {
+        "properties": {
+          "testUnion1": {
+            "default": "5",
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "testUnion3": {
+            "default": "false",
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "testBoolean": {
+            "default": true,
+            "description": "",
+            "type": "boolean",
+            "example": true
+          },
+          "testUnion2": {
+            "default": "false",
+            "description": "",
+            "type": "string",
+            "example": "Some testUnion2"
+          }
+        },
+        "xml": {
+          "name": "union-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_union-container",
+        "type": "object"
+      },
+      "toaster2_lst": {
+        "properties": {
+          "lf1": {
+            "description": "",
+            "type": "string",
+            "example": "Some lf1"
+          },
+          "cont1": {
+            "$ref": "#/components/schemas/toaster2_lst_cont1"
+          },
+          "lst1": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/toaster2_lst_lst1"
+            }
+          }
+        },
+        "xml": {
+          "name": "lst",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst",
+        "type": "object"
+      },
+      "action-types_multi-container": {
+        "properties": {
+          "inner-container": {
+            "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+          }
+        },
+        "xml": {
+          "name": "multi-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container",
+        "type": "object"
+      },
+      "typed-params_typed_binary": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "binary-key": {
+            "description": "",
+            "type": "string",
+            "format": "byte"
+          }
+        },
+        "xml": {
+          "name": "binary",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_binary",
+        "type": "object"
+      },
+      "mandatory-test_root-mandatory-list": {
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "root-mandatory-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some root-mandatory-list-field"
+          }
+        },
+        "xml": {
+          "name": "root-mandatory-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-mandatory-list",
+        "type": "object"
+      },
+      "action-types_multi-container_inner-container": {
+        "properties": {},
+        "xml": {
+          "name": "inner-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container_inner-container",
+        "type": "object"
+      },
+      "strings-from-regex_test": {
+        "properties": {
+          "login-date-time": {
+            "description": "",
+            "type": "string",
+            "example": "0000-00-00T00:00:00Z",
+            "minLength": 0,
+            "maxLength": 2147483647
+          },
+          "ipv4-address": {
+            "description": "",
+            "type": "string",
+            "example": "0.0.0.0",
+            "minLength": 0,
+            "maxLength": 2147483647
+          },
+          "mac-address": {
+            "description": "",
+            "type": "string",
+            "example": "00:00:00:00:00:00",
+            "minLength": 0,
+            "maxLength": 2147483647
+          }
+        },
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:strings:regex"
+        },
+        "description": "",
+        "title": "strings-from-regex_test",
+        "type": "object"
+      },
+      "mandatory-test_root-container_mandatory-container": {
+        "required": [
+          "mandatory-leaf",
+          "leaf-list-with-min-elements"
+        ],
+        "properties": {
+          "leaf-list-with-min-elements": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": "Some leaf-list-with-min-elements"
+            },
+            "example": [
+              "Some leaf-list-with-min-elements",
+              "Some leaf-list-with-min-elements"
+            ],
+            "minItems": 2
+          },
+          "mandatory-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-leaf"
+          }
+        },
+        "xml": {
+          "name": "mandatory-container",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_mandatory-container",
+        "type": "object"
+      },
+      "action-types_container": {
+        "properties": {},
+        "xml": {
+          "name": "container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_container",
+        "type": "object"
+      },
+      "typed-params_typed_int64": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "int64-key": {
+            "description": "",
+            "type": "integer",
+            "example": -9223372036854775808,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "int64",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int64",
+        "type": "object"
+      },
+      "typed-params_typed_uint64": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "uint64-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0
+          }
+        },
+        "xml": {
+          "name": "uint64",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint64",
+        "type": "object"
+      },
+      "mandatory-test_root-container_optional-list": {
+        "properties": {
+          "optional-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some optional-list-field"
+          },
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "optional-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_optional-list",
+        "type": "object"
+      },
+      "toaster2_toaster": {
+        "properties": {
+          "darknessFactor": {
+            "default": 1000,
+            "description": "The darkness factor. Basically, the number of ms to multiple the doneness value by.",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "toasterSlot": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+            }
+          }
+        },
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "title": "toaster2_toaster",
+        "type": "object"
+      },
+      "test-container-childs_root-container_nested-container_mandatory-list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "address": {
+            "description": "",
+            "type": "string",
+            "example": "Some address"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container_nested-container_mandatory-list",
+        "type": "object"
+      },
+      "path-params-test_cont": {
+        "properties": {
+          "list3": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list3"
+            }
+          },
+          "list1": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list1"
+            }
+          }
+        },
+        "xml": {
+          "name": "cont",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont",
+        "type": "object"
+      },
+      "toaster2_toaster_toasterSlot": {
+        "properties": {
+          "slotId": {
+            "description": "",
+            "type": "string",
+            "example": "Some slotId"
+          },
+          "slotInfo": {
+            "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+          }
+        },
+        "xml": {
+          "name": "toasterSlot",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_toaster_toasterSlot",
+        "type": "object"
+      },
+      "path-params-test_cont_list1_list2": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list2",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1_list2",
+        "type": "object"
+      },
+      "typed-params_typed_enumeration": {
+        "properties": {
+          "enumeration-key": {
+            "enum": [
+              "first",
+              "second",
+              "third"
+            ],
+            "description": "",
+            "type": "string",
+            "example": "first"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "enumeration",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_enumeration",
+        "type": "object"
+      },
+      "typed-params_typed_union": {
+        "properties": {
+          "union-key": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "union",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_union",
+        "type": "object"
+      },
+      "action-types_list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_list",
+        "type": "object"
+      },
+      "path-params-test_cont_list1_list4": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list4",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1_list4",
+        "type": "object"
+      },
+      "definition-test_number-container": {
+        "properties": {
+          "testUnsignedInteger": {
+            "default": 100,
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          },
+          "testUint64": {
+            "default": 42,
+            "description": "",
+            "type": "integer",
+            "example": 0
+          },
+          "testDouble": {
+            "default": 3.14159265359,
+            "description": "",
+            "type": "number",
+            "example": -92233720.36854775808
+          },
+          "testInt64": {
+            "default": 42,
+            "description": "",
+            "type": "integer",
+            "example": -9223372036854775808,
+            "format": "int64"
+          },
+          "testDecimal": {
+            "default": 3.14,
+            "description": "",
+            "type": "number",
+            "example": -92233720368547758.08
+          },
+          "testInteger": {
+            "default": 42,
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "number-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_number-container",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container": {
+        "properties": {
+          "nested-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some nested-leaf"
+          }
+        },
+        "xml": {
+          "name": "list-nested-container",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+        "type": "object"
+      },
+      "recursive_container-root_root-list_nested-list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "super-nested-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+            }
+          }
+        },
+        "xml": {
+          "name": "nested-list",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root_root-list_nested-list",
+        "type": "object"
+      },
+      "test-container-childs_root-container_nested-container": {
+        "required": [
+          "mandatory-list"
+        ],
+        "properties": {
+          "mandatory-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+            },
+            "example": [
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 0
+              },
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 1
+              },
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 2
+              }
+            ],
+            "minItems": 3,
+            "maxItems": 5
+          }
+        },
+        "xml": {
+          "name": "nested-container",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container_nested-container",
+        "type": "object"
+      },
+      "mandatory-test_root-container_optional-presence-container": {
+        "properties": {
+          "presence-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some presence-leaf"
+          }
+        },
+        "xml": {
+          "name": "optional-presence-container",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_optional-presence-container",
+        "type": "object"
+      },
+      "mandatory-test_root-optional-list": {
+        "properties": {
+          "root-optional-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some root-optional-list-field"
+          },
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "root-optional-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-optional-list",
+        "type": "object"
+      },
+      "definition-test_enum-container": {
+        "properties": {
+          "status": {
+            "default": "up",
+            "enum": [
+              "up",
+              "down"
+            ],
+            "description": "",
+            "type": "string",
+            "example": "up"
+          }
+        },
+        "xml": {
+          "name": "enum-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_enum-container",
+        "type": "object"
+      },
+      "path-params-test_cont_list1_cont2": {
+        "properties": {},
+        "xml": {
+          "name": "cont2",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1_cont2",
+        "type": "object"
+      },
+      "mandatory-test_root-container_mandatory-list": {
+        "required": [
+          "mandatory-list-field"
+        ],
+        "properties": {
+          "mandatory-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-list-field"
+          },
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_mandatory-list",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys": {
+        "properties": {
+          "nested-container-two-keys": {
+            "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+          }
+        },
+        "xml": {
+          "name": "root-container-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys",
+        "type": "object"
+      },
+      "test-container-childs_root-container-unique_nested-container-unique": {
+        "required": [
+          "mandatory-list-unique"
+        ],
+        "properties": {
+          "mandatory-list-unique": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+            },
+            "example": [
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "description": "Some description",
+                "id": 0
+              },
+              {
+                "address": "Some address_1",
+                "name": "Some name_1",
+                "description": "Some description",
+                "id": 1
+              },
+              {
+                "address": "Some address_2",
+                "name": "Some name_2",
+                "description": "Some description",
+                "id": 2
+              }
+            ],
+            "minItems": 3,
+            "maxItems": 5
+          }
+        },
+        "xml": {
+          "name": "nested-container-unique",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-unique_nested-container-unique",
+        "type": "object"
+      },
+      "mandatory-test_root-container": {
+        "required": [
+          "mandatory-root-leaf",
+          "mandatory-container",
+          "mandatory-first-choice",
+          "mandatory-list"
+        ],
+        "properties": {
+          "mandatory-root-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-root-leaf"
+          },
+          "mandatory-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+            },
+            "example": [
+              {
+                "id": 0,
+                "mandatory-list-field": "Some mandatory-list-field"
+              },
+              {
+                "id": 1,
+                "mandatory-list-field": "Some mandatory-list-field"
+              }
+            ],
+            "minItems": 2
+          },
+          "mandatory-first-choice": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-first-choice"
+          },
+          "optional-root-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some optional-root-leaf"
+          },
+          "optional-presence-container": {
+            "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+          },
+          "mandatory-container": {
+            "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+          },
+          "optional-first-choice": {
+            "description": "",
+            "type": "string",
+            "example": "Some optional-first-choice"
+          },
+          "optional-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+            }
+          }
+        },
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container",
+        "type": "object"
+      },
+      "typed-params_typed_int32": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "int32-key": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "int32",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int32",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys_nested-container-two-keys": {
+        "required": [
+          "mandatory-list-two-keys"
+        ],
+        "properties": {
+          "mandatory-list-two-keys": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+            },
+            "example": [
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 0
+              },
+              {
+                "address": "Some address",
+                "name": "Some name_1",
+                "id": 1
+              },
+              {
+                "address": "Some address",
+                "name": "Some name_2",
+                "id": 2
+              }
+            ],
+            "minItems": 3,
+            "maxItems": 5
+          }
+        },
+        "xml": {
+          "name": "nested-container-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys_nested-container-two-keys",
+        "type": "object"
+      },
+      "typed-params_typed_empty": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "empty-key": {
+            "description": "",
+            "type": "object"
+          }
+        },
+        "xml": {
+          "name": "empty",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_empty",
+        "type": "object"
+      },
+      "toaster2_toaster_toasterSlot_slotInfo": {
+        "properties": {
+          "numberOfToastPrepared": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "slotInfo",
+          "namespace": "http://netconfcentral.org/ns/toaster/augmented"
+        },
+        "description": "",
+        "title": "toaster2_toaster_toasterSlot_slotInfo",
+        "type": "object"
+      },
+      "typed-params_typed_uint16": {
+        "properties": {
+          "uint16-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "uint16",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint16",
+        "type": "object"
+      },
+      "choice-test_second-container": {
+        "properties": {
+          "leaf-first-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-first-case"
+          }
+        },
+        "xml": {
+          "name": "second-container",
+          "namespace": "urn:opendaylight:choice-test"
+        },
+        "description": "",
+        "title": "choice-test_second-container",
+        "type": "object"
+      },
+      "string-types_test": {
+        "properties": {
+          "phys-address": {
+            "description": "",
+            "type": "string",
+            "example": "00:",
+            "minLength": 0,
+            "maxLength": 2147483647
+          },
+          "mac-address": {
+            "description": "",
+            "type": "string",
+            "example": "00:",
+            "minLength": 6,
+            "maxLength": 6
+          },
+          "braille-patterns": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "date-and-time": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 8,
+            "maxLength": 11
+          },
+          "display-string": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 0,
+            "maxLength": 255
+          },
+          "thai": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "mathematical-operators": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "arrows": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          }
+        },
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:string:types"
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "title": "string-types_test",
+        "type": "object"
+      },
+      "toaster_make-toast_input": {
+        "properties": {
+          "toasterDoneness": {
+            "default": 5,
+            "description": "This variable controls how well-done is the\n      ensuing toast. It should be on a scale of 1 to 10.\n      Toast made at 10 generally is considered unfit\n      for human consumption; toast made at 1 is warmed\n      lightly.",
+            "type": "integer",
+            "example": 1,
+            "format": "int64"
+          },
+          "toasterToastType": {
+            "default": "wheat-bread",
+            "enum": [
+              "toast-type",
+              "white-bread",
+              "wheat-bread",
+              "wonder-bread",
+              "frozen-bagel",
+              "frozen-waffle",
+              "hash-brown"
+            ],
+            "description": "This variable informs the toaster of the type of\n      material that is being toasted. The toaster\n      uses this information, combined with\n      toasterDoneness, to compute for how\n      long the material must be toasted to achieve\n      the required doneness.",
+            "type": "string",
+            "example": "toast-type"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        },
+        "title": "toaster_make-toast_input",
+        "type": "object"
+      },
+      "typed-params_typed_uint8": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "uint8-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "uint8",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint8",
+        "type": "object"
+      },
+      "action-types_container-action_input": {
+        "required": [
+          "ca-input"
+        ],
+        "properties": {
+          "ca-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_input",
+        "type": "object"
+      },
+      "toaster2_lst_lst1": {
+        "properties": {
+          "lf11": {
+            "description": "",
+            "type": "integer",
+            "example": -32768,
+            "format": "int32"
+          },
+          "key2": {
+            "description": "",
+            "type": "integer",
+            "example": -128,
+            "format": "int32"
+          },
+          "key1": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "lst1",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_lst1",
+        "type": "object"
+      },
+      "toaster2_lst_cont1_cont11": {
+        "properties": {
+          "lf112": {
+            "description": "",
+            "type": "string",
+            "example": "Some lf112"
+          },
+          "lf111": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "cont11",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_cont1_cont11",
+        "type": "object"
+      },
+      "test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique": {
+        "properties": {
+          "address": {
+            "description": "",
+            "type": "string",
+            "example": "Some address"
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "description": {
+            "description": "",
+            "type": "string",
+            "example": "Some description"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list-unique",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+        "type": "object"
+      },
+      "toaster2_lst_cont1_lst11": {
+        "properties": {
+          "lf111": {
+            "description": "",
+            "type": "string",
+            "example": "Some lf111"
+          }
+        },
+        "xml": {
+          "name": "lst11",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_cont1_lst11",
+        "type": "object"
+      },
+      "my-yang_data": {
+        "properties": {
+          "my-data": {
+            "description": "",
+            "type": "string",
+            "example": "Some my-data"
+          }
+        },
+        "xml": {
+          "name": "data",
+          "namespace": "urn:opendaylight:params:xml:ns:yang:my-yang"
+        },
+        "description": "",
+        "title": "my-yang_data",
+        "type": "object"
+      },
+      "typed-params_typed_int8": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "int8-key": {
+            "description": "",
+            "type": "integer",
+            "example": -128,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "int8",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int8",
+        "type": "object"
+      },
+      "action-types_list-action_input": {
+        "required": [
+          "la-input"
+        ],
+        "properties": {
+          "la-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_input",
+        "type": "object"
+      },
+      "recursive_container-root_root-list": {
+        "properties": {
+          "nested-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+            }
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "root-list",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root_root-list",
+        "type": "object"
+      },
+      "test-container-childs_root-container-unique": {
+        "properties": {
+          "nested-container-unique": {
+            "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+          }
+        },
+        "xml": {
+          "name": "root-container-unique",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-unique",
+        "type": "object"
+      },
+      "choice-test_first-container": {
+        "properties": {
+          "leaf-default": {
+            "default": "default-value",
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-default"
+          }
+        },
+        "xml": {
+          "name": "first-container",
+          "namespace": "urn:opendaylight:choice-test"
+        },
+        "description": "",
+        "title": "choice-test_first-container",
+        "type": "object"
+      },
+      "action-types_list-action_output": {
+        "required": [
+          "la-output"
+        ],
+        "properties": {
+          "la-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_output",
+        "type": "object"
+      },
+      "definition-test_network-container": {
+        "properties": {
+          "network-ref": {
+            "default": "/network/nodes[node-id='node1']",
+            "description": "",
+            "type": "string",
+            "example": "/sample:binary-container"
+          }
+        },
+        "xml": {
+          "name": "network-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_network-container",
+        "type": "object"
+      },
+      "path-params-test_cont_list1": {
+        "properties": {
+          "list2": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+            }
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "cont2": {
+            "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+          },
+          "list4": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+            }
+          }
+        },
+        "xml": {
+          "name": "list1",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1",
+        "type": "object"
+      },
+      "path-params-test_cont_list3": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list3",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list3",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys": {
+        "properties": {
+          "address": {
+            "description": "",
+            "type": "string",
+            "example": "Some address"
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "list-nested-container": {
+            "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+          },
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-choice-test.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-choice-test.json
new file mode 100644 (file)
index 0000000..4c28ff9
--- /dev/null
@@ -0,0 +1,360 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "choice-test",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/choice-test:second-container": {
+      "get": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/choice-test_second-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "second-container": {
+                      "$ref": "#/components/schemas/choice-test_second-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - choice-test - second-container"
+      },
+      "put": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "second-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_second-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "choice-test:second-container": {
+                    "$ref": "#/components/schemas/choice-test_second-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - choice-test - Controller - second-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - choice-test - second-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "second-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "choice-test:second-container": {
+                    "$ref": "#/components/schemas/choice-test_second-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_second-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - choice-test - Controller - second-container"
+      }
+    },
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_first-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "first-container": {
+                    "$ref": "#/components/schemas/choice-test_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - choice-test - choice-test"
+      }
+    },
+    "/rests/data/choice-test:first-container": {
+      "get": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/choice-test_first-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "first-container": {
+                      "$ref": "#/components/schemas/choice-test_first-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - choice-test - first-container"
+      },
+      "put": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_first-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "choice-test:first-container": {
+                    "$ref": "#/components/schemas/choice-test_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - choice-test - Controller - first-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - choice-test - first-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "choice-test:first-container": {
+                    "$ref": "#/components/schemas/choice-test_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_first-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - choice-test - Controller - first-container"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "choice-test_first-container": {
+        "properties": {
+          "leaf-default": {
+            "default": "default-value",
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-default"
+          }
+        },
+        "xml": {
+          "name": "first-container",
+          "namespace": "urn:opendaylight:choice-test"
+        },
+        "description": "",
+        "title": "choice-test_first-container",
+        "type": "object"
+      },
+      "choice-test_second-container": {
+        "properties": {
+          "leaf-first-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-first-case"
+          }
+        },
+        "xml": {
+          "name": "second-container",
+          "namespace": "urn:opendaylight:choice-test"
+        },
+        "description": "",
+        "title": "choice-test_second-container",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-definition-test.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-definition-test.json
new file mode 100644 (file)
index 0000000..d16cd6d
--- /dev/null
@@ -0,0 +1,862 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "definition-test",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "binary-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_binary-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "binary-container": {
+                    "$ref": "#/components/schemas/definition-test_binary-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - definition-test - definition-test"
+      }
+    },
+    "/rests/data/definition-test:binary-container": {
+      "get": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_binary-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "binary-container": {
+                      "$ref": "#/components/schemas/definition-test_binary-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - definition-test - binary-container"
+      },
+      "put": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "binary-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_binary-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:binary-container": {
+                    "$ref": "#/components/schemas/definition-test_binary-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - Controller - binary-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - binary-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "binary-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:binary-container": {
+                    "$ref": "#/components/schemas/definition-test_binary-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_binary-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - binary-container"
+      }
+    },
+    "/rests/data/definition-test:enum-container": {
+      "get": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_enum-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "enum-container": {
+                      "$ref": "#/components/schemas/definition-test_enum-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - definition-test - enum-container"
+      },
+      "put": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "enum-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_enum-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:enum-container": {
+                    "$ref": "#/components/schemas/definition-test_enum-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - Controller - enum-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - enum-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "enum-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:enum-container": {
+                    "$ref": "#/components/schemas/definition-test_enum-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_enum-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - enum-container"
+      }
+    },
+    "/rests/data/definition-test:number-container": {
+      "get": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_number-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "number-container": {
+                      "$ref": "#/components/schemas/definition-test_number-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - definition-test - number-container"
+      },
+      "put": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "number-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_number-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:number-container": {
+                    "$ref": "#/components/schemas/definition-test_number-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - Controller - number-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - number-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "number-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:number-container": {
+                    "$ref": "#/components/schemas/definition-test_number-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_number-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - number-container"
+      }
+    },
+    "/rests/data/definition-test:union-container": {
+      "get": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_union-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "union-container": {
+                      "$ref": "#/components/schemas/definition-test_union-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - definition-test - union-container"
+      },
+      "put": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "union-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_union-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:union-container": {
+                    "$ref": "#/components/schemas/definition-test_union-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - Controller - union-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - union-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "union-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:union-container": {
+                    "$ref": "#/components/schemas/definition-test_union-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_union-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - union-container"
+      }
+    },
+    "/rests/data/definition-test:network-container": {
+      "get": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_network-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "network-container": {
+                      "$ref": "#/components/schemas/definition-test_network-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - definition-test - network-container"
+      },
+      "put": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "network-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_network-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:network-container": {
+                    "$ref": "#/components/schemas/definition-test_network-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - Controller - network-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - network-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "network-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:network-container": {
+                    "$ref": "#/components/schemas/definition-test_network-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_network-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - network-container"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "definition-test_union-container": {
+        "properties": {
+          "testUnion3": {
+            "default": "false",
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "testUnion1": {
+            "default": "5",
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "testUnion2": {
+            "default": "false",
+            "description": "",
+            "type": "string",
+            "example": "Some testUnion2"
+          },
+          "testBoolean": {
+            "default": true,
+            "description": "",
+            "type": "boolean",
+            "example": true
+          }
+        },
+        "xml": {
+          "name": "union-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_union-container",
+        "type": "object"
+      },
+      "definition-test_number-container": {
+        "properties": {
+          "testInteger": {
+            "default": 42,
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "testDecimal": {
+            "default": 3.14,
+            "description": "",
+            "type": "number",
+            "example": -92233720368547758.08
+          },
+          "testInt64": {
+            "default": 42,
+            "description": "",
+            "type": "integer",
+            "example": -9223372036854775808,
+            "format": "int64"
+          },
+          "testDouble": {
+            "default": 3.14159265359,
+            "description": "",
+            "type": "number",
+            "example": -92233720.36854775808
+          },
+          "testUint64": {
+            "default": 42,
+            "description": "",
+            "type": "integer",
+            "example": 0
+          },
+          "testUnsignedInteger": {
+            "default": 100,
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "number-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_number-container",
+        "type": "object"
+      },
+      "definition-test_network-container": {
+        "properties": {
+          "network-ref": {
+            "default": "/network/nodes[node-id='node1']",
+            "description": "",
+            "type": "string",
+            "example": "/sample:binary-container"
+          }
+        },
+        "xml": {
+          "name": "network-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_network-container",
+        "type": "object"
+      },
+      "definition-test_enum-container": {
+        "properties": {
+          "status": {
+            "default": "up",
+            "enum": [
+              "up",
+              "down"
+            ],
+            "description": "",
+            "type": "string",
+            "example": "up"
+          }
+        },
+        "xml": {
+          "name": "enum-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_enum-container",
+        "type": "object"
+      },
+      "definition-test_binary-container": {
+        "properties": {
+          "binary-data": {
+            "default": "SGVsbG8gdGVzdCE=",
+            "description": "",
+            "type": "string",
+            "format": "byte"
+          }
+        },
+        "xml": {
+          "name": "binary-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_binary-container",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-mandatory-test.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-mandatory-test.json
new file mode 100644 (file)
index 0000000..2ec31b4
--- /dev/null
@@ -0,0 +1,1399 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "mandatory-test",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/mandatory-test:root-mandatory-list={id}": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-mandatory-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-mandatory-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-mandatory-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - root-mandatory-list"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-mandatory-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - root-mandatory-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - root-mandatory-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-mandatory-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-mandatory-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - root-mandatory-list"
+      }
+    },
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "root-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - mandatory-test - mandatory-test"
+      }
+    },
+    "/rests/data/mandatory-test:root-container/optional-list={id}": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "optional-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-container_optional-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - optional-list"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "optional-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - optional-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - optional-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "optional-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - optional-list"
+      }
+    },
+    "/rests/data/mandatory-test:root-container/optional-presence-container": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "optional-presence-container": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - optional-presence-container"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "optional-presence-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-presence-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - optional-presence-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - optional-presence-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "optional-presence-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-presence-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - optional-presence-container"
+      }
+    },
+    "/rests/data/mandatory-test:root-optional-list={id}": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-optional-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-optional-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-optional-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - root-optional-list"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-optional-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-optional-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - root-optional-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - root-optional-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-optional-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-optional-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - root-optional-list"
+      }
+    },
+    "/rests/data/mandatory-test:root-container": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - root-container"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - root-container"
+      },
+      "post": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "optional-presence-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "optional-presence-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - mandatory-test - root-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - root-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - root-container"
+      }
+    },
+    "/rests/data/mandatory-test:root-container/mandatory-container": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-container": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - mandatory-container"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - mandatory-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - mandatory-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - mandatory-container"
+      }
+    },
+    "/rests/data/mandatory-test:root-container/mandatory-list={id}": {
+      "get": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - mandatory-list"
+      },
+      "put": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - mandatory-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - mandatory-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - mandatory-list"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "mandatory-test_root-container_mandatory-list": {
+        "required": [
+          "mandatory-list-field"
+        ],
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "mandatory-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-list-field"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_mandatory-list",
+        "type": "object"
+      },
+      "mandatory-test_root-container": {
+        "required": [
+          "mandatory-root-leaf",
+          "mandatory-container",
+          "mandatory-first-choice",
+          "mandatory-list"
+        ],
+        "properties": {
+          "optional-first-choice": {
+            "description": "",
+            "type": "string",
+            "example": "Some optional-first-choice"
+          },
+          "mandatory-container": {
+            "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+          },
+          "optional-presence-container": {
+            "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+          },
+          "optional-root-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some optional-root-leaf"
+          },
+          "mandatory-first-choice": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-first-choice"
+          },
+          "mandatory-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+            },
+            "example": [
+              {
+                "id": 0,
+                "mandatory-list-field": "Some mandatory-list-field"
+              },
+              {
+                "id": 1,
+                "mandatory-list-field": "Some mandatory-list-field"
+              }
+            ],
+            "minItems": 2
+          },
+          "mandatory-root-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-root-leaf"
+          },
+          "optional-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+            }
+          }
+        },
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container",
+        "type": "object"
+      },
+      "mandatory-test_root-container_optional-list": {
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "optional-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some optional-list-field"
+          }
+        },
+        "xml": {
+          "name": "optional-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_optional-list",
+        "type": "object"
+      },
+      "mandatory-test_root-container_optional-presence-container": {
+        "properties": {
+          "presence-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some presence-leaf"
+          }
+        },
+        "xml": {
+          "name": "optional-presence-container",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_optional-presence-container",
+        "type": "object"
+      },
+      "mandatory-test_root-optional-list": {
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "root-optional-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some root-optional-list-field"
+          }
+        },
+        "xml": {
+          "name": "root-optional-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-optional-list",
+        "type": "object"
+      },
+      "mandatory-test_root-mandatory-list": {
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "root-mandatory-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some root-mandatory-list-field"
+          }
+        },
+        "xml": {
+          "name": "root-mandatory-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-mandatory-list",
+        "type": "object"
+      },
+      "mandatory-test_root-container_mandatory-container": {
+        "required": [
+          "mandatory-leaf",
+          "leaf-list-with-min-elements"
+        ],
+        "properties": {
+          "leaf-list-with-min-elements": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": "Some leaf-list-with-min-elements"
+            },
+            "example": [
+              "Some leaf-list-with-min-elements",
+              "Some leaf-list-with-min-elements"
+            ],
+            "minItems": 2
+          },
+          "mandatory-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-leaf"
+          }
+        },
+        "xml": {
+          "name": "mandatory-container",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_mandatory-container",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-my-yang.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-my-yang.json
new file mode 100644 (file)
index 0000000..d067e26
--- /dev/null
@@ -0,0 +1,212 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "my-yang",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "data",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/my-yang_data"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "data": {
+                    "$ref": "#/components/schemas/my-yang_data",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "demo yang file\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - my-yang - my-yang"
+      }
+    },
+    "/rests/data/my-yang:data": {
+      "get": {
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/my-yang_data"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "data": {
+                      "$ref": "#/components/schemas/my-yang_data",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - my-yang - data"
+      },
+      "put": {
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "data",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/my-yang_data"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "my-yang:data": {
+                    "$ref": "#/components/schemas/my-yang_data",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - my-yang - Controller - data"
+      },
+      "delete": {
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - my-yang - data"
+      },
+      "patch": {
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "data",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "my-yang:data": {
+                    "$ref": "#/components/schemas/my-yang_data",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/my-yang_data"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - my-yang - Controller - data"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "my-yang_data": {
+        "properties": {
+          "my-data": {
+            "description": "",
+            "type": "string",
+            "example": "Some my-data"
+          }
+        },
+        "xml": {
+          "name": "data",
+          "namespace": "urn:opendaylight:params:xml:ns:yang:my-yang"
+        },
+        "description": "",
+        "title": "my-yang_data",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-opflex.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-opflex.json
new file mode 100644 (file)
index 0000000..492bc77
--- /dev/null
@@ -0,0 +1,28 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "opflex",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {},
+  "components": {
+    "schemas": {},
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-path-params-test.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-path-params-test.json
new file mode 100644 (file)
index 0000000..a6a8682
--- /dev/null
@@ -0,0 +1,1278 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "path-params-test",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/path-params-test:cont/list1={name}/cont2": {
+      "get": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont2": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_cont2",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - path-params-test - cont2"
+      },
+      "put": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont2",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont2": {
+                    "$ref": "#/components/schemas/path-params-test_cont_list1_cont2",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - cont2"
+      },
+      "delete": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - cont2"
+      },
+      "patch": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont2",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont2": {
+                    "$ref": "#/components/schemas/path-params-test_cont_list1_cont2",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - cont2"
+      }
+    },
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cont",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "cont": {
+                    "$ref": "#/components/schemas/path-params-test_cont",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - path-params-test - path-params-test"
+      }
+    },
+    "/rests/data/path-params-test:cont/list1={name}": {
+      "get": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list1": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list1",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - path-params-test - list1"
+      },
+      "put": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list1",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - list1"
+      },
+      "delete": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - list1"
+      },
+      "patch": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list1",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - list1"
+      }
+    },
+    "/rests/data/path-params-test:cont/list3={name}": {
+      "get": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list3"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list3": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list3",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - path-params-test - list3"
+      },
+      "put": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list3",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list3"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list3": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list3",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - list3"
+      },
+      "delete": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - list3"
+      },
+      "patch": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list3",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list3": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list3",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list3"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - list3"
+      }
+    },
+    "/rests/data/path-params-test:cont/list1={name}/list2={name1}": {
+      "get": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list2": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list1_list2",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - path-params-test - list2"
+      },
+      "put": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list2",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list2": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list2",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - list2"
+      },
+      "delete": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - list2"
+      },
+      "patch": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list2",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list2": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list2",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - list2"
+      }
+    },
+    "/rests/data/path-params-test:cont": {
+      "get": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont": {
+                      "$ref": "#/components/schemas/path-params-test_cont",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - path-params-test - cont"
+      },
+      "put": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cont",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont": {
+                    "$ref": "#/components/schemas/path-params-test_cont",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - cont"
+      },
+      "post": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "list1",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "list1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - path-params-test - cont"
+      },
+      "delete": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - cont"
+      },
+      "patch": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cont",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont": {
+                    "$ref": "#/components/schemas/path-params-test_cont",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - cont"
+      }
+    },
+    "/rests/data/path-params-test:cont/list1={name}/list4={name1}": {
+      "get": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list4": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list1_list4",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - path-params-test - list4"
+      },
+      "put": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list4",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list4": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list4",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - list4"
+      },
+      "delete": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - list4"
+      },
+      "patch": {
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list4",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list4": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list4",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - list4"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "path-params-test_cont_list1": {
+        "properties": {
+          "cont2": {
+            "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "list2": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+            }
+          },
+          "list4": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+            }
+          }
+        },
+        "xml": {
+          "name": "list1",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1",
+        "type": "object"
+      },
+      "path-params-test_cont_list3": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list3",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list3",
+        "type": "object"
+      },
+      "path-params-test_cont": {
+        "properties": {
+          "list3": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list3"
+            }
+          },
+          "list1": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list1"
+            }
+          }
+        },
+        "xml": {
+          "name": "cont",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont",
+        "type": "object"
+      },
+      "path-params-test_cont_list1_list2": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list2",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1_list2",
+        "type": "object"
+      },
+      "path-params-test_cont_list1_cont2": {
+        "properties": {},
+        "xml": {
+          "name": "cont2",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1_cont2",
+        "type": "object"
+      },
+      "path-params-test_cont_list1_list4": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list4",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1_list4",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-recursive.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-recursive.json
new file mode 100644 (file)
index 0000000..93b66f7
--- /dev/null
@@ -0,0 +1,933 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "recursive",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/recursive:container-root/root-list={name}/nested-list={name1}/super-nested-list={name2}": {
+      "get": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "super-nested-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - recursive - super-nested-list"
+      },
+      "put": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "super-nested-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:super-nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - Controller - super-nested-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - recursive - super-nested-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "super-nested-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:super-nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - Controller - super-nested-list"
+      }
+    },
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "container-root": {
+                    "$ref": "#/components/schemas/recursive_container-root",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - recursive - recursive"
+      }
+    },
+    "/rests/data/recursive:container-root/root-list={name}": {
+      "get": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root_root-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/recursive_container-root_root-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - recursive - root-list"
+      },
+      "put": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:root-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - Controller - root-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - recursive - root-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:root-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - Controller - root-list"
+      }
+    },
+    "/rests/data/recursive:container-root/root-list={name}/nested-list={name1}": {
+      "get": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - recursive - nested-list"
+      },
+      "put": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "nested-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - Controller - nested-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - recursive - nested-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "nested-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - Controller - nested-list"
+      }
+    },
+    "/rests/data/recursive:container-root": {
+      "get": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "container-root": {
+                      "$ref": "#/components/schemas/recursive_container-root",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - recursive - container-root"
+      },
+      "put": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:container-root": {
+                    "$ref": "#/components/schemas/recursive_container-root",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - Controller - container-root"
+      },
+      "post": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "root-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - recursive - container-root"
+      },
+      "delete": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - recursive - container-root"
+      },
+      "patch": {
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-root",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:container-root": {
+                    "$ref": "#/components/schemas/recursive_container-root",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - Controller - container-root"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "recursive_container-root_root-list": {
+        "properties": {
+          "nested-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+            }
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "root-list",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root_root-list",
+        "type": "object"
+      },
+      "recursive_container-root_root-list_nested-list": {
+        "properties": {
+          "super-nested-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+            }
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "nested-list",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root_root-list_nested-list",
+        "type": "object"
+      },
+      "recursive_container-root_root-list_nested-list_super-nested-list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "super-nested-list",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root_root-list_nested-list_super-nested-list",
+        "type": "object"
+      },
+      "recursive_container-root": {
+        "properties": {
+          "root-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/recursive_container-root_root-list"
+            }
+          }
+        },
+        "xml": {
+          "name": "container-root",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-string-from-regex.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-string-from-regex.json
new file mode 100644 (file)
index 0000000..9572222
--- /dev/null
@@ -0,0 +1,228 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "strings-from-regex",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test": {
+                    "$ref": "#/components/schemas/strings-from-regex_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-from-regex_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - strings-from-regex - strings-from-regex"
+      }
+    },
+    "/rests/data/strings-from-regex:test": {
+      "get": {
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "test": {
+                      "$ref": "#/components/schemas/strings-from-regex_test",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/strings-from-regex_test"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - strings-from-regex - test"
+      },
+      "put": {
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "strings-from-regex:test": {
+                    "$ref": "#/components/schemas/strings-from-regex_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-from-regex_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - strings-from-regex - Controller - test"
+      },
+      "delete": {
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - strings-from-regex - test"
+      },
+      "patch": {
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-from-regex_test"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "strings-from-regex:test": {
+                    "$ref": "#/components/schemas/strings-from-regex_test",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - strings-from-regex - Controller - test"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "strings-from-regex_test": {
+        "properties": {
+          "login-date-time": {
+            "description": "",
+            "type": "string",
+            "example": "0000-00-00T00:00:00Z",
+            "minLength": 0,
+            "maxLength": 2147483647
+          },
+          "mac-address": {
+            "description": "",
+            "type": "string",
+            "example": "00:00:00:00:00:00",
+            "minLength": 0,
+            "maxLength": 2147483647
+          },
+          "ipv4-address": {
+            "description": "",
+            "type": "string",
+            "example": "0.0.0.0",
+            "minLength": 0,
+            "maxLength": 2147483647
+          }
+        },
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:strings:regex"
+        },
+        "description": "",
+        "title": "strings-from-regex_test",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-string-types.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-string-types.json
new file mode 100644 (file)
index 0000000..6561565
--- /dev/null
@@ -0,0 +1,263 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "string-types",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/string-types_test"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test": {
+                    "$ref": "#/components/schemas/string-types_test",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - string-types - string-types"
+      }
+    },
+    "/rests/data/string-types:test": {
+      "get": {
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/string-types_test"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "test": {
+                      "$ref": "#/components/schemas/string-types_test",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "GET - Controller - string-types - test"
+      },
+      "put": {
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/string-types_test"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "string-types:test": {
+                    "$ref": "#/components/schemas/string-types_test",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "PUT - string-types - Controller - test"
+      },
+      "delete": {
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "DELETE - Controller - string-types - test"
+      },
+      "patch": {
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "string-types:test": {
+                    "$ref": "#/components/schemas/string-types_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/string-types_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "PATCH - string-types - Controller - test"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "string-types_test": {
+        "properties": {
+          "date-and-time": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 8,
+            "maxLength": 11
+          },
+          "braille-patterns": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "mac-address": {
+            "description": "",
+            "type": "string",
+            "example": "00:",
+            "minLength": 6,
+            "maxLength": 6
+          },
+          "phys-address": {
+            "description": "",
+            "type": "string",
+            "example": "00:",
+            "minLength": 0,
+            "maxLength": 2147483647
+          },
+          "arrows": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "mathematical-operators": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "thai": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "display-string": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 0,
+            "maxLength": 255
+          }
+        },
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:string:types"
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "title": "string-types_test",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-test-container-childs.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-test-container-childs.json
new file mode 100644 (file)
index 0000000..398a18f
--- /dev/null
@@ -0,0 +1,2083 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "test-container-childs",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/test-container-childs:root-container/nested-container": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-container": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - nested-container"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - nested-container"
+      },
+      "post": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - test-container-childs - nested-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - nested-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - nested-container"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-two-keys/nested-container-two-keys": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-container-two-keys": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - nested-container-two-keys"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - nested-container-two-keys"
+      },
+      "post": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-list-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-list-two-keys": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - test-container-childs - nested-container-two-keys"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - nested-container-two-keys"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-two-keys",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - nested-container-two-keys"
+      }
+    },
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "root-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - test-container-childs - test-container-childs"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-unique": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container-unique": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-unique"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - root-container-unique"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - root-container-unique"
+      },
+      "post": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "nested-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - test-container-childs - root-container-unique"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - root-container-unique"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-unique",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - root-container-unique"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-unique/nested-container-unique": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-container-unique": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - nested-container-unique"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - nested-container-unique"
+      },
+      "post": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-list-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-list-unique": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - test-container-childs - nested-container-unique"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - nested-container-unique"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-unique",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - nested-container-unique"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-two-keys/nested-container-two-keys/mandatory-list-two-keys={id},{name}/list-nested-container": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list-nested-container": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - list-nested-container"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-nested-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:list-nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - list-nested-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - list-nested-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-nested-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:list-nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - list-nested-container"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-unique/nested-container-unique/mandatory-list-unique={id}": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list-unique": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - mandatory-list-unique"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-unique": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - mandatory-list-unique"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - mandatory-list-unique"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-unique",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-unique": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - mandatory-list-unique"
+      }
+    },
+    "/rests/data/test-container-childs:root-container/nested-container/mandatory-list={id}": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - mandatory-list"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - mandatory-list"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - mandatory-list"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - mandatory-list"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-two-keys/nested-container-two-keys/mandatory-list-two-keys={id},{name}": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list-two-keys": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - mandatory-list-two-keys"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-two-keys": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - mandatory-list-two-keys"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - mandatory-list-two-keys"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-two-keys",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-two-keys": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - mandatory-list-two-keys"
+      }
+    },
+    "/rests/data/test-container-childs:root-container": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - root-container"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - root-container"
+      },
+      "post": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - test-container-childs - root-container"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - root-container"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - root-container"
+      }
+    },
+    "/rests/data/test-container-childs:root-container-two-keys": {
+      "get": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container-two-keys": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - root-container-two-keys"
+      },
+      "put": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - root-container-two-keys"
+      },
+      "post": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "nested-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - test-container-childs - root-container-two-keys"
+      },
+      "delete": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - root-container-two-keys"
+      },
+      "patch": {
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-two-keys",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - root-container-two-keys"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "test-container-childs_root-container-unique": {
+        "properties": {
+          "nested-container-unique": {
+            "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+          }
+        },
+        "xml": {
+          "name": "root-container-unique",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-unique",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys": {
+        "properties": {
+          "nested-container-two-keys": {
+            "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+          }
+        },
+        "xml": {
+          "name": "root-container-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys",
+        "type": "object"
+      },
+      "test-container-childs_root-container-unique_nested-container-unique": {
+        "required": [
+          "mandatory-list-unique"
+        ],
+        "properties": {
+          "mandatory-list-unique": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+            },
+            "example": [
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "description": "Some description",
+                "id": 0
+              },
+              {
+                "address": "Some address_1",
+                "name": "Some name_1",
+                "description": "Some description",
+                "id": 1
+              },
+              {
+                "address": "Some address_2",
+                "name": "Some name_2",
+                "description": "Some description",
+                "id": 2
+              }
+            ],
+            "minItems": 3,
+            "maxItems": 5
+          }
+        },
+        "xml": {
+          "name": "nested-container-unique",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-unique_nested-container-unique",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container": {
+        "properties": {
+          "nested-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some nested-leaf"
+          }
+        },
+        "xml": {
+          "name": "list-nested-container",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys_nested-container-two-keys": {
+        "required": [
+          "mandatory-list-two-keys"
+        ],
+        "properties": {
+          "mandatory-list-two-keys": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+            },
+            "example": [
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 0
+              },
+              {
+                "address": "Some address",
+                "name": "Some name_1",
+                "id": 1
+              },
+              {
+                "address": "Some address",
+                "name": "Some name_2",
+                "id": 2
+              }
+            ],
+            "minItems": 3,
+            "maxItems": 5
+          }
+        },
+        "xml": {
+          "name": "nested-container-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys_nested-container-two-keys",
+        "type": "object"
+      },
+      "test-container-childs_root-container": {
+        "properties": {
+          "nested-container": {
+            "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+          }
+        },
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container",
+        "type": "object"
+      },
+      "test-container-childs_root-container_nested-container_mandatory-list": {
+        "properties": {
+          "address": {
+            "description": "",
+            "type": "string",
+            "example": "Some address"
+          },
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container_nested-container_mandatory-list",
+        "type": "object"
+      },
+      "test-container-childs_root-container_nested-container": {
+        "required": [
+          "mandatory-list"
+        ],
+        "properties": {
+          "mandatory-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+            },
+            "example": [
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 0
+              },
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 1
+              },
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 2
+              }
+            ],
+            "minItems": 3,
+            "maxItems": 5
+          }
+        },
+        "xml": {
+          "name": "nested-container",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container_nested-container",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys": {
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "list-nested-container": {
+            "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "address": {
+            "description": "",
+            "type": "string",
+            "example": "Some address"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+        "type": "object"
+      },
+      "test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique": {
+        "properties": {
+          "description": {
+            "description": "",
+            "type": "string",
+            "example": "Some description"
+          },
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "address": {
+            "description": "",
+            "type": "string",
+            "example": "Some address"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list-unique",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-toaster-augmented.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-toaster-augmented.json
new file mode 100644 (file)
index 0000000..4cf79d6
--- /dev/null
@@ -0,0 +1,28 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "toaster-augmented",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {},
+  "components": {
+    "schemas": {},
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-toaster.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-toaster.json
new file mode 100644 (file)
index 0000000..a025d7c
--- /dev/null
@@ -0,0 +1,345 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "toaster",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_toaster"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster": {
+                    "$ref": "#/components/schemas/toaster_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "YANG version of the TOASTER-MIB.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - toaster - toaster"
+      }
+    },
+    "/rests/operations/toaster:cancel-toast": {
+      "post": {
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cancel-toast_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "http://netconfcentral.org/ns/toaster"
+                },
+                "type": "object"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC cancel-toast success"
+          }
+        },
+        "description": "Stop making toast, if any is being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - Controller - toaster - cancel-toast"
+      }
+    },
+    "/rests/data/toaster:toaster": {
+      "get": {
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster_toaster"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "toaster": {
+                      "$ref": "#/components/schemas/toaster_toaster",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - Controller - toaster - toaster"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_toaster"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster:toaster": {
+                    "$ref": "#/components/schemas/toaster_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster - Controller - toaster"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - Controller - toaster - toaster"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster:toaster": {
+                    "$ref": "#/components/schemas/toaster_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_toaster"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster - Controller - toaster"
+      }
+    },
+    "/rests/operations/toaster:make-toast": {
+      "post": {
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "make-toast_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_make-toast_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/toaster_make-toast_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC make-toast success"
+          }
+        },
+        "description": "Make some toast.\n  The toastDone notification will be sent when\n  the toast is finished.\n  An 'in-use' error will be returned if toast\n  is already being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - Controller - toaster - make-toast"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "toaster_make-toast_input": {
+        "properties": {
+          "toasterDoneness": {
+            "default": 5,
+            "description": "This variable controls how well-done is the\n      ensuing toast. It should be on a scale of 1 to 10.\n      Toast made at 10 generally is considered unfit\n      for human consumption; toast made at 1 is warmed\n      lightly.",
+            "type": "integer",
+            "example": 1,
+            "format": "int64"
+          },
+          "toasterToastType": {
+            "default": "wheat-bread",
+            "enum": [
+              "toast-type",
+              "frozen-waffle",
+              "wonder-bread",
+              "white-bread",
+              "hash-brown",
+              "frozen-bagel",
+              "wheat-bread"
+            ],
+            "description": "This variable informs the toaster of the type of\n      material that is being toasted. The toaster\n      uses this information, combined with\n      toasterDoneness, to compute for how\n      long the material must be toasted to achieve\n      the required doneness.",
+            "type": "string",
+            "example": "toast-type"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        },
+        "title": "toaster_make-toast_input",
+        "type": "object"
+      },
+      "toaster_toaster": {
+        "properties": {
+          "allow-user": {
+            "description": "A list of user name patterns to allow",
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": "Some allow-user"
+            }
+          },
+          "testToasterBits": {
+            "default": "testbit2",
+            "enum": [
+              "testbit1",
+              "testbit2"
+            ],
+            "description": "",
+            "type": "string",
+            "minItems": 0,
+            "uniqueItems": true
+          },
+          "testUnion": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "interval": {
+            "default": 30,
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "title": "toaster_toaster",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-toaster2.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-toaster2.json
new file mode 100644 (file)
index 0000000..d88f170
--- /dev/null
@@ -0,0 +1,1900 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "toaster2",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/operations/toaster2:cancel-toast": {
+      "post": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cancel-toast_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "http://netconfcentral.org/ns/toaster2"
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC cancel-toast success"
+          }
+        },
+        "description": "Stop making toast, if any is being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - Controller - toaster2 - cancel-toast"
+      }
+    },
+    "/rests/data/toaster2:lst={lf1}/cont1/cont11": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont11": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - cont11"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont11",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont11": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - cont11"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - cont11"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont11",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont11": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - cont11"
+      }
+    },
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster": {
+                    "$ref": "#/components/schemas/toaster2_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "YANG version of the TOASTER-MIB.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - toaster2 - toaster2"
+      }
+    },
+    "/rests/data/toaster2:lst={lf1}": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "lst": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_lst",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - lst"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - lst"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - lst"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - lst"
+      }
+    },
+    "/rests/data/toaster2:toaster": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "toaster": {
+                      "$ref": "#/components/schemas/toaster2_toaster",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_toaster"
+                }
+              }
+            }
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - Controller - toaster2 - toaster"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toaster": {
+                    "$ref": "#/components/schemas/toaster2_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster2 - Controller - toaster"
+      },
+      "post": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toasterSlot",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toasterSlot": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - toaster2 - toaster"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - Controller - toaster2 - toaster"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toaster": {
+                    "$ref": "#/components/schemas/toaster2_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster2 - Controller - toaster"
+      }
+    },
+    "/rests/data/toaster2:lst={lf1}/cont1": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont1": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_cont1"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - cont1"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont1",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont1": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - cont1"
+      },
+      "post": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont11",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "cont11": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - toaster2 - cont1"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - cont1"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont1",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont1": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - cont1"
+      }
+    },
+    "/rests/data/toaster2:toaster/toasterSlot={slotId}/toaster-augmented:slotInfo": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "slotInfo": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - slotInfo"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "slotInfo",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster-augmented:slotInfo": {
+                    "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - slotInfo"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - slotInfo"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "slotInfo",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster-augmented:slotInfo": {
+                    "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - slotInfo"
+      }
+    },
+    "/rests/operations/toaster2:make-toast": {
+      "post": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "make-toast_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/toaster2_make-toast_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_make-toast_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC make-toast success"
+          }
+        },
+        "description": "Make some toast.\n  The toastDone notification will be sent when\n  the toast is finished.\n  An 'in-use' error will be returned if toast\n  is already being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - Controller - toaster2 - make-toast"
+      }
+    },
+    "/rests/data/toaster2:lst={lf1}/cont1/lst11={lf111}": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "lst11": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_lst_cont1_lst11",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - lst11"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst11",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst11": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1_lst11",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - lst11"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - lst11"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst11",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst11": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1_lst11",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - lst11"
+      }
+    },
+    "/rests/data/toaster2:lst={lf1}/lst1={key1},{key2}": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "lst1": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_lst_lst1",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_lst1"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - lst1"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst1",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_lst1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_lst1"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - lst1"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - lst1"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst1",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_lst1"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_lst1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - lst1"
+      }
+    },
+    "/rests/data/toaster2:toaster/toasterSlot={slotId}": {
+      "get": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "toasterSlot": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - toaster2 - toasterSlot"
+      },
+      "put": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "toasterSlot",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toasterSlot": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - toasterSlot"
+      },
+      "delete": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - toasterSlot"
+      },
+      "patch": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "toasterSlot",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toasterSlot": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - toasterSlot"
+      }
+    },
+    "/rests/operations/toaster2:restock-toaster": {
+      "post": {
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "restock-toaster_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/toaster2_restock-toaster_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_restock-toaster_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC restock-toaster success"
+          }
+        },
+        "description": "Restocks the toaster with the amount of bread specified.",
+        "summary": "POST - Controller - toaster2 - restock-toaster"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "toaster2_lst_cont1": {
+        "properties": {
+          "lst11": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+            }
+          },
+          "cont11": {
+            "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+          }
+        },
+        "xml": {
+          "name": "cont1",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_cont1",
+        "type": "object"
+      },
+      "toaster2_make-toast_input": {
+        "properties": {
+          "toasterDoneness": {
+            "default": 5,
+            "description": "This variable controls how well-done is the\n      ensuing toast. It should be on a scale of 1 to 10.\n      Toast made at 10 generally is considered unfit\n      for human consumption; toast made at 1 is warmed\n      lightly.",
+            "type": "integer",
+            "example": 1,
+            "format": "int64"
+          },
+          "toasterToastType": {
+            "default": "wheat-bread",
+            "enum": [
+              "toast-type",
+              "white-bread",
+              "wheat-bread",
+              "frozen-waffle",
+              "hash-brown",
+              "wonder-bread",
+              "frozen-bagel"
+            ],
+            "description": "This variable informs the toaster of the type of\n      material that is being toasted. The toaster\n      uses this information, combined with\n      toasterDoneness, to compute for how\n      long the material must be toasted to achieve\n      the required doneness.",
+            "type": "string",
+            "example": "toast-type"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "title": "toaster2_make-toast_input",
+        "type": "object"
+      },
+      "toaster2_lst": {
+        "properties": {
+          "cont1": {
+            "$ref": "#/components/schemas/toaster2_lst_cont1"
+          },
+          "lf1": {
+            "description": "",
+            "type": "string",
+            "example": "Some lf1"
+          },
+          "lst1": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/toaster2_lst_lst1"
+            }
+          }
+        },
+        "xml": {
+          "name": "lst",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst",
+        "type": "object"
+      },
+      "toaster2_toaster": {
+        "properties": {
+          "darknessFactor": {
+            "default": 1000,
+            "description": "The darkness factor. Basically, the number of ms to multiple the doneness value by.",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "toasterSlot": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+            }
+          }
+        },
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "title": "toaster2_toaster",
+        "type": "object"
+      },
+      "toaster2_lst_lst1": {
+        "properties": {
+          "key1": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "key2": {
+            "description": "",
+            "type": "integer",
+            "example": -128,
+            "format": "int32"
+          },
+          "lf11": {
+            "description": "",
+            "type": "integer",
+            "example": -32768,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "lst1",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_lst1",
+        "type": "object"
+      },
+      "toaster2_lst_cont1_cont11": {
+        "properties": {
+          "lf111": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "lf112": {
+            "description": "",
+            "type": "string",
+            "example": "Some lf112"
+          }
+        },
+        "xml": {
+          "name": "cont11",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_cont1_cont11",
+        "type": "object"
+      },
+      "toaster2_toaster_toasterSlot_slotInfo": {
+        "properties": {
+          "numberOfToastPrepared": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "slotInfo",
+          "namespace": "http://netconfcentral.org/ns/toaster/augmented"
+        },
+        "description": "",
+        "title": "toaster2_toaster_toasterSlot_slotInfo",
+        "type": "object"
+      },
+      "toaster2_toaster_toasterSlot": {
+        "properties": {
+          "slotInfo": {
+            "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+          },
+          "slotId": {
+            "description": "",
+            "type": "string",
+            "example": "Some slotId"
+          }
+        },
+        "xml": {
+          "name": "toasterSlot",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_toaster_toasterSlot",
+        "type": "object"
+      },
+      "toaster2_lst_cont1_lst11": {
+        "properties": {
+          "lf111": {
+            "description": "",
+            "type": "string",
+            "example": "Some lf111"
+          }
+        },
+        "xml": {
+          "name": "lst11",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_cont1_lst11",
+        "type": "object"
+      },
+      "toaster2_restock-toaster_input": {
+        "properties": {
+          "amountOfBreadToStock": {
+            "description": "Indicates the amount of bread to re-stock",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "title": "toaster2_restock-toaster_input",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-typed-params.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-typed-params.json
new file mode 100644 (file)
index 0000000..7f1d2d5
--- /dev/null
@@ -0,0 +1,3711 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "typed-params",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/typed-params:typed/binary={binary-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_binary"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "binary": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_binary",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - binary"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "binary",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_binary"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:binary": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_binary",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - binary"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - binary"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "binary",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:binary": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_binary",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_binary"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - binary"
+      }
+    },
+    "/rests/data/typed-params:typed/instance-identifier={instance-identifier-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "instance-identifier": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_instance-identifier",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - instance-identifier"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "instance-identifier",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:instance-identifier": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_instance-identifier",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - instance-identifier"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - instance-identifier"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "instance-identifier",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:instance-identifier": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_instance-identifier",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - instance-identifier"
+      }
+    },
+    "/rests/data": {
+      "post": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "typed",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed": {
+                    "$ref": "#/components/schemas/typed-params_typed",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - typed-params - typed-params"
+      }
+    },
+    "/rests/data/typed-params:typed/uint32={uint32-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint32"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint32": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint32",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - uint32"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint32",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint32"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - uint32"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - uint32"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint32",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint32"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - uint32"
+      }
+    },
+    "/rests/data/typed-params:typed/decimal64={decimal64-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_decimal64"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "decimal64": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_decimal64",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - decimal64"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "decimal64",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_decimal64"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:decimal64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_decimal64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - decimal64"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - decimal64"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "decimal64",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:decimal64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_decimal64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_decimal64"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - decimal64"
+      }
+    },
+    "/rests/data/typed-params:typed/int64={int64-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int64"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int64": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int64",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - int64"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int64",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int64"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - int64"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - int64"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int64",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int64"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - int64"
+      }
+    },
+    "/rests/data/typed-params:typed/uint16={uint16-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint16"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint16": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint16",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - uint16"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint16",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint16"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - uint16"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - uint16"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint16",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint16"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - uint16"
+      }
+    },
+    "/rests/data/typed-params:typed/int32={int32-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int32"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int32": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int32",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - int32"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int32",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int32"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - int32"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - int32"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int32",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int32"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - int32"
+      }
+    },
+    "/rests/data/typed-params:typed/uint8={uint8-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint8"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint8": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint8",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - uint8"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint8",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint8"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - uint8"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - uint8"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint8",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint8"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - uint8"
+      }
+    },
+    "/rests/data/typed-params:typed/union={union-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_union"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "union": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_union",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - union"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "union",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_union"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:union": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_union",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - union"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - union"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "union",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:union": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_union",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_union"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - union"
+      }
+    },
+    "/rests/data/typed-params:typed/int8={int8-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int8"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int8": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int8",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - int8"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int8",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int8"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - int8"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - int8"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int8",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int8"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - int8"
+      }
+    },
+    "/rests/data/typed-params:typed/uint64={uint64-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint64"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint64": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint64",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - uint64"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint64",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint64"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - uint64"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - uint64"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint64",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint64"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - uint64"
+      }
+    },
+    "/rests/data/typed-params:typed/bits={bits-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_bits"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "bits": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_bits",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - bits"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "bits",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_bits"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:bits": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_bits",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - bits"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - bits"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "bits",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:bits": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_bits",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_bits"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - bits"
+      }
+    },
+    "/rests/data/typed-params:typed/int16={int16-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int16"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int16": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int16",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - int16"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int16",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int16"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - int16"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - int16"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int16",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int16"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - int16"
+      }
+    },
+    "/rests/data/typed-params:typed": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "typed": {
+                      "$ref": "#/components/schemas/typed-params_typed",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - typed"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "typed",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:typed": {
+                    "$ref": "#/components/schemas/typed-params_typed",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - typed"
+      },
+      "post": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "string",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_string"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "string": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_string",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - Controller - typed-params - typed"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - typed"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "typed",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:typed": {
+                    "$ref": "#/components/schemas/typed-params_typed",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - typed"
+      }
+    },
+    "/rests/data/typed-params:typed/string={string-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_string"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "string": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_string",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - string"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "string",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_string"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:string": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_string",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - string"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - string"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "string",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:string": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_string",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_string"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - string"
+      }
+    },
+    "/rests/data/typed-params:typed/boolean={boolean-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_boolean"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "boolean": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_boolean",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - boolean"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "boolean",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_boolean"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:boolean": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_boolean",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - boolean"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - boolean"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "boolean",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:boolean": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_boolean",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_boolean"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - boolean"
+      }
+    },
+    "/rests/data/typed-params:typed/empty={empty-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_empty"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "empty": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_empty",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - empty"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "empty",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_empty"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:empty": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_empty",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - empty"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - empty"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "empty",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:empty": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_empty",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_empty"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - empty"
+      }
+    },
+    "/rests/data/typed-params:typed/enumeration={enumeration-key}": {
+      "get": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_enumeration"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "enumeration": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_enumeration",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - Controller - typed-params - enumeration"
+      },
+      "put": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "enumeration",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_enumeration"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:enumeration": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_enumeration",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - Controller - enumeration"
+      },
+      "delete": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - enumeration"
+      },
+      "patch": {
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "enumeration",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:enumeration": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_enumeration",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_enumeration"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - enumeration"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "typed-params_typed_boolean": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "boolean-key": {
+            "description": "",
+            "type": "boolean",
+            "example": true
+          }
+        },
+        "xml": {
+          "name": "boolean",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_boolean",
+        "type": "object"
+      },
+      "typed-params_typed_instance-identifier": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "instance-identifier-key": {
+            "description": "",
+            "type": "string",
+            "example": "/tparams:typed"
+          }
+        },
+        "xml": {
+          "name": "instance-identifier",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_instance-identifier",
+        "type": "object"
+      },
+      "typed-params_typed_uint8": {
+        "properties": {
+          "uint8-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "uint8",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint8",
+        "type": "object"
+      },
+      "typed-params_typed_bits": {
+        "properties": {
+          "bits-key": {
+            "default": "UP UP",
+            "enum": [
+              "UP"
+            ],
+            "description": "",
+            "type": "string",
+            "minItems": 0,
+            "uniqueItems": true
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "bits",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_bits",
+        "type": "object"
+      },
+      "typed-params_typed_binary": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "binary-key": {
+            "description": "",
+            "type": "string",
+            "format": "byte"
+          }
+        },
+        "xml": {
+          "name": "binary",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_binary",
+        "type": "object"
+      },
+      "typed-params_typed": {
+        "properties": {
+          "boolean": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_boolean"
+            }
+          },
+          "decimal64": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_decimal64"
+            }
+          },
+          "uint8": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint8"
+            }
+          },
+          "enumeration": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_enumeration"
+            }
+          },
+          "empty": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_empty"
+            }
+          },
+          "binary": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_binary"
+            }
+          },
+          "uint16": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint16"
+            }
+          },
+          "bits": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_bits"
+            }
+          },
+          "int8": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int8"
+            }
+          },
+          "int64": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int64"
+            }
+          },
+          "int32": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int32"
+            }
+          },
+          "string": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_string"
+            }
+          },
+          "uint64": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint64"
+            }
+          },
+          "instance-identifier": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+            }
+          },
+          "union": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_union"
+            }
+          },
+          "uint32": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint32"
+            }
+          },
+          "int16": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int16"
+            }
+          }
+        },
+        "xml": {
+          "name": "typed",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed",
+        "type": "object"
+      },
+      "typed-params_typed_int8": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "int8-key": {
+            "description": "",
+            "type": "integer",
+            "example": -128,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "int8",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int8",
+        "type": "object"
+      },
+      "typed-params_typed_int64": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "int64-key": {
+            "description": "",
+            "type": "integer",
+            "example": -9223372036854775808,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "int64",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int64",
+        "type": "object"
+      },
+      "typed-params_typed_int32": {
+        "properties": {
+          "int32-key": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "int32",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int32",
+        "type": "object"
+      },
+      "typed-params_typed_uint64": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "uint64-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0
+          }
+        },
+        "xml": {
+          "name": "uint64",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint64",
+        "type": "object"
+      },
+      "typed-params_typed_uint32": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "uint32-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "uint32",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint32",
+        "type": "object"
+      },
+      "typed-params_typed_empty": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "empty-key": {
+            "description": "",
+            "type": "object"
+          }
+        },
+        "xml": {
+          "name": "empty",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_empty",
+        "type": "object"
+      },
+      "typed-params_typed_int16": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "int16-key": {
+            "description": "",
+            "type": "integer",
+            "example": -32768,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "int16",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int16",
+        "type": "object"
+      },
+      "typed-params_typed_uint16": {
+        "properties": {
+          "uint16-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "uint16",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint16",
+        "type": "object"
+      },
+      "typed-params_typed_enumeration": {
+        "properties": {
+          "enumeration-key": {
+            "enum": [
+              "first",
+              "second",
+              "third"
+            ],
+            "description": "",
+            "type": "string",
+            "example": "first"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "enumeration",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_enumeration",
+        "type": "object"
+      },
+      "typed-params_typed_decimal64": {
+        "properties": {
+          "decimal64-key": {
+            "description": "",
+            "type": "number",
+            "example": -92233720368547758.08
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "decimal64",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_decimal64",
+        "type": "object"
+      },
+      "typed-params_typed_union": {
+        "properties": {
+          "union-key": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "union",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_union",
+        "type": "object"
+      },
+      "typed-params_typed_string": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "string-key": {
+            "description": "",
+            "type": "string",
+            "example": "Some string-key"
+          }
+        },
+        "xml": {
+          "name": "string",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_string",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-action-types.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-action-types.json
new file mode 100644 (file)
index 0000000..2e1b3be
--- /dev/null
@@ -0,0 +1,933 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "action-types",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:list={name}/list-action": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC list-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - 123 - action-types - list-action"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:container/container-action": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container-action_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_container-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC container-action success",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - 123 - action-types - container-action"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:list={name}": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/action-types_list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - list"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - list"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - list"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:container": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "container": {
+                      "$ref": "#/components/schemas/action-types_container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - container"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - container"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - container"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:multi-container": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "multi-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - multi-container"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - multi-container"
+      },
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - action-types - multi-container"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - multi-container"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - multi-container"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:multi-container/inner-container/action": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "action_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+                },
+                "type": "object"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC action success"
+          }
+        },
+        "description": "",
+        "summary": "POST - 123 - action-types - action"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - action-types - action-types"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:multi-container/inner-container": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "inner-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - inner-container"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - inner-container"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - inner-container"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - inner-container"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "action-types_list-action_input": {
+        "required": [
+          "la-input"
+        ],
+        "properties": {
+          "la-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_input",
+        "type": "object"
+      },
+      "action-types_container": {
+        "properties": {},
+        "xml": {
+          "name": "container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_container",
+        "type": "object"
+      },
+      "action-types_multi-container": {
+        "properties": {
+          "inner-container": {
+            "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+          }
+        },
+        "xml": {
+          "name": "multi-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container",
+        "type": "object"
+      },
+      "action-types_list-action_output": {
+        "required": [
+          "la-output"
+        ],
+        "properties": {
+          "la-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_output",
+        "type": "object"
+      },
+      "action-types_container-action_input": {
+        "required": [
+          "ca-input"
+        ],
+        "properties": {
+          "ca-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_input",
+        "type": "object"
+      },
+      "action-types_multi-container_inner-container": {
+        "properties": {},
+        "xml": {
+          "name": "inner-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container_inner-container",
+        "type": "object"
+      },
+      "action-types_list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_list",
+        "type": "object"
+      },
+      "action-types_container-action_output": {
+        "required": [
+          "ca-output"
+        ],
+        "properties": {
+          "ca-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_output",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-all.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-all.json
new file mode 100644 (file)
index 0000000..8c3d50e
--- /dev/null
@@ -0,0 +1,13717 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "123 modules of RESTCONF",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:lst={lf1}/lst1={key1},{key2}": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "lst1": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_lst_lst1",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_lst1"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - lst1"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst1",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_lst1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_lst1"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - lst1"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - lst1"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst1",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_lst1"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_lst1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - lst1"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/enumeration={enumeration-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "enumeration": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_enumeration",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_enumeration"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - enumeration"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "enumeration",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:enumeration": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_enumeration",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_enumeration"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - enumeration"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - enumeration"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "enumeration",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_enumeration"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:enumeration": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_enumeration",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - enumeration"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/recursive:container-root/root-list={name}/nested-list={name1}/super-nested-list={name2}": {
+      "get": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "super-nested-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - recursive - super-nested-list"
+      },
+      "put": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "super-nested-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:super-nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - 123 - super-nested-list"
+      },
+      "delete": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - recursive - super-nested-list"
+      },
+      "patch": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "super-nested-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:super-nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - 123 - super-nested-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/choice-test:second-container": {
+      "get": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "second-container": {
+                      "$ref": "#/components/schemas/choice-test_second-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/choice-test_second-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - choice-test - second-container"
+      },
+      "put": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "second-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "choice-test:second-container": {
+                    "$ref": "#/components/schemas/choice-test_second-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_second-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - choice-test - 123 - second-container"
+      },
+      "delete": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - choice-test - second-container"
+      },
+      "patch": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "second-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_second-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "choice-test:second-container": {
+                    "$ref": "#/components/schemas/choice-test_second-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - choice-test - 123 - second-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/uint32={uint32-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint32": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint32",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint32"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - uint32"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint32",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint32"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - uint32"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - uint32"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint32",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint32"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - uint32"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:toaster/toasterSlot={slotId}/toaster-augmented:slotInfo": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "slotInfo": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - slotInfo"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "slotInfo",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster-augmented:slotInfo": {
+                    "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - slotInfo"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - slotInfo"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "slotInfo",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster-augmented:slotInfo": {
+                    "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - slotInfo"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount": {
+      "get": {
+        "tags": [
+          "123 GET root"
+        ],
+        "responses": {
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "Queries the available operations (RPC calls) on the mounted hosted.",
+        "summary": "GET - 123 - datastore - operations"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster:toaster": {
+      "get": {
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "toaster": {
+                      "$ref": "#/components/schemas/toaster_toaster",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster_toaster"
+                }
+              }
+            }
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - 123 - toaster - toaster"
+      },
+      "put": {
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster:toaster": {
+                    "$ref": "#/components/schemas/toaster_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_toaster"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster - 123 - toaster"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - 123 - toaster - toaster"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_toaster"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster:toaster": {
+                    "$ref": "#/components/schemas/toaster_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster - 123 - toaster"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster2:restock-toaster": {
+      "post": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "restock-toaster_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/toaster2_restock-toaster_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_restock-toaster_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC restock-toaster success"
+          }
+        },
+        "description": "Restocks the toaster with the amount of bread specified.",
+        "summary": "POST - 123 - toaster2 - restock-toaster"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container/nested-container/mandatory-list={id}": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - mandatory-list"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - mandatory-list"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - mandatory-list"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - mandatory-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:toaster/toasterSlot={slotId}": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "toasterSlot": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - toasterSlot"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "toasterSlot",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toasterSlot": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - toasterSlot"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - toasterSlot"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "toasterSlot",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toasterSlot": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - toasterSlot"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/uint8={uint8-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint8": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint8",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint8"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - uint8"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint8",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint8"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - uint8"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - uint8"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint8",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint8"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - uint8"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/boolean={boolean-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "boolean": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_boolean",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_boolean"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - boolean"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "boolean",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:boolean": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_boolean",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_boolean"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - boolean"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - boolean"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "boolean",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_boolean"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:boolean": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_boolean",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - boolean"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/decimal64={decimal64-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "decimal64": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_decimal64",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_decimal64"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - decimal64"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "decimal64",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:decimal64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_decimal64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_decimal64"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - decimal64"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - decimal64"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "decimal64",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_decimal64"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:decimal64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_decimal64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - decimal64"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-unique/nested-container-unique": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-container-unique": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - nested-container-unique"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - nested-container-unique"
+      },
+      "post": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-list-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-list-unique": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - test-container-childs - nested-container-unique"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - nested-container-unique"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-unique",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - nested-container-unique"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-container": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - root-container"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - root-container"
+      },
+      "post": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "optional-presence-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "optional-presence-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - mandatory-test - root-container"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - root-container"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - root-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/int8={int8-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int8": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int8",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int8"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - int8"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int8",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int8"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - int8"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - int8"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int8",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int8"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - int8"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-two-keys/nested-container-two-keys": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-container-two-keys": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - nested-container-two-keys"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - nested-container-two-keys"
+      },
+      "post": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-list-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-list-two-keys": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - test-container-childs - nested-container-two-keys"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - nested-container-two-keys"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-two-keys",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - nested-container-two-keys"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:container/container-action": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-action_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_container-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container-action_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC container-action success",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - 123 - action-types - container-action"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "typed": {
+                      "$ref": "#/components/schemas/typed-params_typed",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - typed"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "typed",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:typed": {
+                    "$ref": "#/components/schemas/typed-params_typed",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - typed"
+      },
+      "post": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "string",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "string": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_string",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_string"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - typed-params - typed"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - typed"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "typed",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:typed": {
+                    "$ref": "#/components/schemas/typed-params_typed",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - typed"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/int16={int16-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int16": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int16",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int16"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - int16"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int16",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int16"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - int16"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - int16"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int16",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int16"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - int16"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/uint64={uint64-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint64": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint64",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint64"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - uint64"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint64",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint64"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - uint64"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - uint64"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint64",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint64"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - uint64"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/int64={int64-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int64": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int64",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int64"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - int64"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int64",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int64"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - int64"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - int64"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int64",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int64"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - int64"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/recursive:container-root/root-list={name}": {
+      "get": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/recursive_container-root_root-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root_root-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - recursive - root-list"
+      },
+      "put": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:root-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - 123 - root-list"
+      },
+      "delete": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - recursive - root-list"
+      },
+      "patch": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:root-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - 123 - root-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:multi-container": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "multi-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - multi-container"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - multi-container"
+      },
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - action-types - multi-container"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - multi-container"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "multi-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:multi-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - multi-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont/list3={name}": {
+      "get": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list3": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list3",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list3"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - path-params-test - list3"
+      },
+      "put": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list3",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list3": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list3",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list3"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - list3"
+      },
+      "delete": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - list3"
+      },
+      "patch": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list3",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list3"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list3": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list3",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - list3"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:union-container": {
+      "get": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "union-container": {
+                      "$ref": "#/components/schemas/definition-test_union-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_union-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - definition-test - union-container"
+      },
+      "put": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "union-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:union-container": {
+                    "$ref": "#/components/schemas/definition-test_union-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_union-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - 123 - union-container"
+      },
+      "delete": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - union-container"
+      },
+      "patch": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "union-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_union-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:union-container": {
+                    "$ref": "#/components/schemas/definition-test_union-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - union-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/strings-from-regex:test": {
+      "get": {
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "test": {
+                      "$ref": "#/components/schemas/strings-from-regex_test",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/strings-from-regex_test"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - strings-from-regex - test"
+      },
+      "put": {
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "strings-from-regex:test": {
+                    "$ref": "#/components/schemas/strings-from-regex_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-from-regex_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - strings-from-regex - 123 - test"
+      },
+      "delete": {
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - strings-from-regex - test"
+      },
+      "patch": {
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-from-regex_test"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "strings-from-regex:test": {
+                    "$ref": "#/components/schemas/strings-from-regex_test",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - strings-from-regex - 123 - test"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - root-container"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - root-container"
+      },
+      "post": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - test-container-childs - root-container"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - root-container"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - root-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont/list1={name}": {
+      "get": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list1": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list1",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - path-params-test - list1"
+      },
+      "put": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list1",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - list1"
+      },
+      "delete": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - list1"
+      },
+      "patch": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list1",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - list1"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:multi-container/inner-container": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "inner-container": {
+                      "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - inner-container"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - inner-container"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - inner-container"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "inner-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:inner-container": {
+                    "$ref": "#/components/schemas/action-types_multi-container_inner-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - inner-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-mandatory-list={id}": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-mandatory-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-mandatory-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-mandatory-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - root-mandatory-list"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-mandatory-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - root-mandatory-list"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - root-mandatory-list"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-mandatory-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-mandatory-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - root-mandatory-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/string-types:test": {
+      "get": {
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "test": {
+                      "$ref": "#/components/schemas/string-types_test",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/string-types_test"
+                }
+              }
+            }
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "GET - 123 - string-types - test"
+      },
+      "put": {
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "string-types:test": {
+                    "$ref": "#/components/schemas/string-types_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/string-types_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "PUT - string-types - 123 - test"
+      },
+      "delete": {
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "DELETE - 123 - string-types - test"
+      },
+      "patch": {
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/string-types_test"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "string-types:test": {
+                    "$ref": "#/components/schemas/string-types_test",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "PATCH - string-types - 123 - test"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-unique": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container-unique": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-unique"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - root-container-unique"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - root-container-unique"
+      },
+      "post": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "nested-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - test-container-childs - root-container-unique"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - root-container-unique"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-unique",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - root-container-unique"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:number-container": {
+      "get": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "number-container": {
+                      "$ref": "#/components/schemas/definition-test_number-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_number-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - definition-test - number-container"
+      },
+      "put": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "number-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:number-container": {
+                    "$ref": "#/components/schemas/definition-test_number-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_number-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - 123 - number-container"
+      },
+      "delete": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - number-container"
+      },
+      "patch": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "number-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_number-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:number-container": {
+                    "$ref": "#/components/schemas/definition-test_number-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - number-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/empty={empty-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "empty": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_empty",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_empty"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - empty"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "empty",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:empty": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_empty",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_empty"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - empty"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - empty"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "empty",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_empty"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:empty": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_empty",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - empty"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:enum-container": {
+      "get": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "enum-container": {
+                      "$ref": "#/components/schemas/definition-test_enum-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_enum-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - definition-test - enum-container"
+      },
+      "put": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "enum-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:enum-container": {
+                    "$ref": "#/components/schemas/definition-test_enum-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_enum-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - 123 - enum-container"
+      },
+      "delete": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - enum-container"
+      },
+      "patch": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "enum-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_enum-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:enum-container": {
+                    "$ref": "#/components/schemas/definition-test_enum-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - enum-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/my-yang:data": {
+      "get": {
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "data": {
+                      "$ref": "#/components/schemas/my-yang_data",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/my-yang_data"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - my-yang - data"
+      },
+      "put": {
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "data",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "my-yang:data": {
+                    "$ref": "#/components/schemas/my-yang_data",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/my-yang_data"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - my-yang - 123 - data"
+      },
+      "delete": {
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - my-yang - data"
+      },
+      "patch": {
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "data",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/my-yang_data"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "my-yang:data": {
+                    "$ref": "#/components/schemas/my-yang_data",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - my-yang - 123 - data"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/instance-identifier={instance-identifier-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "instance-identifier": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_instance-identifier",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - instance-identifier"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "instance-identifier",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:instance-identifier": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_instance-identifier",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - instance-identifier"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - instance-identifier"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "instance-identifier",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:instance-identifier": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_instance-identifier",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - instance-identifier"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:multi-container/inner-container/action": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "action_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC action success"
+          }
+        },
+        "description": "",
+        "summary": "POST - 123 - action-types - action"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/int32={int32-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int32": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int32",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int32"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - int32"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int32",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int32"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - int32"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - int32"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int32",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int32"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - int32"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "get": {
+        "tags": [
+          "123 GET root"
+        ],
+        "responses": {
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "Queries the config (startup) datastore on the mounted hosted.",
+        "summary": "GET - 123 - datastore - data"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container/nested-container": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-container": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - nested-container"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - nested-container"
+      },
+      "post": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - test-container-childs - nested-container"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - nested-container"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - nested-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/bits={bits-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "bits": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_bits",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_bits"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - bits"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "bits",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:bits": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_bits",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_bits"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - bits"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - bits"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "bits",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_bits"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:bits": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_bits",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - bits"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/recursive:container-root/root-list={name}/nested-list={name1}": {
+      "get": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - recursive - nested-list"
+      },
+      "put": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "nested-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - 123 - nested-list"
+      },
+      "delete": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - recursive - nested-list"
+      },
+      "patch": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "nested-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - 123 - nested-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-two-keys/nested-container-two-keys/mandatory-list-two-keys={id},{name}/list-nested-container": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list-nested-container": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - list-nested-container"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-nested-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:list-nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - list-nested-container"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - list-nested-container"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-nested-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:list-nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - list-nested-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:lst={lf1}/cont1/lst11={lf111}": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "lst11": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_lst_cont1_lst11",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - lst11"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst11",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst11": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1_lst11",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - lst11"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - lst11"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst11",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst11": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1_lst11",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - lst11"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/string={string-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "string": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_string",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_string"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - string"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "string",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:string": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_string",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_string"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - string"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - string"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "string",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_string"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:string": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_string",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - string"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/uint16={uint16-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint16": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint16",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint16"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - uint16"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint16",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint16"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - uint16"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - uint16"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint16",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint16"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - uint16"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-container/optional-list={id}": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "optional-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-container_optional-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - optional-list"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "optional-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - optional-list"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - optional-list"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "optional-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - optional-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-container/mandatory-list={id}": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - mandatory-list"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - mandatory-list"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - mandatory-list"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - mandatory-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-container/optional-presence-container": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "optional-presence-container": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - optional-presence-container"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "optional-presence-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-presence-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - optional-presence-container"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - optional-presence-container"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "optional-presence-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-presence-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - optional-presence-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:lst={lf1}/cont1": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont1": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_cont1"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - cont1"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont1",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont1": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - cont1"
+      },
+      "post": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont11",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "cont11": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - toaster2 - cont1"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - cont1"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont1",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont1": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - cont1"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/union={union-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "union": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_union",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_union"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - union"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "union",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:union": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_union",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_union"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - union"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - union"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "union",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_union"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:union": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_union",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - union"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont/list1={name}/cont2": {
+      "get": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont2": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_cont2",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - path-params-test - cont2"
+      },
+      "put": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont2",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont2": {
+                    "$ref": "#/components/schemas/path-params-test_cont_list1_cont2",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - cont2"
+      },
+      "delete": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - cont2"
+      },
+      "patch": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont2",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont2": {
+                    "$ref": "#/components/schemas/path-params-test_cont_list1_cont2",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - cont2"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:network-container": {
+      "get": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "network-container": {
+                      "$ref": "#/components/schemas/definition-test_network-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_network-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - definition-test - network-container"
+      },
+      "put": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "network-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:network-container": {
+                    "$ref": "#/components/schemas/definition-test_network-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_network-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - 123 - network-container"
+      },
+      "delete": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - network-container"
+      },
+      "patch": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "network-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_network-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:network-container": {
+                    "$ref": "#/components/schemas/definition-test_network-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - network-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-two-keys": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container-two-keys": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - root-container-two-keys"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - root-container-two-keys"
+      },
+      "post": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "nested-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - test-container-childs - root-container-two-keys"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - root-container-two-keys"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-two-keys",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - root-container-two-keys"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster:cancel-toast": {
+      "post": {
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cancel-toast_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "http://netconfcentral.org/ns/toaster"
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC cancel-toast success"
+          }
+        },
+        "description": "Stop making toast, if any is being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - 123 - toaster - cancel-toast"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/binary={binary-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "binary": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_binary",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_binary"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - binary"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "binary",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:binary": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_binary",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_binary"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - binary"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - binary"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "binary",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_binary"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:binary": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_binary",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - binary"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:lst={lf1}": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "lst": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_lst",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - lst"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - lst"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - lst"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - lst"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-container/mandatory-container": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-container": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - mandatory-container"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - mandatory-container"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - mandatory-container"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - mandatory-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:lst={lf1}/cont1/cont11": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont11": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - cont11"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont11",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont11": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - cont11"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - cont11"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont11",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont11": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - cont11"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:list={name}/list-action": {
+      "post": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-action_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list-action_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC list-action success",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "POST - 123 - action-types - list-action"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont/list1={name}/list2={name1}": {
+      "get": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list2": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list1_list2",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - path-params-test - list2"
+      },
+      "put": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list2",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list2": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list2",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - list2"
+      },
+      "delete": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - list2"
+      },
+      "patch": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list2",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list2": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list2",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - list2"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster:make-toast": {
+      "post": {
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "make-toast_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/toaster_make-toast_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_make-toast_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC make-toast success"
+          }
+        },
+        "description": "Make some toast.\n  The toastDone notification will be sent when\n  the toast is finished.\n  An 'in-use' error will be returned if toast\n  is already being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - 123 - toaster - make-toast"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:list={name}": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/action-types_list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - list"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - list"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - list"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:binary-container": {
+      "get": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "binary-container": {
+                      "$ref": "#/components/schemas/definition-test_binary-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_binary-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - definition-test - binary-container"
+      },
+      "put": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "binary-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:binary-container": {
+                    "$ref": "#/components/schemas/definition-test_binary-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_binary-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - 123 - binary-container"
+      },
+      "delete": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - binary-container"
+      },
+      "patch": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "binary-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_binary-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:binary-container": {
+                    "$ref": "#/components/schemas/definition-test_binary-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - binary-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/choice-test:first-container": {
+      "get": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "first-container": {
+                      "$ref": "#/components/schemas/choice-test_first-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/choice-test_first-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - choice-test - first-container"
+      },
+      "put": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "choice-test:first-container": {
+                    "$ref": "#/components/schemas/choice-test_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_first-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - choice-test - 123 - first-container"
+      },
+      "delete": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - choice-test - first-container"
+      },
+      "patch": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_first-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "choice-test:first-container": {
+                    "$ref": "#/components/schemas/choice-test_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - choice-test - 123 - first-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont/list1={name}/list4={name1}": {
+      "get": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list4": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list1_list4",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - path-params-test - list4"
+      },
+      "put": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list4",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list4": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list4",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - list4"
+      },
+      "delete": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - list4"
+      },
+      "patch": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list4",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list4": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list4",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - list4"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-unique/nested-container-unique/mandatory-list-unique={id}": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list-unique": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - mandatory-list-unique"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-unique": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - mandatory-list-unique"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - mandatory-list-unique"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-unique",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-unique": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - mandatory-list-unique"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster2:make-toast": {
+      "post": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "make-toast_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/toaster2_make-toast_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_make-toast_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC make-toast success"
+          }
+        },
+        "description": "Make some toast.\n  The toastDone notification will be sent when\n  the toast is finished.\n  An 'in-use' error will be returned if toast\n  is already being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - 123 - toaster2 - make-toast"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-optional-list={id}": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-optional-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-optional-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-optional-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - root-optional-list"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-optional-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-optional-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - root-optional-list"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - root-optional-list"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-optional-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-optional-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - root-optional-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont": {
+      "get": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont": {
+                      "$ref": "#/components/schemas/path-params-test_cont",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - path-params-test - cont"
+      },
+      "put": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cont",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont": {
+                    "$ref": "#/components/schemas/path-params-test_cont",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - cont"
+      },
+      "post": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "list1",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "list1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - path-params-test - cont"
+      },
+      "delete": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - cont"
+      },
+      "patch": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cont",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont": {
+                    "$ref": "#/components/schemas/path-params-test_cont",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - cont"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster2:cancel-toast": {
+      "post": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cancel-toast_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "http://netconfcentral.org/ns/toaster2"
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC cancel-toast success"
+          }
+        },
+        "description": "Stop making toast, if any is being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - 123 - toaster2 - cancel-toast"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-two-keys/nested-container-two-keys/mandatory-list-two-keys={id},{name}": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list-two-keys": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - mandatory-list-two-keys"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-two-keys": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - mandatory-list-two-keys"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - mandatory-list-two-keys"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-two-keys",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-two-keys": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - mandatory-list-two-keys"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:toaster": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "toaster": {
+                      "$ref": "#/components/schemas/toaster2_toaster",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_toaster"
+                }
+              }
+            }
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - 123 - toaster2 - toaster"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toaster": {
+                    "$ref": "#/components/schemas/toaster2_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster2 - 123 - toaster"
+      },
+      "post": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toasterSlot",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toasterSlot": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - toaster2 - toaster"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - 123 - toaster2 - toaster"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toaster": {
+                    "$ref": "#/components/schemas/toaster2_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster2 - 123 - toaster"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/recursive:container-root": {
+      "get": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "container-root": {
+                      "$ref": "#/components/schemas/recursive_container-root",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - recursive - container-root"
+      },
+      "put": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-root",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:container-root": {
+                    "$ref": "#/components/schemas/recursive_container-root",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - 123 - container-root"
+      },
+      "post": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "root-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - recursive - container-root"
+      },
+      "delete": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - recursive - container-root"
+      },
+      "patch": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-root",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:container-root": {
+                    "$ref": "#/components/schemas/recursive_container-root",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - 123 - container-root"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:container": {
+      "get": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "container": {
+                      "$ref": "#/components/schemas/action-types_container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - action-types - container"
+      },
+      "put": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - action-types - 123 - container"
+      },
+      "delete": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - action-types - container"
+      },
+      "patch": {
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:container": {
+                    "$ref": "#/components/schemas/action-types_container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - action-types - 123 - container"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "toaster2_lst_cont1": {
+        "properties": {
+          "cont11": {
+            "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+          },
+          "lst11": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+            }
+          }
+        },
+        "xml": {
+          "name": "cont1",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_cont1",
+        "type": "object"
+      },
+      "toaster2_make-toast_input": {
+        "properties": {
+          "toasterToastType": {
+            "default": "wheat-bread",
+            "enum": [
+              "toast-type",
+              "wonder-bread",
+              "frozen-bagel",
+              "wheat-bread",
+              "white-bread",
+              "hash-brown",
+              "frozen-waffle"
+            ],
+            "description": "This variable informs the toaster of the type of\n      material that is being toasted. The toaster\n      uses this information, combined with\n      toasterDoneness, to compute for how\n      long the material must be toasted to achieve\n      the required doneness.",
+            "type": "string",
+            "example": "toast-type"
+          },
+          "toasterDoneness": {
+            "default": 5,
+            "description": "This variable controls how well-done is the\n      ensuing toast. It should be on a scale of 1 to 10.\n      Toast made at 10 generally is considered unfit\n      for human consumption; toast made at 1 is warmed\n      lightly.",
+            "type": "integer",
+            "example": 1,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "title": "toaster2_make-toast_input",
+        "type": "object"
+      },
+      "typed-params_typed_boolean": {
+        "properties": {
+          "boolean-key": {
+            "description": "",
+            "type": "boolean",
+            "example": true
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "boolean",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_boolean",
+        "type": "object"
+      },
+      "typed-params_typed_instance-identifier": {
+        "properties": {
+          "instance-identifier-key": {
+            "description": "",
+            "type": "string",
+            "example": "/tparams:typed"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "instance-identifier",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_instance-identifier",
+        "type": "object"
+      },
+      "test-container-childs_root-container": {
+        "properties": {
+          "nested-container": {
+            "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+          }
+        },
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container",
+        "type": "object"
+      },
+      "typed-params_typed_bits": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "bits-key": {
+            "default": "UP UP",
+            "enum": [
+              "UP"
+            ],
+            "description": "",
+            "type": "string",
+            "minItems": 0,
+            "uniqueItems": true
+          }
+        },
+        "xml": {
+          "name": "bits",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_bits",
+        "type": "object"
+      },
+      "recursive_container-root": {
+        "properties": {
+          "root-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/recursive_container-root_root-list"
+            }
+          }
+        },
+        "xml": {
+          "name": "container-root",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root",
+        "type": "object"
+      },
+      "typed-params_typed": {
+        "properties": {
+          "uint16": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint16"
+            }
+          },
+          "binary": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_binary"
+            }
+          },
+          "empty": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_empty"
+            }
+          },
+          "enumeration": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_enumeration"
+            }
+          },
+          "uint8": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint8"
+            }
+          },
+          "decimal64": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_decimal64"
+            }
+          },
+          "boolean": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_boolean"
+            }
+          },
+          "int16": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int16"
+            }
+          },
+          "uint32": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint32"
+            }
+          },
+          "union": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_union"
+            }
+          },
+          "instance-identifier": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+            }
+          },
+          "uint64": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint64"
+            }
+          },
+          "string": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_string"
+            }
+          },
+          "int32": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int32"
+            }
+          },
+          "int64": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int64"
+            }
+          },
+          "int8": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int8"
+            }
+          },
+          "bits": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_bits"
+            }
+          }
+        },
+        "xml": {
+          "name": "typed",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed",
+        "type": "object"
+      },
+      "action-types_container-action_output": {
+        "required": [
+          "ca-output"
+        ],
+        "properties": {
+          "ca-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_output",
+        "type": "object"
+      },
+      "typed-params_typed_uint32": {
+        "properties": {
+          "uint32-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "uint32",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint32",
+        "type": "object"
+      },
+      "recursive_container-root_root-list_nested-list_super-nested-list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "super-nested-list",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root_root-list_nested-list_super-nested-list",
+        "type": "object"
+      },
+      "typed-params_typed_int16": {
+        "properties": {
+          "int16-key": {
+            "description": "",
+            "type": "integer",
+            "example": -32768,
+            "format": "int32"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "int16",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int16",
+        "type": "object"
+      },
+      "toaster2_restock-toaster_input": {
+        "properties": {
+          "amountOfBreadToStock": {
+            "description": "Indicates the amount of bread to re-stock",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "title": "toaster2_restock-toaster_input",
+        "type": "object"
+      },
+      "typed-params_typed_decimal64": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "decimal64-key": {
+            "description": "",
+            "type": "number",
+            "example": -92233720368547758.08
+          }
+        },
+        "xml": {
+          "name": "decimal64",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_decimal64",
+        "type": "object"
+      },
+      "definition-test_binary-container": {
+        "properties": {
+          "binary-data": {
+            "default": "SGVsbG8gdGVzdCE=",
+            "description": "",
+            "type": "string",
+            "format": "byte"
+          }
+        },
+        "xml": {
+          "name": "binary-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_binary-container",
+        "type": "object"
+      },
+      "toaster_toaster": {
+        "properties": {
+          "testToasterBits": {
+            "default": "testbit2",
+            "enum": [
+              "testbit1",
+              "testbit2"
+            ],
+            "description": "",
+            "type": "string",
+            "minItems": 0,
+            "uniqueItems": true
+          },
+          "allow-user": {
+            "description": "A list of user name patterns to allow",
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": "Some allow-user"
+            }
+          },
+          "interval": {
+            "default": 30,
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          },
+          "testUnion": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "title": "toaster_toaster",
+        "type": "object"
+      },
+      "typed-params_typed_string": {
+        "properties": {
+          "string-key": {
+            "description": "",
+            "type": "string",
+            "example": "Some string-key"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "string",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_string",
+        "type": "object"
+      },
+      "definition-test_union-container": {
+        "properties": {
+          "testUnion3": {
+            "default": "false",
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "testBoolean": {
+            "default": true,
+            "description": "",
+            "type": "boolean",
+            "example": true
+          },
+          "testUnion2": {
+            "default": "false",
+            "description": "",
+            "type": "string",
+            "example": "Some testUnion2"
+          },
+          "testUnion1": {
+            "default": "5",
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "union-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_union-container",
+        "type": "object"
+      },
+      "toaster2_lst": {
+        "properties": {
+          "cont1": {
+            "$ref": "#/components/schemas/toaster2_lst_cont1"
+          },
+          "lst1": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/toaster2_lst_lst1"
+            }
+          },
+          "lf1": {
+            "description": "",
+            "type": "string",
+            "example": "Some lf1"
+          }
+        },
+        "xml": {
+          "name": "lst",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst",
+        "type": "object"
+      },
+      "action-types_multi-container": {
+        "properties": {
+          "inner-container": {
+            "$ref": "#/components/schemas/action-types_multi-container_inner-container"
+          }
+        },
+        "xml": {
+          "name": "multi-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container",
+        "type": "object"
+      },
+      "typed-params_typed_binary": {
+        "properties": {
+          "binary-key": {
+            "description": "",
+            "type": "string",
+            "format": "byte"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "binary",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_binary",
+        "type": "object"
+      },
+      "mandatory-test_root-mandatory-list": {
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "root-mandatory-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some root-mandatory-list-field"
+          }
+        },
+        "xml": {
+          "name": "root-mandatory-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-mandatory-list",
+        "type": "object"
+      },
+      "action-types_multi-container_inner-container": {
+        "properties": {},
+        "xml": {
+          "name": "inner-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_multi-container_inner-container",
+        "type": "object"
+      },
+      "strings-from-regex_test": {
+        "properties": {
+          "login-date-time": {
+            "description": "",
+            "type": "string",
+            "example": "0000-00-00T00:00:00Z",
+            "minLength": 0,
+            "maxLength": 2147483647
+          },
+          "ipv4-address": {
+            "description": "",
+            "type": "string",
+            "example": "0.0.0.0",
+            "minLength": 0,
+            "maxLength": 2147483647
+          },
+          "mac-address": {
+            "description": "",
+            "type": "string",
+            "example": "00:00:00:00:00:00",
+            "minLength": 0,
+            "maxLength": 2147483647
+          }
+        },
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:strings:regex"
+        },
+        "description": "",
+        "title": "strings-from-regex_test",
+        "type": "object"
+      },
+      "mandatory-test_root-container_mandatory-container": {
+        "required": [
+          "mandatory-leaf",
+          "leaf-list-with-min-elements"
+        ],
+        "properties": {
+          "mandatory-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-leaf"
+          },
+          "leaf-list-with-min-elements": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": "Some leaf-list-with-min-elements"
+            },
+            "example": [
+              "Some leaf-list-with-min-elements",
+              "Some leaf-list-with-min-elements"
+            ],
+            "minItems": 2
+          }
+        },
+        "xml": {
+          "name": "mandatory-container",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_mandatory-container",
+        "type": "object"
+      },
+      "action-types_container": {
+        "properties": {},
+        "xml": {
+          "name": "container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_container",
+        "type": "object"
+      },
+      "typed-params_typed_int64": {
+        "properties": {
+          "int64-key": {
+            "description": "",
+            "type": "integer",
+            "example": -9223372036854775808,
+            "format": "int64"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "int64",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int64",
+        "type": "object"
+      },
+      "typed-params_typed_uint64": {
+        "properties": {
+          "uint64-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "uint64",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint64",
+        "type": "object"
+      },
+      "mandatory-test_root-container_optional-list": {
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "optional-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some optional-list-field"
+          }
+        },
+        "xml": {
+          "name": "optional-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_optional-list",
+        "type": "object"
+      },
+      "toaster2_toaster": {
+        "properties": {
+          "toasterSlot": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+            }
+          },
+          "darknessFactor": {
+            "default": 1000,
+            "description": "The darkness factor. Basically, the number of ms to multiple the doneness value by.",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "title": "toaster2_toaster",
+        "type": "object"
+      },
+      "test-container-childs_root-container_nested-container_mandatory-list": {
+        "properties": {
+          "address": {
+            "description": "",
+            "type": "string",
+            "example": "Some address"
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container_nested-container_mandatory-list",
+        "type": "object"
+      },
+      "path-params-test_cont": {
+        "properties": {
+          "list1": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list1"
+            }
+          },
+          "list3": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list3"
+            }
+          }
+        },
+        "xml": {
+          "name": "cont",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont",
+        "type": "object"
+      },
+      "toaster2_toaster_toasterSlot": {
+        "properties": {
+          "slotId": {
+            "description": "",
+            "type": "string",
+            "example": "Some slotId"
+          },
+          "slotInfo": {
+            "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+          }
+        },
+        "xml": {
+          "name": "toasterSlot",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_toaster_toasterSlot",
+        "type": "object"
+      },
+      "path-params-test_cont_list1_list2": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list2",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1_list2",
+        "type": "object"
+      },
+      "typed-params_typed_enumeration": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "enumeration-key": {
+            "enum": [
+              "first",
+              "second",
+              "third"
+            ],
+            "description": "",
+            "type": "string",
+            "example": "first"
+          }
+        },
+        "xml": {
+          "name": "enumeration",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_enumeration",
+        "type": "object"
+      },
+      "typed-params_typed_union": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "union-key": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "union",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_union",
+        "type": "object"
+      },
+      "action-types_list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "description": "",
+        "title": "action-types_list",
+        "type": "object"
+      },
+      "path-params-test_cont_list1_list4": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list4",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1_list4",
+        "type": "object"
+      },
+      "definition-test_number-container": {
+        "properties": {
+          "testInteger": {
+            "default": 42,
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "testUnsignedInteger": {
+            "default": 100,
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          },
+          "testUint64": {
+            "default": 42,
+            "description": "",
+            "type": "integer",
+            "example": 0
+          },
+          "testDouble": {
+            "default": 3.14159265359,
+            "description": "",
+            "type": "number",
+            "example": -92233720.36854775808
+          },
+          "testInt64": {
+            "default": 42,
+            "description": "",
+            "type": "integer",
+            "example": -9223372036854775808,
+            "format": "int64"
+          },
+          "testDecimal": {
+            "default": 3.14,
+            "description": "",
+            "type": "number",
+            "example": -92233720368547758.08
+          }
+        },
+        "xml": {
+          "name": "number-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_number-container",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container": {
+        "properties": {
+          "nested-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some nested-leaf"
+          }
+        },
+        "xml": {
+          "name": "list-nested-container",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+        "type": "object"
+      },
+      "recursive_container-root_root-list_nested-list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "super-nested-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+            }
+          }
+        },
+        "xml": {
+          "name": "nested-list",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root_root-list_nested-list",
+        "type": "object"
+      },
+      "test-container-childs_root-container_nested-container": {
+        "required": [
+          "mandatory-list"
+        ],
+        "properties": {
+          "mandatory-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+            },
+            "example": [
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 0
+              },
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 1
+              },
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 2
+              }
+            ],
+            "minItems": 3,
+            "maxItems": 5
+          }
+        },
+        "xml": {
+          "name": "nested-container",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container_nested-container",
+        "type": "object"
+      },
+      "mandatory-test_root-container_optional-presence-container": {
+        "properties": {
+          "presence-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some presence-leaf"
+          }
+        },
+        "xml": {
+          "name": "optional-presence-container",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_optional-presence-container",
+        "type": "object"
+      },
+      "mandatory-test_root-optional-list": {
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "root-optional-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some root-optional-list-field"
+          }
+        },
+        "xml": {
+          "name": "root-optional-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-optional-list",
+        "type": "object"
+      },
+      "definition-test_enum-container": {
+        "properties": {
+          "status": {
+            "default": "up",
+            "enum": [
+              "up",
+              "down"
+            ],
+            "description": "",
+            "type": "string",
+            "example": "up"
+          }
+        },
+        "xml": {
+          "name": "enum-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_enum-container",
+        "type": "object"
+      },
+      "path-params-test_cont_list1_cont2": {
+        "properties": {},
+        "xml": {
+          "name": "cont2",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1_cont2",
+        "type": "object"
+      },
+      "mandatory-test_root-container_mandatory-list": {
+        "required": [
+          "mandatory-list-field"
+        ],
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "mandatory-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-list-field"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_mandatory-list",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys": {
+        "properties": {
+          "nested-container-two-keys": {
+            "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+          }
+        },
+        "xml": {
+          "name": "root-container-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys",
+        "type": "object"
+      },
+      "test-container-childs_root-container-unique_nested-container-unique": {
+        "required": [
+          "mandatory-list-unique"
+        ],
+        "properties": {
+          "mandatory-list-unique": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+            },
+            "example": [
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "description": "Some description",
+                "id": 0
+              },
+              {
+                "address": "Some address_1",
+                "name": "Some name_1",
+                "description": "Some description",
+                "id": 1
+              },
+              {
+                "address": "Some address_2",
+                "name": "Some name_2",
+                "description": "Some description",
+                "id": 2
+              }
+            ],
+            "minItems": 3,
+            "maxItems": 5
+          }
+        },
+        "xml": {
+          "name": "nested-container-unique",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-unique_nested-container-unique",
+        "type": "object"
+      },
+      "mandatory-test_root-container": {
+        "required": [
+          "mandatory-root-leaf",
+          "mandatory-container",
+          "mandatory-first-choice",
+          "mandatory-list"
+        ],
+        "properties": {
+          "optional-root-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some optional-root-leaf"
+          },
+          "optional-presence-container": {
+            "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+          },
+          "mandatory-container": {
+            "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+          },
+          "optional-first-choice": {
+            "description": "",
+            "type": "string",
+            "example": "Some optional-first-choice"
+          },
+          "optional-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+            }
+          },
+          "mandatory-root-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-root-leaf"
+          },
+          "mandatory-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+            },
+            "example": [
+              {
+                "id": 0,
+                "mandatory-list-field": "Some mandatory-list-field"
+              },
+              {
+                "id": 1,
+                "mandatory-list-field": "Some mandatory-list-field"
+              }
+            ],
+            "minItems": 2
+          },
+          "mandatory-first-choice": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-first-choice"
+          }
+        },
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container",
+        "type": "object"
+      },
+      "typed-params_typed_int32": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "int32-key": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "int32",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int32",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys_nested-container-two-keys": {
+        "required": [
+          "mandatory-list-two-keys"
+        ],
+        "properties": {
+          "mandatory-list-two-keys": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+            },
+            "example": [
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 0
+              },
+              {
+                "address": "Some address",
+                "name": "Some name_1",
+                "id": 1
+              },
+              {
+                "address": "Some address",
+                "name": "Some name_2",
+                "id": 2
+              }
+            ],
+            "minItems": 3,
+            "maxItems": 5
+          }
+        },
+        "xml": {
+          "name": "nested-container-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys_nested-container-two-keys",
+        "type": "object"
+      },
+      "typed-params_typed_empty": {
+        "properties": {
+          "empty-key": {
+            "description": "",
+            "type": "object"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "empty",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_empty",
+        "type": "object"
+      },
+      "toaster2_toaster_toasterSlot_slotInfo": {
+        "properties": {
+          "numberOfToastPrepared": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "slotInfo",
+          "namespace": "http://netconfcentral.org/ns/toaster/augmented"
+        },
+        "description": "",
+        "title": "toaster2_toaster_toasterSlot_slotInfo",
+        "type": "object"
+      },
+      "typed-params_typed_uint16": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "uint16-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "uint16",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint16",
+        "type": "object"
+      },
+      "choice-test_second-container": {
+        "properties": {
+          "leaf-first-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-first-case"
+          }
+        },
+        "xml": {
+          "name": "second-container",
+          "namespace": "urn:opendaylight:choice-test"
+        },
+        "description": "",
+        "title": "choice-test_second-container",
+        "type": "object"
+      },
+      "string-types_test": {
+        "properties": {
+          "display-string": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 0,
+            "maxLength": 255
+          },
+          "thai": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "mathematical-operators": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "arrows": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "phys-address": {
+            "description": "",
+            "type": "string",
+            "example": "00:",
+            "minLength": 0,
+            "maxLength": 2147483647
+          },
+          "mac-address": {
+            "description": "",
+            "type": "string",
+            "example": "00:",
+            "minLength": 6,
+            "maxLength": 6
+          },
+          "braille-patterns": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "date-and-time": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 8,
+            "maxLength": 11
+          }
+        },
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:string:types"
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "title": "string-types_test",
+        "type": "object"
+      },
+      "toaster_make-toast_input": {
+        "properties": {
+          "toasterToastType": {
+            "default": "wheat-bread",
+            "enum": [
+              "toast-type",
+              "wheat-bread",
+              "hash-brown",
+              "frozen-waffle",
+              "frozen-bagel",
+              "white-bread",
+              "wonder-bread"
+            ],
+            "description": "This variable informs the toaster of the type of\n      material that is being toasted. The toaster\n      uses this information, combined with\n      toasterDoneness, to compute for how\n      long the material must be toasted to achieve\n      the required doneness.",
+            "type": "string",
+            "example": "toast-type"
+          },
+          "toasterDoneness": {
+            "default": 5,
+            "description": "This variable controls how well-done is the\n      ensuing toast. It should be on a scale of 1 to 10.\n      Toast made at 10 generally is considered unfit\n      for human consumption; toast made at 1 is warmed\n      lightly.",
+            "type": "integer",
+            "example": 1,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        },
+        "title": "toaster_make-toast_input",
+        "type": "object"
+      },
+      "typed-params_typed_uint8": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "uint8-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "uint8",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint8",
+        "type": "object"
+      },
+      "action-types_container-action_input": {
+        "required": [
+          "ca-input"
+        ],
+        "properties": {
+          "ca-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some ca-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_container-action_input",
+        "type": "object"
+      },
+      "toaster2_lst_lst1": {
+        "properties": {
+          "lf11": {
+            "description": "",
+            "type": "integer",
+            "example": -32768,
+            "format": "int32"
+          },
+          "key2": {
+            "description": "",
+            "type": "integer",
+            "example": -128,
+            "format": "int32"
+          },
+          "key1": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "lst1",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_lst1",
+        "type": "object"
+      },
+      "toaster2_lst_cont1_cont11": {
+        "properties": {
+          "lf111": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "lf112": {
+            "description": "",
+            "type": "string",
+            "example": "Some lf112"
+          }
+        },
+        "xml": {
+          "name": "cont11",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_cont1_cont11",
+        "type": "object"
+      },
+      "test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique": {
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "description": {
+            "description": "",
+            "type": "string",
+            "example": "Some description"
+          },
+          "address": {
+            "description": "",
+            "type": "string",
+            "example": "Some address"
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list-unique",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+        "type": "object"
+      },
+      "toaster2_lst_cont1_lst11": {
+        "properties": {
+          "lf111": {
+            "description": "",
+            "type": "string",
+            "example": "Some lf111"
+          }
+        },
+        "xml": {
+          "name": "lst11",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_cont1_lst11",
+        "type": "object"
+      },
+      "my-yang_data": {
+        "properties": {
+          "my-data": {
+            "description": "",
+            "type": "string",
+            "example": "Some my-data"
+          }
+        },
+        "xml": {
+          "name": "data",
+          "namespace": "urn:opendaylight:params:xml:ns:yang:my-yang"
+        },
+        "description": "",
+        "title": "my-yang_data",
+        "type": "object"
+      },
+      "typed-params_typed_int8": {
+        "properties": {
+          "int8-key": {
+            "description": "",
+            "type": "integer",
+            "example": -128,
+            "format": "int32"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "int8",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int8",
+        "type": "object"
+      },
+      "action-types_list-action_input": {
+        "required": [
+          "la-input"
+        ],
+        "properties": {
+          "la-input": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-input"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_input",
+        "type": "object"
+      },
+      "recursive_container-root_root-list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "nested-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+            }
+          }
+        },
+        "xml": {
+          "name": "root-list",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root_root-list",
+        "type": "object"
+      },
+      "test-container-childs_root-container-unique": {
+        "properties": {
+          "nested-container-unique": {
+            "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+          }
+        },
+        "xml": {
+          "name": "root-container-unique",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-unique",
+        "type": "object"
+      },
+      "choice-test_first-container": {
+        "properties": {
+          "leaf-default": {
+            "default": "default-value",
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-default"
+          }
+        },
+        "xml": {
+          "name": "first-container",
+          "namespace": "urn:opendaylight:choice-test"
+        },
+        "description": "",
+        "title": "choice-test_first-container",
+        "type": "object"
+      },
+      "action-types_list-action_output": {
+        "required": [
+          "la-output"
+        ],
+        "properties": {
+          "la-output": {
+            "description": "",
+            "type": "string",
+            "example": "Some la-output"
+          }
+        },
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        },
+        "title": "action-types_list-action_output",
+        "type": "object"
+      },
+      "definition-test_network-container": {
+        "properties": {
+          "network-ref": {
+            "default": "/network/nodes[node-id='node1']",
+            "description": "",
+            "type": "string",
+            "example": "/sample:binary-container"
+          }
+        },
+        "xml": {
+          "name": "network-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_network-container",
+        "type": "object"
+      },
+      "path-params-test_cont_list1": {
+        "properties": {
+          "cont2": {
+            "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+          },
+          "list4": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+            }
+          },
+          "list2": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+            }
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list1",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1",
+        "type": "object"
+      },
+      "path-params-test_cont_list3": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list3",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list3",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys": {
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "address": {
+            "description": "",
+            "type": "string",
+            "example": "Some address"
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "list-nested-container": {
+            "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-choice-test.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-choice-test.json
new file mode 100644 (file)
index 0000000..51f2c2a
--- /dev/null
@@ -0,0 +1,360 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "choice-test",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/nodes/node=123/yang-ext:mount/choice-test:first-container": {
+      "get": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/choice-test_first-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "first-container": {
+                      "$ref": "#/components/schemas/choice-test_first-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - choice-test - first-container"
+      },
+      "put": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_first-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "choice-test:first-container": {
+                    "$ref": "#/components/schemas/choice-test_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - choice-test - 123 - first-container"
+      },
+      "delete": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - choice-test - first-container"
+      },
+      "patch": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "choice-test:first-container": {
+                    "$ref": "#/components/schemas/choice-test_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_first-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - choice-test - 123 - first-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/choice-test:second-container": {
+      "get": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/choice-test_second-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "second-container": {
+                      "$ref": "#/components/schemas/choice-test_second-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - choice-test - second-container"
+      },
+      "put": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "second-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_second-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "choice-test:second-container": {
+                    "$ref": "#/components/schemas/choice-test_second-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - choice-test - 123 - second-container"
+      },
+      "delete": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - choice-test - second-container"
+      },
+      "patch": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "second-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "choice-test:second-container": {
+                    "$ref": "#/components/schemas/choice-test_second-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_second-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - choice-test - 123 - second-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/choice-test_first-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "first-container": {
+                    "$ref": "#/components/schemas/choice-test_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - choice-test - choice-test"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "choice-test_first-container": {
+        "properties": {
+          "leaf-default": {
+            "default": "default-value",
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-default"
+          }
+        },
+        "xml": {
+          "name": "first-container",
+          "namespace": "urn:opendaylight:choice-test"
+        },
+        "description": "",
+        "title": "choice-test_first-container",
+        "type": "object"
+      },
+      "choice-test_second-container": {
+        "properties": {
+          "leaf-first-case": {
+            "description": "",
+            "type": "string",
+            "example": "Some leaf-first-case"
+          }
+        },
+        "xml": {
+          "name": "second-container",
+          "namespace": "urn:opendaylight:choice-test"
+        },
+        "description": "",
+        "title": "choice-test_second-container",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-definition-test.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-definition-test.json
new file mode 100644 (file)
index 0000000..5d59dc6
--- /dev/null
@@ -0,0 +1,862 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "definition-test",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:binary-container": {
+      "get": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_binary-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "binary-container": {
+                      "$ref": "#/components/schemas/definition-test_binary-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - definition-test - binary-container"
+      },
+      "put": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "binary-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_binary-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:binary-container": {
+                    "$ref": "#/components/schemas/definition-test_binary-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - 123 - binary-container"
+      },
+      "delete": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - binary-container"
+      },
+      "patch": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "binary-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:binary-container": {
+                    "$ref": "#/components/schemas/definition-test_binary-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_binary-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - binary-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:network-container": {
+      "get": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_network-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "network-container": {
+                      "$ref": "#/components/schemas/definition-test_network-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - definition-test - network-container"
+      },
+      "put": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "network-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_network-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:network-container": {
+                    "$ref": "#/components/schemas/definition-test_network-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - 123 - network-container"
+      },
+      "delete": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - network-container"
+      },
+      "patch": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "network-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:network-container": {
+                    "$ref": "#/components/schemas/definition-test_network-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_network-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - network-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:number-container": {
+      "get": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_number-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "number-container": {
+                      "$ref": "#/components/schemas/definition-test_number-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - definition-test - number-container"
+      },
+      "put": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "number-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_number-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:number-container": {
+                    "$ref": "#/components/schemas/definition-test_number-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - 123 - number-container"
+      },
+      "delete": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - number-container"
+      },
+      "patch": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "number-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:number-container": {
+                    "$ref": "#/components/schemas/definition-test_number-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_number-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - number-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:enum-container": {
+      "get": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_enum-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "enum-container": {
+                      "$ref": "#/components/schemas/definition-test_enum-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - definition-test - enum-container"
+      },
+      "put": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "enum-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_enum-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:enum-container": {
+                    "$ref": "#/components/schemas/definition-test_enum-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - 123 - enum-container"
+      },
+      "delete": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - enum-container"
+      },
+      "patch": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "enum-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:enum-container": {
+                    "$ref": "#/components/schemas/definition-test_enum-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_enum-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - enum-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:union-container": {
+      "get": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/definition-test_union-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "union-container": {
+                      "$ref": "#/components/schemas/definition-test_union-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - definition-test - union-container"
+      },
+      "put": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "union-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_union-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "definition-test:union-container": {
+                    "$ref": "#/components/schemas/definition-test_union-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - definition-test - 123 - union-container"
+      },
+      "delete": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - union-container"
+      },
+      "patch": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "union-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "definition-test:union-container": {
+                    "$ref": "#/components/schemas/definition-test_union-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_union-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - union-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "binary-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/definition-test_binary-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "binary-container": {
+                    "$ref": "#/components/schemas/definition-test_binary-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - definition-test - definition-test"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "definition-test_union-container": {
+        "properties": {
+          "testUnion3": {
+            "default": "false",
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "testUnion1": {
+            "default": "5",
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "testUnion2": {
+            "default": "false",
+            "description": "",
+            "type": "string",
+            "example": "Some testUnion2"
+          },
+          "testBoolean": {
+            "default": true,
+            "description": "",
+            "type": "boolean",
+            "example": true
+          }
+        },
+        "xml": {
+          "name": "union-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_union-container",
+        "type": "object"
+      },
+      "definition-test_number-container": {
+        "properties": {
+          "testInteger": {
+            "default": 42,
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "testDecimal": {
+            "default": 3.14,
+            "description": "",
+            "type": "number",
+            "example": -92233720368547758.08
+          },
+          "testInt64": {
+            "default": 42,
+            "description": "",
+            "type": "integer",
+            "example": -9223372036854775808,
+            "format": "int64"
+          },
+          "testDouble": {
+            "default": 3.14159265359,
+            "description": "",
+            "type": "number",
+            "example": -92233720.36854775808
+          },
+          "testUint64": {
+            "default": 42,
+            "description": "",
+            "type": "integer",
+            "example": 0
+          },
+          "testUnsignedInteger": {
+            "default": 100,
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "number-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_number-container",
+        "type": "object"
+      },
+      "definition-test_network-container": {
+        "properties": {
+          "network-ref": {
+            "default": "/network/nodes[node-id='node1']",
+            "description": "",
+            "type": "string",
+            "example": "/sample:binary-container"
+          }
+        },
+        "xml": {
+          "name": "network-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_network-container",
+        "type": "object"
+      },
+      "definition-test_enum-container": {
+        "properties": {
+          "status": {
+            "default": "up",
+            "enum": [
+              "up",
+              "down"
+            ],
+            "description": "",
+            "type": "string",
+            "example": "up"
+          }
+        },
+        "xml": {
+          "name": "enum-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_enum-container",
+        "type": "object"
+      },
+      "definition-test_binary-container": {
+        "properties": {
+          "binary-data": {
+            "default": "SGVsbG8gdGVzdCE=",
+            "description": "",
+            "type": "string",
+            "format": "byte"
+          }
+        },
+        "xml": {
+          "name": "binary-container",
+          "namespace": "urn:definition-test"
+        },
+        "description": "",
+        "title": "definition-test_binary-container",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-mandatory-test.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-mandatory-test.json
new file mode 100644 (file)
index 0000000..3a788f7
--- /dev/null
@@ -0,0 +1,1399 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "mandatory-test",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-container/mandatory-container": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-container": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - mandatory-container"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - mandatory-container"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - mandatory-container"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - mandatory-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-container/optional-list={id}": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "optional-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-container_optional-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - optional-list"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "optional-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - optional-list"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - optional-list"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "optional-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - optional-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-container/mandatory-list={id}": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - mandatory-list"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - mandatory-list"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - mandatory-list"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - mandatory-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-optional-list={id}": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-optional-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-optional-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-optional-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - root-optional-list"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-optional-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-optional-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - root-optional-list"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - root-optional-list"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-optional-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-optional-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-optional-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-optional-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - root-optional-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-container": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - root-container"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - root-container"
+      },
+      "post": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "optional-presence-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "optional-presence-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - mandatory-test - root-container"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - root-container"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - root-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-container/optional-presence-container": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "optional-presence-container": {
+                      "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - optional-presence-container"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "optional-presence-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-presence-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - optional-presence-container"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - optional-presence-container"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "optional-presence-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:optional-presence-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - optional-presence-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-container"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "root-container": {
+                    "$ref": "#/components/schemas/mandatory-test_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - mandatory-test - mandatory-test"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-mandatory-list={id}": {
+      "get": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/mandatory-test_root-mandatory-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-mandatory-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/mandatory-test_root-mandatory-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - root-mandatory-list"
+      },
+      "put": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-mandatory-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-mandatory-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - root-mandatory-list"
+      },
+      "delete": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - root-mandatory-list"
+      },
+      "patch": {
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-mandatory-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "mandatory-test:root-mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/mandatory-test_root-mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/mandatory-test_root-mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - root-mandatory-list"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "mandatory-test_root-container_mandatory-list": {
+        "required": [
+          "mandatory-list-field"
+        ],
+        "properties": {
+          "mandatory-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-list-field"
+          },
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_mandatory-list",
+        "type": "object"
+      },
+      "mandatory-test_root-container": {
+        "required": [
+          "mandatory-root-leaf",
+          "mandatory-container",
+          "mandatory-first-choice",
+          "mandatory-list"
+        ],
+        "properties": {
+          "mandatory-root-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-root-leaf"
+          },
+          "mandatory-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-list"
+            },
+            "example": [
+              {
+                "id": 0,
+                "mandatory-list-field": "Some mandatory-list-field"
+              },
+              {
+                "id": 1,
+                "mandatory-list-field": "Some mandatory-list-field"
+              }
+            ],
+            "minItems": 2
+          },
+          "mandatory-first-choice": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-first-choice"
+          },
+          "optional-root-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some optional-root-leaf"
+          },
+          "optional-presence-container": {
+            "$ref": "#/components/schemas/mandatory-test_root-container_optional-presence-container"
+          },
+          "mandatory-container": {
+            "$ref": "#/components/schemas/mandatory-test_root-container_mandatory-container"
+          },
+          "optional-first-choice": {
+            "description": "",
+            "type": "string",
+            "example": "Some optional-first-choice"
+          },
+          "optional-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/mandatory-test_root-container_optional-list"
+            }
+          }
+        },
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container",
+        "type": "object"
+      },
+      "mandatory-test_root-container_optional-list": {
+        "properties": {
+          "optional-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some optional-list-field"
+          },
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "optional-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_optional-list",
+        "type": "object"
+      },
+      "mandatory-test_root-container_optional-presence-container": {
+        "properties": {
+          "presence-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some presence-leaf"
+          }
+        },
+        "xml": {
+          "name": "optional-presence-container",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_optional-presence-container",
+        "type": "object"
+      },
+      "mandatory-test_root-optional-list": {
+        "properties": {
+          "root-optional-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some root-optional-list-field"
+          },
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "root-optional-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-optional-list",
+        "type": "object"
+      },
+      "mandatory-test_root-mandatory-list": {
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "root-mandatory-list-field": {
+            "description": "",
+            "type": "string",
+            "example": "Some root-mandatory-list-field"
+          }
+        },
+        "xml": {
+          "name": "root-mandatory-list",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-mandatory-list",
+        "type": "object"
+      },
+      "mandatory-test_root-container_mandatory-container": {
+        "required": [
+          "mandatory-leaf",
+          "leaf-list-with-min-elements"
+        ],
+        "properties": {
+          "leaf-list-with-min-elements": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": "Some leaf-list-with-min-elements"
+            },
+            "example": [
+              "Some leaf-list-with-min-elements",
+              "Some leaf-list-with-min-elements"
+            ],
+            "minItems": 2
+          },
+          "mandatory-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some mandatory-leaf"
+          }
+        },
+        "xml": {
+          "name": "mandatory-container",
+          "namespace": "http://example.com/test"
+        },
+        "description": "",
+        "title": "mandatory-test_root-container_mandatory-container",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-my-yang.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-my-yang.json
new file mode 100644 (file)
index 0000000..47cb8f8
--- /dev/null
@@ -0,0 +1,212 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "my-yang",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/nodes/node=123/yang-ext:mount/my-yang:data": {
+      "get": {
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/my-yang_data"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "data": {
+                      "$ref": "#/components/schemas/my-yang_data",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - my-yang - data"
+      },
+      "put": {
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "data",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/my-yang_data"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "my-yang:data": {
+                    "$ref": "#/components/schemas/my-yang_data",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - my-yang - 123 - data"
+      },
+      "delete": {
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - my-yang - data"
+      },
+      "patch": {
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "data",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "my-yang:data": {
+                    "$ref": "#/components/schemas/my-yang_data",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/my-yang_data"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - my-yang - 123 - data"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "data",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/my-yang_data"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "data": {
+                    "$ref": "#/components/schemas/my-yang_data",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "demo yang file\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - my-yang - my-yang"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "my-yang_data": {
+        "properties": {
+          "my-data": {
+            "description": "",
+            "type": "string",
+            "example": "Some my-data"
+          }
+        },
+        "xml": {
+          "name": "data",
+          "namespace": "urn:opendaylight:params:xml:ns:yang:my-yang"
+        },
+        "description": "",
+        "title": "my-yang_data",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-opflex.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-opflex.json
new file mode 100644 (file)
index 0000000..492bc77
--- /dev/null
@@ -0,0 +1,28 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "opflex",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {},
+  "components": {
+    "schemas": {},
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-path-params-test.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-path-params-test.json
new file mode 100644 (file)
index 0000000..f6fc795
--- /dev/null
@@ -0,0 +1,1278 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "path-params-test",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont/list1={name}/list2={name1}": {
+      "get": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list2": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list1_list2",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - path-params-test - list2"
+      },
+      "put": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list2",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list2": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list2",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - list2"
+      },
+      "delete": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - list2"
+      },
+      "patch": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list2",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list2": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list2",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - list2"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont/list1={name}/cont2": {
+      "get": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont2": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_cont2",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - path-params-test - cont2"
+      },
+      "put": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont2",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont2": {
+                    "$ref": "#/components/schemas/path-params-test_cont_list1_cont2",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - cont2"
+      },
+      "delete": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - cont2"
+      },
+      "patch": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont2",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont2": {
+                    "$ref": "#/components/schemas/path-params-test_cont_list1_cont2",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - cont2"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont/list1={name}/list4={name1}": {
+      "get": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list4": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list1_list4",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - path-params-test - list4"
+      },
+      "put": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list4",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list4": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list4",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - list4"
+      },
+      "delete": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - list4"
+      },
+      "patch": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list4",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list4": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1_list4",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - list4"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont/list3={name}": {
+      "get": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list3"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list3": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list3",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - path-params-test - list3"
+      },
+      "put": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list3",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list3"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list3": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list3",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - list3"
+      },
+      "delete": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - list3"
+      },
+      "patch": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list3",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list3": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list3",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list3"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - list3"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont/list1={name}": {
+      "get": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont_list1"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list1": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/path-params-test_cont_list1",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - path-params-test - list1"
+      },
+      "put": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list1",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - list1"
+      },
+      "delete": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - list1"
+      },
+      "patch": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list1",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:list1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - list1"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont": {
+      "get": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/path-params-test_cont"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont": {
+                      "$ref": "#/components/schemas/path-params-test_cont",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - path-params-test - cont"
+      },
+      "put": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cont",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont": {
+                    "$ref": "#/components/schemas/path-params-test_cont",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - cont"
+      },
+      "post": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "list1",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont_list1"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "list1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/path-params-test_cont_list1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - path-params-test - cont"
+      },
+      "delete": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - cont"
+      },
+      "patch": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cont",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "path-params-test:cont": {
+                    "$ref": "#/components/schemas/path-params-test_cont",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - cont"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cont",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/path-params-test_cont"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "cont": {
+                    "$ref": "#/components/schemas/path-params-test_cont",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - path-params-test - path-params-test"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "path-params-test_cont_list1": {
+        "properties": {
+          "cont2": {
+            "$ref": "#/components/schemas/path-params-test_cont_list1_cont2"
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "list2": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list1_list2"
+            }
+          },
+          "list4": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list1_list4"
+            }
+          }
+        },
+        "xml": {
+          "name": "list1",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1",
+        "type": "object"
+      },
+      "path-params-test_cont_list3": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list3",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list3",
+        "type": "object"
+      },
+      "path-params-test_cont": {
+        "properties": {
+          "list3": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list3"
+            }
+          },
+          "list1": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/path-params-test_cont_list1"
+            }
+          }
+        },
+        "xml": {
+          "name": "cont",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont",
+        "type": "object"
+      },
+      "path-params-test_cont_list1_list2": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list2",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1_list2",
+        "type": "object"
+      },
+      "path-params-test_cont_list1_cont2": {
+        "properties": {},
+        "xml": {
+          "name": "cont2",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1_cont2",
+        "type": "object"
+      },
+      "path-params-test_cont_list1_list4": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "list4",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        },
+        "description": "",
+        "title": "path-params-test_cont_list1_list4",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-recursive.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-recursive.json
new file mode 100644 (file)
index 0000000..943f948
--- /dev/null
@@ -0,0 +1,933 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "recursive",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/nodes/node=123/yang-ext:mount/recursive:container-root/root-list={name}/nested-list={name1}": {
+      "get": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - recursive - nested-list"
+      },
+      "put": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "nested-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - 123 - nested-list"
+      },
+      "delete": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - recursive - nested-list"
+      },
+      "patch": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "nested-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - 123 - nested-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/recursive:container-root": {
+      "get": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "container-root": {
+                      "$ref": "#/components/schemas/recursive_container-root",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - recursive - container-root"
+      },
+      "put": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:container-root": {
+                    "$ref": "#/components/schemas/recursive_container-root",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - 123 - container-root"
+      },
+      "post": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "root-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - recursive - container-root"
+      },
+      "delete": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - recursive - container-root"
+      },
+      "patch": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-root",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:container-root": {
+                    "$ref": "#/components/schemas/recursive_container-root",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - 123 - container-root"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/recursive:container-root/root-list={name}": {
+      "get": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root_root-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/recursive_container-root_root-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - recursive - root-list"
+      },
+      "put": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:root-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - 123 - root-list"
+      },
+      "delete": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - recursive - root-list"
+      },
+      "patch": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "root-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:root-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - 123 - root-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/recursive:container-root/root-list={name}/nested-list={name1}/super-nested-list={name2}": {
+      "get": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "super-nested-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - recursive - super-nested-list"
+      },
+      "put": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "super-nested-list",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "recursive:super-nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - recursive - 123 - super-nested-list"
+      },
+      "delete": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - recursive - super-nested-list"
+      },
+      "patch": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "name2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "super-nested-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "recursive:super-nested-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - recursive - 123 - super-nested-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "container-root",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/recursive_container-root"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "container-root": {
+                    "$ref": "#/components/schemas/recursive_container-root",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - recursive - recursive"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "recursive_container-root_root-list": {
+        "properties": {
+          "nested-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list"
+            }
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "root-list",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root_root-list",
+        "type": "object"
+      },
+      "recursive_container-root_root-list_nested-list": {
+        "properties": {
+          "super-nested-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/recursive_container-root_root-list_nested-list_super-nested-list"
+            }
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "nested-list",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root_root-list_nested-list",
+        "type": "object"
+      },
+      "recursive_container-root_root-list_nested-list_super-nested-list": {
+        "properties": {
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "super-nested-list",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root_root-list_nested-list_super-nested-list",
+        "type": "object"
+      },
+      "recursive_container-root": {
+        "properties": {
+          "root-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/recursive_container-root_root-list"
+            }
+          }
+        },
+        "xml": {
+          "name": "container-root",
+          "namespace": "urn:opendaylight:test:recursive"
+        },
+        "description": "",
+        "title": "recursive_container-root",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-string-from-regex.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-string-from-regex.json
new file mode 100644 (file)
index 0000000..6df0a4c
--- /dev/null
@@ -0,0 +1,228 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "strings-from-regex",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/nodes/node=123/yang-ext:mount/strings-from-regex:test": {
+      "get": {
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/strings-from-regex_test"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "test": {
+                      "$ref": "#/components/schemas/strings-from-regex_test",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - strings-from-regex - test"
+      },
+      "put": {
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-from-regex_test"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "strings-from-regex:test": {
+                    "$ref": "#/components/schemas/strings-from-regex_test",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - strings-from-regex - 123 - test"
+      },
+      "delete": {
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - strings-from-regex - test"
+      },
+      "patch": {
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "strings-from-regex:test": {
+                    "$ref": "#/components/schemas/strings-from-regex_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-from-regex_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - strings-from-regex - 123 - test"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-from-regex_test"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test": {
+                    "$ref": "#/components/schemas/strings-from-regex_test",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - strings-from-regex - strings-from-regex"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "strings-from-regex_test": {
+        "properties": {
+          "mac-address": {
+            "description": "",
+            "type": "string",
+            "example": "00:00:00:00:00:00",
+            "minLength": 0,
+            "maxLength": 2147483647
+          },
+          "ipv4-address": {
+            "description": "",
+            "type": "string",
+            "example": "0.0.0.0",
+            "minLength": 0,
+            "maxLength": 2147483647
+          },
+          "login-date-time": {
+            "description": "",
+            "type": "string",
+            "example": "0000-00-00T00:00:00Z",
+            "minLength": 0,
+            "maxLength": 2147483647
+          }
+        },
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:strings:regex"
+        },
+        "description": "",
+        "title": "strings-from-regex_test",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-string-types.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-string-types.json
new file mode 100644 (file)
index 0000000..e965dc0
--- /dev/null
@@ -0,0 +1,263 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "string-types",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/string-types_test"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test": {
+                    "$ref": "#/components/schemas/string-types_test",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - string-types - string-types"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/string-types:test": {
+      "get": {
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/string-types_test"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "test": {
+                      "$ref": "#/components/schemas/string-types_test",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "GET - 123 - string-types - test"
+      },
+      "put": {
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/string-types_test"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "string-types:test": {
+                    "$ref": "#/components/schemas/string-types_test",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "PUT - string-types - 123 - test"
+      },
+      "delete": {
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "DELETE - 123 - string-types - test"
+      },
+      "patch": {
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "string-types:test": {
+                    "$ref": "#/components/schemas/string-types_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/string-types_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "summary": "PATCH - string-types - 123 - test"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "string-types_test": {
+        "properties": {
+          "date-and-time": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 8,
+            "maxLength": 11
+          },
+          "braille-patterns": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "mac-address": {
+            "description": "",
+            "type": "string",
+            "example": "00:",
+            "minLength": 6,
+            "maxLength": 6
+          },
+          "phys-address": {
+            "description": "",
+            "type": "string",
+            "example": "00:",
+            "minLength": 0,
+            "maxLength": 2147483647
+          },
+          "arrows": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "mathematical-operators": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "thai": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 10,
+            "maxLength": 10
+          },
+          "display-string": {
+            "description": "",
+            "type": "string",
+            "example": "",
+            "minLength": 0,
+            "maxLength": 255
+          }
+        },
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:string:types"
+        },
+        "description": "Tests various combinations of regex expressions found in snmp yang models,\nwhich are causing problems because of isBasicLatin expression.\n\nAccording to https://unicode.org/charts/PDF/U0000.pdf basic latin characters are in range\n0x00-0x7F ([\\x00-\\xFF] or [\\u0000-\\u00FF]). This means it should be safe to replace isBasicLatin\nin regex expressions for characters in this range.",
+        "title": "string-types_test",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-test-container-childs.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-test-container-childs.json
new file mode 100644 (file)
index 0000000..793b8fb
--- /dev/null
@@ -0,0 +1,2083 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "test-container-childs",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container/nested-container": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-container": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - nested-container"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - nested-container"
+      },
+      "post": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - test-container-childs - nested-container"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - nested-container"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - nested-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-unique": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container-unique": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-unique"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - root-container-unique"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - root-container-unique"
+      },
+      "post": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "nested-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - test-container-childs - root-container-unique"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - root-container-unique"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-unique",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - root-container-unique"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container/nested-container/mandatory-list={id}": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - mandatory-list"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - mandatory-list"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - mandatory-list"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - mandatory-list"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-two-keys/nested-container-two-keys/mandatory-list-two-keys={id},{name}": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list-two-keys": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - mandatory-list-two-keys"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-two-keys": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - mandatory-list-two-keys"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - mandatory-list-two-keys"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-two-keys",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-two-keys": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - mandatory-list-two-keys"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-two-keys": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container-two-keys": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - root-container-two-keys"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - root-container-two-keys"
+      },
+      "post": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "nested-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - test-container-childs - root-container-two-keys"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - root-container-two-keys"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container-two-keys",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - root-container-two-keys"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-two-keys/nested-container-two-keys/mandatory-list-two-keys={id},{name}/list-nested-container": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "list-nested-container": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - list-nested-container"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-nested-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:list-nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - list-nested-container"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - list-nested-container"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "list-nested-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:list-nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - list-nested-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-unique/nested-container-unique/mandatory-list-unique={id}": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "mandatory-list-unique": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - mandatory-list-unique"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-unique": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - mandatory-list-unique"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - mandatory-list-unique"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "mandatory-list-unique",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:mandatory-list-unique": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - mandatory-list-unique"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "root-container": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - root-container"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - root-container"
+      },
+      "post": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "nested-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container_nested-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - test-container-childs - root-container"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - root-container"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:root-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - root-container"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-unique/nested-container-unique": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-container-unique": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - nested-container-unique"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - nested-container-unique"
+      },
+      "post": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-list-unique",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-list-unique": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - test-container-childs - nested-container-unique"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - nested-container-unique"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-unique",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-unique": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - nested-container-unique"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "root-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "root-container": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - test-container-childs - test-container-childs"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-two-keys/nested-container-two-keys": {
+      "get": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nested-container-two-keys": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - nested-container-two-keys"
+      },
+      "put": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - nested-container-two-keys"
+      },
+      "post": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "mandatory-list-two-keys",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "mandatory-list-two-keys": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - test-container-childs - nested-container-two-keys"
+      },
+      "delete": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - nested-container-two-keys"
+      },
+      "patch": {
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "nested-container-two-keys",
+          "content": {
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+              }
+            },
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "test-container-childs:nested-container-two-keys": {
+                    "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "200": {
+            "description": "OK"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - nested-container-two-keys"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "test-container-childs_root-container-unique": {
+        "properties": {
+          "nested-container-unique": {
+            "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique"
+          }
+        },
+        "xml": {
+          "name": "root-container-unique",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-unique",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys": {
+        "properties": {
+          "nested-container-two-keys": {
+            "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys"
+          }
+        },
+        "xml": {
+          "name": "root-container-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys",
+        "type": "object"
+      },
+      "test-container-childs_root-container-unique_nested-container-unique": {
+        "required": [
+          "mandatory-list-unique"
+        ],
+        "properties": {
+          "mandatory-list-unique": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique"
+            },
+            "example": [
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "description": "Some description",
+                "id": 0
+              },
+              {
+                "address": "Some address_1",
+                "name": "Some name_1",
+                "description": "Some description",
+                "id": 1
+              },
+              {
+                "address": "Some address_2",
+                "name": "Some name_2",
+                "description": "Some description",
+                "id": 2
+              }
+            ],
+            "minItems": 3,
+            "maxItems": 5
+          }
+        },
+        "xml": {
+          "name": "nested-container-unique",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-unique_nested-container-unique",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container": {
+        "properties": {
+          "nested-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some nested-leaf"
+          }
+        },
+        "xml": {
+          "name": "list-nested-container",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys_nested-container-two-keys": {
+        "required": [
+          "mandatory-list-two-keys"
+        ],
+        "properties": {
+          "mandatory-list-two-keys": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys"
+            },
+            "example": [
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 0
+              },
+              {
+                "address": "Some address",
+                "name": "Some name_1",
+                "id": 1
+              },
+              {
+                "address": "Some address",
+                "name": "Some name_2",
+                "id": 2
+              }
+            ],
+            "minItems": 3,
+            "maxItems": 5
+          }
+        },
+        "xml": {
+          "name": "nested-container-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys_nested-container-two-keys",
+        "type": "object"
+      },
+      "test-container-childs_root-container": {
+        "properties": {
+          "nested-container": {
+            "$ref": "#/components/schemas/test-container-childs_root-container_nested-container"
+          }
+        },
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container",
+        "type": "object"
+      },
+      "test-container-childs_root-container_nested-container_mandatory-list": {
+        "properties": {
+          "address": {
+            "description": "",
+            "type": "string",
+            "example": "Some address"
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container_nested-container_mandatory-list",
+        "type": "object"
+      },
+      "test-container-childs_root-container_nested-container": {
+        "required": [
+          "mandatory-list"
+        ],
+        "properties": {
+          "mandatory-list": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/test-container-childs_root-container_nested-container_mandatory-list"
+            },
+            "example": [
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 0
+              },
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 1
+              },
+              {
+                "address": "Some address",
+                "name": "Some name",
+                "id": 2
+              }
+            ],
+            "minItems": 3,
+            "maxItems": 5
+          }
+        },
+        "xml": {
+          "name": "nested-container",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container_nested-container",
+        "type": "object"
+      },
+      "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys": {
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "address": {
+            "description": "",
+            "type": "string",
+            "example": "Some address"
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          },
+          "list-nested-container": {
+            "$ref": "#/components/schemas/test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys_list-nested-container"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-two-keys_nested-container-two-keys_mandatory-list-two-keys",
+        "type": "object"
+      },
+      "test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique": {
+        "properties": {
+          "id": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "description": {
+            "description": "",
+            "type": "string",
+            "example": "Some description"
+          },
+          "address": {
+            "description": "",
+            "type": "string",
+            "example": "Some address"
+          },
+          "name": {
+            "description": "",
+            "type": "string",
+            "example": "Some name"
+          }
+        },
+        "xml": {
+          "name": "mandatory-list-unique",
+          "namespace": "http://example.com/test/container/child"
+        },
+        "description": "",
+        "title": "test-container-childs_root-container-unique_nested-container-unique_mandatory-list-unique",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-toaster-augmented.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-toaster-augmented.json
new file mode 100644 (file)
index 0000000..4cf79d6
--- /dev/null
@@ -0,0 +1,28 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "toaster-augmented",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {},
+  "components": {
+    "schemas": {},
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-toaster.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-toaster.json
new file mode 100644 (file)
index 0000000..678ae37
--- /dev/null
@@ -0,0 +1,345 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "toaster",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster:make-toast": {
+      "post": {
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "make-toast_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_make-toast_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/toaster_make-toast_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC make-toast success"
+          }
+        },
+        "description": "Make some toast.\n  The toastDone notification will be sent when\n  the toast is finished.\n  An 'in-use' error will be returned if toast\n  is already being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - 123 - toaster - make-toast"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster:toaster": {
+      "get": {
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster_toaster"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "toaster": {
+                      "$ref": "#/components/schemas/toaster_toaster",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - 123 - toaster - toaster"
+      },
+      "put": {
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_toaster"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster:toaster": {
+                    "$ref": "#/components/schemas/toaster_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster - 123 - toaster"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - 123 - toaster - toaster"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster:toaster": {
+                    "$ref": "#/components/schemas/toaster_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_toaster"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster - 123 - toaster"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster:cancel-toast": {
+      "post": {
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cancel-toast_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "http://netconfcentral.org/ns/toaster"
+                },
+                "type": "object"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC cancel-toast success"
+          }
+        },
+        "description": "Stop making toast, if any is being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - 123 - toaster - cancel-toast"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster_toaster"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster": {
+                    "$ref": "#/components/schemas/toaster_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "YANG version of the TOASTER-MIB.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - toaster - toaster"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "toaster_make-toast_input": {
+        "properties": {
+          "toasterDoneness": {
+            "default": 5,
+            "description": "This variable controls how well-done is the\n      ensuing toast. It should be on a scale of 1 to 10.\n      Toast made at 10 generally is considered unfit\n      for human consumption; toast made at 1 is warmed\n      lightly.",
+            "type": "integer",
+            "example": 1,
+            "format": "int64"
+          },
+          "toasterToastType": {
+            "default": "wheat-bread",
+            "enum": [
+              "toast-type",
+              "wheat-bread",
+              "frozen-waffle",
+              "white-bread",
+              "frozen-bagel",
+              "hash-brown",
+              "wonder-bread"
+            ],
+            "description": "This variable informs the toaster of the type of\n      material that is being toasted. The toaster\n      uses this information, combined with\n      toasterDoneness, to compute for how\n      long the material must be toasted to achieve\n      the required doneness.",
+            "type": "string",
+            "example": "toast-type"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        },
+        "title": "toaster_make-toast_input",
+        "type": "object"
+      },
+      "toaster_toaster": {
+        "properties": {
+          "allow-user": {
+            "description": "A list of user name patterns to allow",
+            "type": "array",
+            "items": {
+              "type": "string",
+              "example": "Some allow-user"
+            }
+          },
+          "testToasterBits": {
+            "default": "testbit2",
+            "enum": [
+              "testbit1",
+              "testbit2"
+            ],
+            "description": "",
+            "type": "string",
+            "minItems": 0,
+            "uniqueItems": true
+          },
+          "testUnion": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "interval": {
+            "default": 30,
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "title": "toaster_toaster",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-toaster2.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-toaster2.json
new file mode 100644 (file)
index 0000000..1b95255
--- /dev/null
@@ -0,0 +1,1900 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "toaster2",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:toaster/toasterSlot={slotId}/toaster-augmented:slotInfo": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "slotInfo": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - slotInfo"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "slotInfo",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster-augmented:slotInfo": {
+                    "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - slotInfo"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - slotInfo"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "slotInfo",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster-augmented:slotInfo": {
+                    "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - slotInfo"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:lst={lf1}/lst1={key1},{key2}": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_lst1"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "lst1": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_lst_lst1",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - lst1"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst1",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_lst1"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_lst1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - lst1"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - lst1"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "key1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "key2",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst1",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst1": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_lst1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_lst1"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - lst1"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster2:restock-toaster": {
+      "post": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "restock-toaster_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_restock-toaster_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/toaster2_restock-toaster_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC restock-toaster success"
+          }
+        },
+        "description": "Restocks the toaster with the amount of bread specified.",
+        "summary": "POST - 123 - toaster2 - restock-toaster"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:toaster/toasterSlot={slotId}": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "toasterSlot": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - toasterSlot"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "toasterSlot",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toasterSlot": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - toasterSlot"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - toasterSlot"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "slotId",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "toasterSlot",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toasterSlot": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - toasterSlot"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster2:cancel-toast": {
+      "post": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "cancel-toast_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "xml": {
+                  "name": "input",
+                  "namespace": "http://netconfcentral.org/ns/toaster2"
+                },
+                "type": "object"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "type": "object"
+                  }
+                },
+                "type": "object"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC cancel-toast success"
+          }
+        },
+        "description": "Stop making toast, if any is being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - 123 - toaster2 - cancel-toast"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:toaster": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_toaster"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "toaster": {
+                      "$ref": "#/components/schemas/toaster2_toaster",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - 123 - toaster2 - toaster"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toaster": {
+                    "$ref": "#/components/schemas/toaster2_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster2 - 123 - toaster"
+      },
+      "post": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toasterSlot",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toasterSlot": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_toaster_toasterSlot",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - toaster2 - toaster"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - 123 - toaster2 - toaster"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:toaster": {
+                    "$ref": "#/components/schemas/toaster2_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster2 - 123 - toaster"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:lst={lf1}/cont1/lst11={lf111}": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "lst11": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_lst_cont1_lst11",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - lst11"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst11",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst11": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1_lst11",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - lst11"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - lst11"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "lf111",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst11",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst11": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1_lst11",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - lst11"
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster2:make-toast": {
+      "post": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "make-toast_input",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_make-toast_input"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/toaster2_make-toast_input",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC make-toast success"
+          }
+        },
+        "description": "Make some toast.\n  The toastDone notification will be sent when\n  the toast is finished.\n  An 'in-use' error will be returned if toast\n  is already being made.\n  A 'resource-denied' error will be returned\n  if the toaster service is disabled.",
+        "summary": "POST - 123 - toaster2 - make-toast"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:lst={lf1}": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "lst": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/toaster2_lst",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - lst"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - lst"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - lst"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "lst",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:lst": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/toaster2_lst",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - lst"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:lst={lf1}/cont1": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_cont1"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont1": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - cont1"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont1",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont1": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - cont1"
+      },
+      "post": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont11",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "cont11": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - toaster2 - cont1"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - cont1"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont1",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont1": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - cont1"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:lst={lf1}/cont1/cont11": {
+      "get": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "cont11": {
+                      "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - toaster2 - cont11"
+      },
+      "put": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont11",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont11": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - cont11"
+      },
+      "delete": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - cont11"
+      },
+      "patch": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "cont11",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "toaster2:cont11": {
+                    "$ref": "#/components/schemas/toaster2_lst_cont1_cont11",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - cont11"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "toaster",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/toaster2_toaster"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "toaster": {
+                    "$ref": "#/components/schemas/toaster2_toaster",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "YANG version of the TOASTER-MIB.\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - toaster2 - toaster2"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "toaster2_lst_cont1": {
+        "properties": {
+          "lst11": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/toaster2_lst_cont1_lst11"
+            }
+          },
+          "cont11": {
+            "$ref": "#/components/schemas/toaster2_lst_cont1_cont11"
+          }
+        },
+        "xml": {
+          "name": "cont1",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_cont1",
+        "type": "object"
+      },
+      "toaster2_make-toast_input": {
+        "properties": {
+          "toasterDoneness": {
+            "default": 5,
+            "description": "This variable controls how well-done is the\n      ensuing toast. It should be on a scale of 1 to 10.\n      Toast made at 10 generally is considered unfit\n      for human consumption; toast made at 1 is warmed\n      lightly.",
+            "type": "integer",
+            "example": 1,
+            "format": "int64"
+          },
+          "toasterToastType": {
+            "default": "wheat-bread",
+            "enum": [
+              "toast-type",
+              "wonder-bread",
+              "hash-brown",
+              "wheat-bread",
+              "frozen-waffle",
+              "frozen-bagel",
+              "white-bread"
+            ],
+            "description": "This variable informs the toaster of the type of\n      material that is being toasted. The toaster\n      uses this information, combined with\n      toasterDoneness, to compute for how\n      long the material must be toasted to achieve\n      the required doneness.",
+            "type": "string",
+            "example": "toast-type"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "title": "toaster2_make-toast_input",
+        "type": "object"
+      },
+      "toaster2_lst": {
+        "properties": {
+          "cont1": {
+            "$ref": "#/components/schemas/toaster2_lst_cont1"
+          },
+          "lf1": {
+            "description": "",
+            "type": "string",
+            "example": "Some lf1"
+          },
+          "lst1": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/toaster2_lst_lst1"
+            }
+          }
+        },
+        "xml": {
+          "name": "lst",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst",
+        "type": "object"
+      },
+      "toaster2_toaster": {
+        "properties": {
+          "darknessFactor": {
+            "default": 1000,
+            "description": "The darkness factor. Basically, the number of ms to multiple the doneness value by.",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          },
+          "toasterSlot": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/toaster2_toaster_toasterSlot"
+            }
+          }
+        },
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "Top-level container for all toaster database objects.",
+        "title": "toaster2_toaster",
+        "type": "object"
+      },
+      "toaster2_lst_lst1": {
+        "properties": {
+          "key1": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "key2": {
+            "description": "",
+            "type": "integer",
+            "example": -128,
+            "format": "int32"
+          },
+          "lf11": {
+            "description": "",
+            "type": "integer",
+            "example": -32768,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "lst1",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_lst1",
+        "type": "object"
+      },
+      "toaster2_lst_cont1_cont11": {
+        "properties": {
+          "lf112": {
+            "description": "",
+            "type": "string",
+            "example": "Some lf112"
+          },
+          "lf111": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "cont11",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_cont1_cont11",
+        "type": "object"
+      },
+      "toaster2_toaster_toasterSlot_slotInfo": {
+        "properties": {
+          "numberOfToastPrepared": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "slotInfo",
+          "namespace": "http://netconfcentral.org/ns/toaster/augmented"
+        },
+        "description": "",
+        "title": "toaster2_toaster_toasterSlot_slotInfo",
+        "type": "object"
+      },
+      "toaster2_toaster_toasterSlot": {
+        "properties": {
+          "slotInfo": {
+            "$ref": "#/components/schemas/toaster2_toaster_toasterSlot_slotInfo"
+          },
+          "slotId": {
+            "description": "",
+            "type": "string",
+            "example": "Some slotId"
+          }
+        },
+        "xml": {
+          "name": "toasterSlot",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_toaster_toasterSlot",
+        "type": "object"
+      },
+      "toaster2_lst_cont1_lst11": {
+        "properties": {
+          "lf111": {
+            "description": "",
+            "type": "string",
+            "example": "Some lf111"
+          }
+        },
+        "xml": {
+          "name": "lst11",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "description": "",
+        "title": "toaster2_lst_cont1_lst11",
+        "type": "object"
+      },
+      "toaster2_restock-toaster_input": {
+        "properties": {
+          "amountOfBreadToStock": {
+            "description": "Indicates the amount of bread to re-stock",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        },
+        "title": "toaster2_restock-toaster_input",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-typed-params.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-typed-params.json
new file mode 100644 (file)
index 0000000..63f4019
--- /dev/null
@@ -0,0 +1,3711 @@
+{
+  "openapi": "3.0.3",
+  "info": {
+    "version": "1.0.0",
+    "title": "typed-params",
+    "description": "We are providing full API for configurational data which can be edited (by POST, PUT, PATCH and DELETE).\nFor operational data we only provide GET API.\n\nFor majority of request you can see only config data in examples. That’s because we can show only one example\nper request. The exception when you can see operational data in example is when data are representing\noperational (config false) container with no config data in it."
+  },
+  "servers": [
+    {
+      "url": "http://localhost:8181/"
+    }
+  ],
+  "paths": {
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "typed": {
+                      "$ref": "#/components/schemas/typed-params_typed",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - typed"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "typed",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:typed": {
+                    "$ref": "#/components/schemas/typed-params_typed",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - typed"
+      },
+      "post": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "string",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_string"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "string": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_string",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - typed-params - typed"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - typed"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "typed",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:typed": {
+                    "$ref": "#/components/schemas/typed-params_typed",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - typed"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/int16={int16-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int16"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int16": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int16",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - int16"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int16",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int16"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - int16"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - int16"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int16",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int16"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - int16"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/enumeration={enumeration-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_enumeration"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "enumeration": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_enumeration",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - enumeration"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "enumeration",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_enumeration"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:enumeration": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_enumeration",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - enumeration"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - enumeration"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "enumeration-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "enumeration",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:enumeration": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_enumeration",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_enumeration"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - enumeration"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/bits={bits-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_bits"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "bits": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_bits",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - bits"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "bits",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_bits"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:bits": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_bits",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - bits"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - bits"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "bits-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "bits",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:bits": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_bits",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_bits"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - bits"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/uint64={uint64-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint64"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint64": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint64",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - uint64"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint64",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint64"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - uint64"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - uint64"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint64",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint64"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - uint64"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/int64={int64-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int64"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int64": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int64",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - int64"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int64",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int64"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - int64"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - int64"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int64",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int64"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - int64"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/string={string-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_string"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "string": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_string",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - string"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "string",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_string"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:string": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_string",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - string"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - string"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "string-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "string",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:string": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_string",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_string"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - string"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/uint16={uint16-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint16"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint16": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint16",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - uint16"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint16",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint16"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - uint16"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - uint16"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint16-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint16",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint16": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint16",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint16"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - uint16"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/uint32={uint32-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint32"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint32": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint32",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - uint32"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint32",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint32"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - uint32"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - uint32"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint32",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint32"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - uint32"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/union={union-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_union"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "union": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_union",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - union"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "union",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_union"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:union": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_union",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - union"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - union"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "union-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "union",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:union": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_union",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_union"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - union"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/empty={empty-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_empty"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "empty": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_empty",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - empty"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "empty",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_empty"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:empty": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_empty",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - empty"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - empty"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "empty-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "empty",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:empty": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_empty",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_empty"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - empty"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/binary={binary-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_binary"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "binary": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_binary",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - binary"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "binary",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_binary"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:binary": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_binary",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - binary"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - binary"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "binary-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "binary",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:binary": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_binary",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_binary"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - binary"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/instance-identifier={instance-identifier-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "instance-identifier": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_instance-identifier",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - instance-identifier"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "instance-identifier",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:instance-identifier": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_instance-identifier",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - instance-identifier"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - instance-identifier"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "instance-identifier-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "instance-identifier",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:instance-identifier": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_instance-identifier",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - instance-identifier"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/uint8={uint8-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_uint8"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "uint8": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_uint8",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - uint8"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint8",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint8"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - uint8"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - uint8"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "uint8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "uint8",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:uint8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_uint8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_uint8"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - uint8"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/boolean={boolean-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_boolean"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "boolean": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_boolean",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - boolean"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "boolean",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_boolean"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:boolean": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_boolean",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - boolean"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - boolean"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "boolean-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "boolean",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:boolean": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_boolean",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_boolean"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - boolean"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/decimal64={decimal64-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_decimal64"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "decimal64": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_decimal64",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - decimal64"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "decimal64",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_decimal64"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:decimal64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_decimal64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - decimal64"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - decimal64"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "decimal64-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "number"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "decimal64",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:decimal64": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_decimal64",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_decimal64"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - decimal64"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/int32={int32-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int32"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int32": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int32",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - int32"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int32",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int32"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - int32"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - int32"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int32-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int32",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int32": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int32",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int32"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - int32"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed/int8={int8-key}": {
+      "get": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/typed-params_typed_int8"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "int8": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/typed-params_typed_int8",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "description": "",
+        "summary": "GET - 123 - typed-params - int8"
+      },
+      "put": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int8",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int8"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "Updated"
+          },
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "",
+        "summary": "PUT - typed-params - 123 - int8"
+      },
+      "delete": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - int8"
+      },
+      "patch": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "int8-key",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "requestBody": {
+          "description": "int8",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "typed-params:int8": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/typed-params_typed_int8",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed_int8"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - int8"
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount": {
+      "post": {
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [],
+        "requestBody": {
+          "description": "typed",
+          "content": {
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/typed-params_typed"
+              }
+            },
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "typed": {
+                    "$ref": "#/components/schemas/typed-params_typed",
+                    "type": "object"
+                  }
+                }
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "description": "\n\nNote:\nIn example payload, you can see only the first data node child of the resource to be created, following the\nguidelines of RFC 8040, which allows us to create only one resource in POST request.\n",
+        "summary": "POST - 123 - typed-params - typed-params"
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "typed-params_typed_boolean": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "boolean-key": {
+            "description": "",
+            "type": "boolean",
+            "example": true
+          }
+        },
+        "xml": {
+          "name": "boolean",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_boolean",
+        "type": "object"
+      },
+      "typed-params_typed_instance-identifier": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "instance-identifier-key": {
+            "description": "",
+            "type": "string",
+            "example": "/tparams:typed"
+          }
+        },
+        "xml": {
+          "name": "instance-identifier",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_instance-identifier",
+        "type": "object"
+      },
+      "typed-params_typed_uint8": {
+        "properties": {
+          "uint8-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "uint8",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint8",
+        "type": "object"
+      },
+      "typed-params_typed_bits": {
+        "properties": {
+          "bits-key": {
+            "default": "UP UP",
+            "enum": [
+              "UP"
+            ],
+            "description": "",
+            "type": "string",
+            "minItems": 0,
+            "uniqueItems": true
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "bits",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_bits",
+        "type": "object"
+      },
+      "typed-params_typed_binary": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "binary-key": {
+            "description": "",
+            "type": "string",
+            "format": "byte"
+          }
+        },
+        "xml": {
+          "name": "binary",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_binary",
+        "type": "object"
+      },
+      "typed-params_typed": {
+        "properties": {
+          "boolean": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_boolean"
+            }
+          },
+          "decimal64": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_decimal64"
+            }
+          },
+          "uint8": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint8"
+            }
+          },
+          "enumeration": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_enumeration"
+            }
+          },
+          "empty": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_empty"
+            }
+          },
+          "binary": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_binary"
+            }
+          },
+          "uint16": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint16"
+            }
+          },
+          "bits": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_bits"
+            }
+          },
+          "int8": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int8"
+            }
+          },
+          "int64": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int64"
+            }
+          },
+          "int32": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int32"
+            }
+          },
+          "string": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_string"
+            }
+          },
+          "uint64": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint64"
+            }
+          },
+          "instance-identifier": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_instance-identifier"
+            }
+          },
+          "union": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_union"
+            }
+          },
+          "uint32": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_uint32"
+            }
+          },
+          "int16": {
+            "description": "",
+            "type": "array",
+            "items": {
+              "$ref": "#/components/schemas/typed-params_typed_int16"
+            }
+          }
+        },
+        "xml": {
+          "name": "typed",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed",
+        "type": "object"
+      },
+      "typed-params_typed_int8": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "int8-key": {
+            "description": "",
+            "type": "integer",
+            "example": -128,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "int8",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int8",
+        "type": "object"
+      },
+      "typed-params_typed_int64": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "int64-key": {
+            "description": "",
+            "type": "integer",
+            "example": -9223372036854775808,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "int64",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int64",
+        "type": "object"
+      },
+      "typed-params_typed_int32": {
+        "properties": {
+          "int32-key": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "int32",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int32",
+        "type": "object"
+      },
+      "typed-params_typed_uint64": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "uint64-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0
+          }
+        },
+        "xml": {
+          "name": "uint64",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint64",
+        "type": "object"
+      },
+      "typed-params_typed_uint32": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "uint32-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int64"
+          }
+        },
+        "xml": {
+          "name": "uint32",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint32",
+        "type": "object"
+      },
+      "typed-params_typed_empty": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "empty-key": {
+            "description": "",
+            "type": "object"
+          }
+        },
+        "xml": {
+          "name": "empty",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_empty",
+        "type": "object"
+      },
+      "typed-params_typed_int16": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "int16-key": {
+            "description": "",
+            "type": "integer",
+            "example": -32768,
+            "format": "int32"
+          }
+        },
+        "xml": {
+          "name": "int16",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_int16",
+        "type": "object"
+      },
+      "typed-params_typed_uint16": {
+        "properties": {
+          "uint16-key": {
+            "description": "",
+            "type": "integer",
+            "example": 0,
+            "format": "int32"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "uint16",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_uint16",
+        "type": "object"
+      },
+      "typed-params_typed_enumeration": {
+        "properties": {
+          "enumeration-key": {
+            "enum": [
+              "first",
+              "second",
+              "third"
+            ],
+            "description": "",
+            "type": "string",
+            "example": "first"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "enumeration",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_enumeration",
+        "type": "object"
+      },
+      "typed-params_typed_decimal64": {
+        "properties": {
+          "decimal64-key": {
+            "description": "",
+            "type": "number",
+            "example": -92233720368547758.08
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "decimal64",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_decimal64",
+        "type": "object"
+      },
+      "typed-params_typed_union": {
+        "properties": {
+          "union-key": {
+            "description": "",
+            "type": "integer",
+            "example": -2147483648,
+            "format": "int32"
+          },
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          }
+        },
+        "xml": {
+          "name": "union",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_union",
+        "type": "object"
+      },
+      "typed-params_typed_string": {
+        "properties": {
+          "value": {
+            "description": "",
+            "type": "string",
+            "example": "Some value"
+          },
+          "string-key": {
+            "description": "",
+            "type": "string",
+            "example": "Some string-key"
+          }
+        },
+        "xml": {
+          "name": "string",
+          "namespace": "urn:typed-params"
+        },
+        "description": "",
+        "title": "typed-params_typed_string",
+        "type": "object"
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
\ No newline at end of file