Implement depth parameter 22/111222/53 master
authorIvan Hrasko <ivan.hrasko@pantheon.tech>
Wed, 3 Apr 2024 13:31:08 +0000 (15:31 +0200)
committerIvan Hrasko <ivan.hrasko@pantheon.tech>
Thu, 4 Jul 2024 13:00:01 +0000 (13:00 +0000)
Implement depth parameter to enable to retrieve OpenAPI
document in smaller chunks for every model.

JIRA: NETCONF-1298
Change-Id: Ia615a776b6daa1d1d1b0de6d0863613d9d29ee79
Signed-off-by: Ivan Hrasko <ivan.hrasko@pantheon.tech>
Signed-off-by: Oleksandr Zharov <oleksandr.zharov@pantheon.tech>
21 files changed:
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/api/OpenApiService.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/BaseYangOpenApiGenerator.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/ComponentsStream.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/OpenApiInputStream.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/OpenApiServiceImpl.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/PathsStream.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/impl/SchemasStream.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/model/NodeSchemaEntity.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/model/PropertyEntity.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/model/RpcSchemaEntity.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/model/SchemaEntity.java
restconf/restconf-openapi/src/main/java/org/opendaylight/restconf/openapi/mountpoints/MountPointOpenApi.java
restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/AbstractDocumentTest.java
restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/BugsDocumentTest.java
restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/OperationalDocumentTest.java
restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/ToasterDocumentTest.java
restconf/restconf-openapi/src/test/java/org/opendaylight/restconf/openapi/impl/YangDocumentTest.java
restconf/restconf-openapi/src/test/resources/yang-document/controller-all-depth-one.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/controller-all-width-and-depth-one.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-all-depth-one.json [new file with mode: 0644]
restconf/restconf-openapi/src/test/resources/yang-document/device-all-width-and-depth-one.json [new file with mode: 0644]

index 18813e973bb2f785c333e3399643d35aec164943..36e927a08db1d6cb179f8bce6b5732ece9c9cebe 100644 (file)
@@ -34,6 +34,10 @@ public interface OpenApiService {
      * @param width Width is the number of child nodes processed for each module/node. This means that for example with
      *      width=3 we will process schema only for first 3 nodes in each module and each node that we process after.
      *      Value set to 0 or lesser means ignore width and to process all child nodes of a YANG module.
+     * @param depth Depth to which the OpenAPI document is generated, the number of levels of the module that are
+     *      processed in depth. For example, depth=1 means that the module will be processed with it's children, but
+     *      their children will be ignored. Value set to 0 or lesser means ignore depth and to process all child nodes
+     *      of a YANG module.
      * @return Response containing the OpenAPI document for all modules with number child nodes specified by
      *      {@code width}.
      * @throws IOException When I/O error occurs.
@@ -41,7 +45,8 @@ public interface OpenApiService {
     @GET
     @Path("/single")
     @Produces(MediaType.APPLICATION_JSON)
-    Response getAllModulesDoc(@Context UriInfo uriInfo, @QueryParam("width") Integer width) throws IOException;
+    Response getAllModulesDoc(@Context UriInfo uriInfo, @QueryParam("width") Integer width,
+                              @QueryParam("depth") Integer depth) throws IOException;
 
     /**
      * Generates Swagger compliant document listing APIs for module.
@@ -50,7 +55,8 @@ public interface OpenApiService {
     @Path("/{module}")
     @Produces(MediaType.APPLICATION_JSON)
     Response getDocByModule(@PathParam("module") String module, @QueryParam("revision") String revision,
-                            @Context UriInfo uriInfo, @QueryParam("width") Integer width) throws IOException;
+                            @Context UriInfo uriInfo, @QueryParam("width") Integer width,
+                            @QueryParam("depth") Integer depth) throws IOException;
 
     /**
      * Redirects to embedded swagger ui.
@@ -77,6 +83,10 @@ public interface OpenApiService {
      * @param width Width is the number of child nodes processed for each module/node. This means that for example with
      *      width=3 we will process schema only for first 3 nodes in each module and each node that we process after.
      *      Value set to 0 or lesser means ignore width and to process all child nodes of a YANG module.
+     * @param depth Depth to which the OpenAPI document is generated, the number of levels of the module that are
+     *      processed in depth. For example, depth=1 means that the module will be processed with it's children, but
+     *      their children will be ignored. Value set to 0 or lesser means ignore depth and to process all child nodes
+     *      of a YANG module.
      * @return Response containing the OpenAPI document for all modules with number child nodes specified by
      *      {@code width}.
      * @throws IOException When I/O error occurs.
@@ -86,7 +96,8 @@ public interface OpenApiService {
     @Produces(MediaType.APPLICATION_JSON)
     Response getMountDocByModule(@PathParam("instance") String instanceNum,
                                  @PathParam("module") String module, @QueryParam("revision") String revision,
-                                 @Context UriInfo uriInfo, @QueryParam("width") Integer width) throws IOException;
+                                 @Context UriInfo uriInfo, @QueryParam("width") Integer width,
+                                 @QueryParam("depth") Integer depth) throws IOException;
 
     /**
      * Generate OpenAPI specification document listing APIs for all modules of mount point.
@@ -95,6 +106,10 @@ public interface OpenApiService {
      * @param width Width is the number of child nodes processed for each module/node. This means that for example with
      *      width=3 we will process schema only for first 3 nodes in each module and each node that we process after.
      *      Value set to 0 or lesser means ignore width and to process all child nodes of a YANG module.
+     * @param depth Depth to which the OpenAPI document is generated, the number of levels of the module that are
+     *      processed in depth. For example, depth=1 means that the module will be processed with it's children, but
+     *      their children will be ignored. Value set to 0 or lesser means ignore depth and to process all child nodes
+     *      of a YANG module.
      * @return Response containing the OpenAPI document for all modules with number child nodes specified by
      *      {@code width}.
      * @throws IOException When I/O error occurs.
@@ -103,5 +118,5 @@ public interface OpenApiService {
     @Path("/mounts/{instance}")
     @Produces(MediaType.APPLICATION_JSON)
     Response getMountDoc(@PathParam("instance") String instanceNum, @Context UriInfo uriInfo,
-                         @QueryParam("width") Integer width) throws IOException;
+                         @QueryParam("width") Integer width, @QueryParam("depth") Integer depth) throws IOException;
 }
index d4463e40cc0af94c2598ec16df40cb98956b4559..ac6e15767e2506ddaf4222359e3728c7ad222abb 100644 (file)
@@ -37,7 +37,8 @@ public abstract class BaseYangOpenApiGenerator {
         this.schemaService = requireNonNull(schemaService);
     }
 
-    public OpenApiInputStream getControllerModulesDoc(final UriInfo uriInfo, final Integer width) throws IOException {
+    public OpenApiInputStream getControllerModulesDoc(final UriInfo uriInfo, final Integer width, final Integer depth)
+            throws IOException {
         final var modelContext = requireNonNull(schemaService.getGlobalContext());
         final var schema = createSchemaFromUriInfo(uriInfo);
         final var host = createHostFromUriInfo(uriInfo);
@@ -46,19 +47,19 @@ public abstract class BaseYangOpenApiGenerator {
         final var basePath = getBasePath();
         final var modules = getModulesWithoutDuplications(modelContext);
         return new OpenApiInputStream(modelContext, title, url, SECURITY, CONTROLLER_RESOURCE_NAME, "",false, true,
-            modules, basePath, width);
+            modules, basePath, width, depth);
     }
 
     public OpenApiInputStream getApiDeclaration(final String module, final String revision, final UriInfo uriInfo,
-            final Integer width) throws IOException {
+            final Integer width, final Integer depth) throws IOException {
         final var modelContext = schemaService.getGlobalContext();
         Preconditions.checkState(modelContext != null);
-        return getApiDeclaration(module, revision, uriInfo, modelContext, "", CONTROLLER_RESOURCE_NAME, width);
+        return getApiDeclaration(module, revision, uriInfo, modelContext, "", CONTROLLER_RESOURCE_NAME, width, depth);
     }
 
     public OpenApiInputStream getApiDeclaration(final String moduleName, final String revision, final UriInfo uriInfo,
             final EffectiveModelContext modelContext, final String urlPrefix, final @NonNull String deviceName,
-            final Integer width) throws IOException {
+            final Integer width, final Integer depth) throws IOException {
         final Optional<Revision> rev;
 
         try {
@@ -78,7 +79,7 @@ public abstract class BaseYangOpenApiGenerator {
         final var basePath = getBasePath();
         final var modules = List.of(module);
         return new OpenApiInputStream(modelContext, title, url, SECURITY,  deviceName, urlPrefix, true, false,
-            modules, basePath, width);
+            modules, basePath, width, depth);
     }
 
     public String createHostFromUriInfo(final UriInfo uriInfo) {
index c10f132ca74011ec2db98847673618026ab64565..02f646c3bd7eb21bb385b4704dcff0fe925f14c6 100644 (file)
@@ -36,6 +36,7 @@ public final class ComponentsStream extends InputStream {
     private final ByteArrayOutputStream stream;
     private final boolean isForSingleModule;
     private final Integer width;
+    private final Integer depth;
 
     private boolean schemasWritten;
     private boolean securityWritten;
@@ -44,7 +45,8 @@ public final class ComponentsStream extends InputStream {
 
     public ComponentsStream(final EffectiveModelContext modelContext, final OpenApiBodyWriter writer,
             final JsonGenerator generator, final ByteArrayOutputStream stream,
-            final Iterator<? extends Module> iterator, final boolean isForSingleModule, final Integer width) {
+            final Iterator<? extends Module> iterator, final boolean isForSingleModule, final Integer width,
+            final Integer depth) {
         this.iterator = iterator;
         this.modelContext = modelContext;
         this.writer = writer;
@@ -52,6 +54,7 @@ public final class ComponentsStream extends InputStream {
         this.stream = stream;
         this.isForSingleModule = isForSingleModule;
         this.width = width;
+        this.depth = depth;
     }
 
     @Override
@@ -67,7 +70,7 @@ public final class ComponentsStream extends InputStream {
         while (read == -1) {
             if (!schemasWritten) {
                 reader = new InputStreamReader(new SchemasStream(modelContext, writer, iterator, isForSingleModule,
-                    stream, generator, width), StandardCharsets.UTF_8);
+                    stream, generator, width, depth), StandardCharsets.UTF_8);
                 read = reader.read();
                 schemasWritten = true;
                 continue;
@@ -101,7 +104,7 @@ public final class ComponentsStream extends InputStream {
         while (read == -1) {
             if (!schemasWritten) {
                 channel = Channels.newChannel(new SchemasStream(modelContext, writer, iterator, isForSingleModule,
-                    stream, generator, width));
+                    stream, generator, width, depth));
                 read = channel.read(ByteBuffer.wrap(array, off, len));
                 schemasWritten = true;
                 continue;
index aaed5641ed3cc007b3d3615f6490ebb48fb80a16..74ed61d96a58946f256ef10c38462a04b2159665 100644 (file)
@@ -47,15 +47,15 @@ public final class OpenApiInputStream extends InputStream {
     public OpenApiInputStream(final EffectiveModelContext modelContext, final String title, final String url,
             final List<Map<String, List<String>>> security, final String deviceName, final String urlPrefix,
             final boolean isForSingleModule, final boolean includeDataStore, final Collection<? extends Module> modules,
-            final String basePath, final Integer width) throws IOException {
+            final String basePath, final Integer width, final Integer depth) throws IOException {
         final OpenApiBodyWriter writer = new OpenApiBodyWriter(generator, stream);
         stack.add(new OpenApiVersionStream(new OpenApiVersionEntity(), writer));
         stack.add(new InfoStream(new InfoEntity(title), writer));
         stack.add(new ServersStream(new ServersEntity(List.of(new ServerEntity(url))), writer));
         stack.add(new PathsStream(modelContext, writer, deviceName, urlPrefix, isForSingleModule, includeDataStore,
-            modules.iterator(), basePath, stream, generator, width));
+            modules.iterator(), basePath, stream, generator, width, depth));
         stack.add(new ComponentsStream(modelContext, writer, generator, stream, modules.iterator(), isForSingleModule,
-            width));
+            width, depth));
         stack.add(new SecurityStream(writer, new SecurityEntity(security)));
     }
 
index b12d1d4d2e1d5e5122616c1e3cb9a2f10d1b4ad4..0ddcc4f6d973428c7b647e035296dc68a308c0b2 100644 (file)
@@ -64,8 +64,9 @@ public final class OpenApiServiceImpl implements OpenApiService {
     }
 
     @Override
-    public Response getAllModulesDoc(final UriInfo uriInfo, final @Nullable Integer width) throws IOException {
-        final OpenApiInputStream stream = openApiGeneratorRFC8040.getControllerModulesDoc(uriInfo, width);
+    public Response getAllModulesDoc(final UriInfo uriInfo, final @Nullable Integer width,
+            final @Nullable Integer depth) throws IOException {
+        final OpenApiInputStream stream = openApiGeneratorRFC8040.getControllerModulesDoc(uriInfo, width, depth);
         return Response.ok(stream).build();
     }
 
@@ -74,8 +75,9 @@ public final class OpenApiServiceImpl implements OpenApiService {
      */
     @Override
     public Response getDocByModule(final String module, final String revision, final UriInfo uriInfo,
-            final @Nullable Integer width) throws IOException {
-        final OpenApiInputStream stream = openApiGeneratorRFC8040.getApiDeclaration(module, revision, uriInfo, width);
+            final @Nullable Integer width, final @Nullable Integer depth) throws IOException {
+        final OpenApiInputStream stream = openApiGeneratorRFC8040.getApiDeclaration(module, revision, uriInfo, width,
+            depth);
         return Response.ok(stream).build();
     }
 
@@ -98,18 +100,21 @@ public final class OpenApiServiceImpl implements OpenApiService {
 
     @Override
     public Response getMountDocByModule(final String instanceNum, final String module,
-            final String revision, final UriInfo uriInfo, final @Nullable Integer width) throws IOException {
+            final String revision, final UriInfo uriInfo, final @Nullable Integer width, final @Nullable Integer depth)
+            throws IOException {
         final OpenApiInputStream stream =
-            mountPointOpenApiRFC8040.getMountPointApi(uriInfo, Long.parseLong(instanceNum), module, revision, width);
+            mountPointOpenApiRFC8040.getMountPointApi(uriInfo, Long.parseLong(instanceNum), module, revision, width,
+                depth);
         return Response.ok(stream).build();
     }
 
     @Override
-    public Response getMountDoc(final String instanceNum, final UriInfo uriInfo, final @Nullable Integer width)
-            throws IOException {
+    public Response getMountDoc(final String instanceNum, final UriInfo uriInfo, final @Nullable Integer width,
+            final @Nullable Integer depth) throws IOException {
         final String stringPageNum = uriInfo.getQueryParameters().getFirst(PAGE_NUM);
         final OpenApiInputStream stream =
-            mountPointOpenApiRFC8040.getMountPointApi(uriInfo, Long.parseLong(instanceNum), stringPageNum, width);
+            mountPointOpenApiRFC8040.getMountPointApi(uriInfo, Long.parseLong(instanceNum), stringPageNum, width,
+                depth);
         return Response.ok(stream).build();
     }
 }
index 09154ed562ab5ff6134d1ad681c814375df42bf3..b6b009366bace8880f549421681941cc6edb7834 100644 (file)
@@ -76,6 +76,7 @@ public final class PathsStream extends InputStream {
     private final ByteArrayOutputStream stream;
     private final JsonGenerator generator;
     private final Integer width;
+    private final Integer depth;
 
     private boolean hasRootPostLink;
     private boolean hasAddedDataStore;
@@ -86,7 +87,8 @@ public final class PathsStream extends InputStream {
     public PathsStream(final EffectiveModelContext modelContext, final OpenApiBodyWriter writer,
             final String deviceName, final String urlPrefix, final boolean isForSingleModule,
             final boolean includeDataStore, final Iterator<? extends Module> iterator, final String basePath,
-            final ByteArrayOutputStream stream, final JsonGenerator generator, final Integer width) {
+            final ByteArrayOutputStream stream, final JsonGenerator generator, final Integer width,
+            final Integer depth) {
         this.iterator = iterator;
         this.writer = writer;
         this.modelContext = modelContext;
@@ -98,6 +100,7 @@ public final class PathsStream extends InputStream {
         this.stream = stream;
         this.generator = generator;
         this.width = requireNonNullElse(width, 0);
+        this.depth = requireNonNullElse(depth, 0);
         hasRootPostLink = false;
         hasAddedDataStore = false;
     }
@@ -206,7 +209,7 @@ public final class PathsStream extends InputStream {
                 final var localName = moduleName + ":" + nodeLocalName;
                 final var path = urlPrefix + "/" + processPath(node, pathParams, localName);
                 processChildNode(node, pathParams, moduleName, result, path, nodeLocalName, isConfig, modelContext,
-                    deviceName, basePath, null, List.of(), width);
+                    deviceName, basePath, null, List.of(), width, depth, 0);
             }
         }
         return result;
@@ -215,10 +218,14 @@ public final class PathsStream extends InputStream {
     private static void processChildNode(final DataSchemaNode node, final List<ParameterEntity> pathParams,
             final String moduleName, final Deque<PathEntity> result, final String path, final String refPath,
             final boolean isConfig, final EffectiveModelContext modelContext, final String deviceName,
-            final String basePath, final SchemaNode parentNode, final List<SchemaNode> parentNodes, final int width) {
+            final String basePath, final SchemaNode parentNode, final List<SchemaNode> parentNodes, final int width,
+            final int depth, final int nodeDepth) {
+        if (depth > 0 && nodeDepth + 1 > depth) {
+            return;
+        }
         final var resourcePath = basePath + DATA + path;
         final var fullName = resolveFullNameFromNode(node.getQName(), modelContext);
-        final var firstChild = getListOrContainerChildNode((DataNodeContainer) node, width);
+        final var firstChild = getListOrContainerChildNode((DataNodeContainer) node, width, depth, nodeDepth);
         if (firstChild != null && node instanceof ContainerSchemaNode) {
             result.add(processTopPathEntity(node, resourcePath, pathParams, moduleName, refPath, isConfig,
                 fullName, firstChild, deviceName));
@@ -251,13 +258,16 @@ public final class PathsStream extends InputStream {
                 final var resourceDataPath = path + "/" + processPath(childNode, childParams, localName);
                 final var newConfig = isConfig && childNode.isConfiguration();
                 processChildNode(childNode, childParams, moduleName, result, resourceDataPath, newRefPath, newConfig,
-                    modelContext, deviceName, basePath, node, listOfParents, width);
+                    modelContext, deviceName, basePath, node, listOfParents, width, depth, nodeDepth + 1);
             }
         }
     }
 
     private static <T extends DataNodeContainer> DataSchemaNode getListOrContainerChildNode(final T node,
-            final int width) {
+            final int width, final int depth, final int nodeDepth) {
+        if (depth > 0 && nodeDepth + 2 > depth) {
+            return null;
+        }
         // Note: Since post using first container/list among children to prevent missing schema for ref error it
         // should be also limited by width here even if it means not generating POST at all
         final var childNodes = widthList(node, width);
index 60f49e6a59aa84f36703d43a27b435bb76b32e5b..a638e1e9c867602ef9bfcdb2d6b08caf755875a8 100644 (file)
@@ -55,6 +55,7 @@ public final class SchemasStream extends InputStream {
     private final ByteArrayOutputStream stream;
     private final JsonGenerator generator;
     private final Integer width;
+    private final Integer depth;
 
     private Reader reader;
     private ReadableByteChannel channel;
@@ -62,7 +63,8 @@ public final class SchemasStream extends InputStream {
 
     public SchemasStream(final EffectiveModelContext modelContext, final OpenApiBodyWriter writer,
             final Iterator<? extends Module> iterator, final boolean isForSingleModule,
-            final ByteArrayOutputStream stream, final JsonGenerator generator, final Integer width) {
+            final ByteArrayOutputStream stream, final JsonGenerator generator, final Integer width,
+            final Integer depth) {
         this.iterator = iterator;
         this.modelContext = modelContext;
         this.writer = writer;
@@ -70,6 +72,7 @@ public final class SchemasStream extends InputStream {
         this.stream = stream;
         this.generator = generator;
         this.width = requireNonNullElse(width, 0);
+        this.depth = requireNonNullElse(depth, 0);
     }
 
     @Override
@@ -89,7 +92,7 @@ public final class SchemasStream extends InputStream {
             if (iterator.hasNext()) {
                 reader = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(
                     writeNextEntity(new SchemasEntity(toComponents(iterator.next(), modelContext, isForSingleModule,
-                            width)))),
+                            width, depth)))),
                         StandardCharsets.UTF_8));
                 read = reader.read();
                 continue;
@@ -120,7 +123,7 @@ public final class SchemasStream extends InputStream {
         while (read == -1) {
             if (iterator.hasNext()) {
                 channel = Channels.newChannel(new ByteArrayInputStream(writeNextEntity(
-                    new SchemasEntity(toComponents(iterator.next(), modelContext, isForSingleModule, width)))));
+                    new SchemasEntity(toComponents(iterator.next(), modelContext, isForSingleModule, width, depth)))));
                 read = channel.read(ByteBuffer.wrap(array, off, len));
                 continue;
             }
@@ -140,7 +143,7 @@ public final class SchemasStream extends InputStream {
     }
 
     private static Deque<SchemaEntity> toComponents(final Module module, final EffectiveModelContext modelContext,
-            final boolean isForSingleModule, final int width) {
+            final boolean isForSingleModule, final int width, final int depth) {
         final var result = new ArrayDeque<SchemaEntity>();
         final var definitionNames = new DefinitionNames();
         final var stack = SchemaInferenceStack.of(modelContext);
@@ -155,14 +158,14 @@ public final class SchemasStream extends InputStream {
             final var rpcInput = rpc.getInput();
             if (!rpcInput.getChildNodes().isEmpty()) {
                 final var input = new RpcSchemaEntity(rpcInput, moduleName + "_" + rpcName + INPUT_SUFFIX, null,
-                    OBJECT_TYPE, stack, moduleName, false, definitionNames, width);
+                    OBJECT_TYPE, stack, moduleName, false, definitionNames, width, depth, 0);
                 result.add(input);
                 stack.enterSchemaTree(rpcInput.getQName());
                 for (final var child : rpcInput.getChildNodes()) {
                     if (!children.contains(child)) {
                         children.add(child);
                         processDataAndActionNodes(child, moduleName, stack, definitionNames, result, moduleName,
-                            false, width);
+                            false, width, depth, 0);
                     }
                 }
                 stack.exit();
@@ -170,14 +173,14 @@ public final class SchemasStream extends InputStream {
             final var rpcOutput = rpc.getOutput();
             if (!rpcOutput.getChildNodes().isEmpty()) {
                 final var output = new RpcSchemaEntity(rpcOutput, moduleName + "_" + rpcName + OUTPUT_SUFFIX, null,
-                    OBJECT_TYPE, stack, moduleName, false, definitionNames, width);
+                    OBJECT_TYPE, stack, moduleName, false, definitionNames, width, depth, 0);
                 result.add(output);
                 stack.enterSchemaTree(rpcOutput.getQName());
                 for (final var child : rpcOutput.getChildNodes()) {
                     if (!children.contains(child)) {
                         children.add(child);
                         processDataAndActionNodes(child, moduleName, stack, definitionNames, result, moduleName,
-                            false, width);
+                            false, width, depth, 0);
                     }
                 }
                 stack.exit();
@@ -188,7 +191,7 @@ public final class SchemasStream extends InputStream {
         final var childNodes = widthList(module, width);
         for (final var childNode : childNodes) {
             processDataAndActionNodes(childNode, moduleName, stack, definitionNames, result, moduleName,
-                true, width);
+                true, width, depth, 0);
         }
         return result;
     }
@@ -196,7 +199,10 @@ public final class SchemasStream extends InputStream {
     private static void processDataAndActionNodes(final DataSchemaNode node, final String title,
             final SchemaInferenceStack stack, final DefinitionNames definitionNames,
             final ArrayDeque<SchemaEntity> result, final String parentName, final boolean isParentConfig,
-            final int width) {
+            final int width, final int depth, final int nodeDepth) {
+        if (depth > 0 && nodeDepth + 1 > depth) {
+            return;
+        }
         if (node instanceof ContainerSchemaNode || node instanceof ListSchemaNode) {
             final var newTitle = title + "_" + node.getQName().getLocalName();
             if (definitionNames.isListedNode(node, newTitle)) {
@@ -205,15 +211,15 @@ public final class SchemasStream extends InputStream {
             }
             final var discriminator = definitionNames.pickDiscriminator(node, List.of(newTitle));
             final var child = new NodeSchemaEntity(node, newTitle, discriminator, OBJECT_TYPE, stack, parentName,
-                isParentConfig, definitionNames, width);
+                isParentConfig, definitionNames, width, depth, nodeDepth + 1);
             final var isConfig = node.isConfiguration() && isParentConfig;
             result.add(child);
             stack.enterSchemaTree(node.getQName());
-            processActions(node, newTitle, stack, definitionNames, result, parentName, width);
+            processActions(node, newTitle, stack, definitionNames, result, parentName, width, depth, 0);
             final var childNodes = widthList((DataNodeContainer) node, width);
             for (final var childNode : childNodes) {
                 processDataAndActionNodes(childNode, newTitle, stack, definitionNames, result, newTitle, isConfig,
-                    width);
+                    width, depth, nodeDepth + 1);
             }
             stack.exit();
         } else if (node instanceof ChoiceSchemaNode choiceNode && !choiceNode.getCases().isEmpty()) {
@@ -226,7 +232,7 @@ public final class SchemasStream extends InputStream {
             final var childNodes = widthList(caseNode, width);
             for (final var childNode : childNodes) {
                 processDataAndActionNodes(childNode, title, stack, definitionNames, result, parentName,
-                    isParentConfig, width);
+                    isParentConfig, width, depth, nodeDepth + 1);
             }
             stack.exit(); // Exit the CaseSchemaNode context
             stack.exit(); // Exit the ChoiceSchemaNode context
@@ -235,20 +241,20 @@ public final class SchemasStream extends InputStream {
 
     private static void processActions(final DataSchemaNode node, final String title, final SchemaInferenceStack stack,
             final DefinitionNames definitionNames, final ArrayDeque<SchemaEntity> result, final String parentName,
-            final int width) {
+            final int width, final int depth, final int nodeDepth) {
         for (final var actionDef : ((ActionNodeContainer) node).getActions()) {
             stack.enterSchemaTree(actionDef.getQName());
             final var actionName = actionDef.getQName().getLocalName();
             final var actionInput = actionDef.getInput();
             if (!actionInput.getChildNodes().isEmpty()) {
                 final var input = new RpcSchemaEntity(actionInput, title + "_" + actionName + INPUT_SUFFIX, null,
-                    OBJECT_TYPE, stack, parentName, false, definitionNames, width);
+                    OBJECT_TYPE, stack, parentName, false, definitionNames, width, depth, nodeDepth + 1);
                 result.add(input);
             }
             final var actionOutput = actionDef.getOutput();
             if (!actionOutput.getChildNodes().isEmpty()) {
                 final var output = new RpcSchemaEntity(actionOutput, title + "_" + actionName + OUTPUT_SUFFIX, null,
-                    OBJECT_TYPE, stack, parentName, false, definitionNames, width);
+                    OBJECT_TYPE, stack, parentName, false, definitionNames, width, depth, nodeDepth + 1);
                 result.add(output);
             }
             stack.exit();
index ee809daa0985952d1e9b58a8226e9b0d3180c1d6..dc001c81205f8d7b5238ce43551578eaa01b2762 100644 (file)
@@ -28,13 +28,18 @@ public final class NodeSchemaEntity extends SchemaEntity {
     public NodeSchemaEntity(final @NonNull SchemaNode value, final @NonNull String title,
             final @Nullable String discriminator, final @NonNull String type,
             final @NonNull SchemaInferenceStack context, final @NonNull String parentName, final boolean isParentConfig,
-            final @NonNull DefinitionNames definitionNames, final @NonNull Integer width) {
-        super(value, title, discriminator, type, context, parentName, isParentConfig, definitionNames, width);
+            final @NonNull DefinitionNames definitionNames, final @NonNull Integer width,
+            final @NonNull Integer depth, final @NonNull Integer nodeDepth) {
+        super(value, title, discriminator, type, context, parentName, isParentConfig, definitionNames, width, depth,
+            nodeDepth);
     }
 
     @Override
     void generateProperties(final @NonNull JsonGenerator generator, final @NonNull List<String> required)
             throws IOException {
+        if (depth > 0 && nodeDepth + 1 > depth) {
+            return;
+        }
         final var childNodes = new HashMap<String, DataSchemaNode>();
         final var dataSchemaNodes = widthList((DataNodeContainer) value(), width);
         for (final var childNode : dataSchemaNodes) {
@@ -45,7 +50,7 @@ public final class NodeSchemaEntity extends SchemaEntity {
         for (final var childNode : childNodes.values()) {
             if (shouldBeAddedAsProperty(childNode, isValueConfig)) {
                 new PropertyEntity(childNode, generator, stack(), required, parentName() + "_"
-                    + value().getQName().getLocalName(), isValueConfig, definitionNames(), width);
+                    + value().getQName().getLocalName(), isValueConfig, definitionNames(), width, depth, nodeDepth);
             }
         }
     }
index bb13d3b903844ac83a135b5804f113097660507f..ff6554b47f2316f758626a420ea9153038f3b10d 100644 (file)
@@ -100,35 +100,42 @@ public class PropertyEntity {
     private final @NonNull String parentName;
     private final @NonNull DefinitionNames definitionNames;
     private final @NonNull Integer width;
+    private final @NonNull Integer depth;
 
     public PropertyEntity(final @NonNull DataSchemaNode node, final @NonNull JsonGenerator generator,
             final @NonNull SchemaInferenceStack stack, final @NonNull List<String> required,
             final @NonNull String parentName, final boolean isParentConfig,
-            final @NonNull DefinitionNames definitionNames, final @NonNull Integer width) throws IOException {
+            final @NonNull DefinitionNames definitionNames, final @NonNull Integer width,
+            final @NonNull Integer depth, final int nodeDepth) throws IOException {
         this.node = requireNonNull(node);
         this.generator = requireNonNull(generator);
         this.required = requireNonNull(required);
         this.parentName = requireNonNull(parentName);
         this.definitionNames = requireNonNull(definitionNames);
         this.width = requireNonNull(width);
-        generate(stack, isParentConfig);
+        this.depth = requireNonNull(depth);
+        generate(stack, isParentConfig, nodeDepth);
     }
 
-    private void generate(final SchemaInferenceStack stack, final boolean isParentConfig) throws IOException {
+    private void generate(final SchemaInferenceStack stack, final boolean isParentConfig, final int nodeDepth)
+            throws IOException {
         if (node instanceof ChoiceSchemaNode choice) {
             stack.enterSchemaTree(node.getQName());
             final var isConfig = isParentConfig && node.isConfiguration();
-            processChoiceNodeRecursively(isConfig, stack, choice);
+            processChoiceNodeRecursively(isConfig, stack, choice, nodeDepth);
             stack.exit();
         } else {
             generator.writeObjectFieldStart(node.getQName().getLocalName());
-            processChildNode(node, stack, isParentConfig);
+            processChildNode(node, stack, isParentConfig, nodeDepth);
             generator.writeEndObject();
         }
     }
 
     private void processChoiceNodeRecursively(final boolean isConfig, final SchemaInferenceStack stack,
-            final ChoiceSchemaNode choice) throws IOException {
+            final ChoiceSchemaNode choice, final int nodeDepth) throws IOException {
+        if (depth > 0 && nodeDepth + 1 > depth) {
+            return;
+        }
         if (!choice.getCases().isEmpty()) {
             final var caseSchemaNode = choice.getDefaultCase().orElse(
                 choice.getCases().stream().findFirst().orElseThrow());
@@ -138,11 +145,11 @@ public class PropertyEntity {
                 if (childNode instanceof ChoiceSchemaNode childChoice) {
                     final var isChildConfig = isConfig && childNode.isConfiguration();
                     stack.enterSchemaTree(childNode.getQName());
-                    processChoiceNodeRecursively(isChildConfig, stack, childChoice);
+                    processChoiceNodeRecursively(isChildConfig, stack, childChoice, nodeDepth + 1);
                     stack.exit();
                 } else if (!isConfig || childNode.isConfiguration()) {
                     generator.writeObjectFieldStart(childNode.getQName().getLocalName());
-                    processChildNode(childNode, stack, isConfig);
+                    processChildNode(childNode, stack, isConfig, nodeDepth + 1);
                     generator.writeEndObject();
                 }
             }
@@ -151,13 +158,13 @@ public class PropertyEntity {
     }
 
     private void processChildNode(final DataSchemaNode schemaNode, final SchemaInferenceStack stack,
-            final boolean isParentConfig) throws IOException {
+            final boolean isParentConfig, final int nodeDepth) throws IOException {
         final var parentNamespace = stack.toSchemaNodeIdentifier().lastNodeIdentifier().getNamespace();
         stack.enterSchemaTree(schemaNode.getQName());
         final var name = schemaNode.getQName().getLocalName();
         final var shouldBeAddedAsChild = !isParentConfig || schemaNode.isConfiguration();
         if (schemaNode instanceof ListSchemaNode || schemaNode instanceof ContainerSchemaNode) {
-            processDataNodeContainer(schemaNode, stack);
+            processDataNodeContainer(schemaNode, stack, nodeDepth + 1);
             if (shouldBeAddedAsChild && isSchemaNodeMandatory(schemaNode)) {
                 required.add(name);
             }
@@ -178,8 +185,8 @@ public class PropertyEntity {
         stack.exit();
     }
 
-    private void processDataNodeContainer(final DataSchemaNode dataNode, final SchemaInferenceStack stack)
-            throws IOException {
+    private void processDataNodeContainer(final DataSchemaNode dataNode, final SchemaInferenceStack stack,
+            final int nodeDepth) throws IOException {
         final var localName = dataNode.getQName().getLocalName();
         final var nodeName = parentName + "_" + localName;
 
@@ -190,13 +197,16 @@ public class PropertyEntity {
             discriminator = definitionNames.getDiscriminator(dataNode);
         }
 
-        processRef(nodeName, dataNode, discriminator, stack);
+        processRef(nodeName, dataNode, discriminator, stack, nodeDepth);
     }
 
     private void processRef(final String name, final SchemaNode schemaNode, String discriminator,
-            final SchemaInferenceStack stack) throws IOException {
+            final SchemaInferenceStack stack, final int nodeDepth) throws IOException {
         final var ref = COMPONENTS_PREFIX + name + discriminator;
         if (schemaNode instanceof ListSchemaNode listNode) {
+            if (depth > 0 && nodeDepth + 1 > depth) {
+                return;
+            }
             generator.writeStringField(TYPE, ARRAY_TYPE);
             generator.writeObjectFieldStart(ITEMS);
             generator.writeStringField("$ref", ref);
index cdbbad1eaf7614eac6d3c5115eb943d445475197..64c9d0317ff1f500b116d2dc3d428a692934ae83 100644 (file)
@@ -24,17 +24,22 @@ public final class RpcSchemaEntity extends SchemaEntity {
     public RpcSchemaEntity(final @NonNull SchemaNode value, final @NonNull String title,
             final @Nullable String discriminator, final @NonNull String type,
             final @NonNull SchemaInferenceStack context, final @NonNull String parentName, final boolean isParentConfig,
-            final @NonNull DefinitionNames definitionNames, final @NonNull Integer width) {
-        super(value, title, discriminator, type, context, parentName, isParentConfig, definitionNames, width);
+            final @NonNull DefinitionNames definitionNames, final @NonNull Integer width,
+            final @NonNull Integer depth, final @NonNull int nodeDepth) {
+        super(value, title, discriminator, type, context, parentName, isParentConfig, definitionNames, width, depth,
+            nodeDepth);
     }
 
     @Override
     void generateProperties(final @NonNull JsonGenerator generator, final @NonNull List<String> required)
             throws IOException {
+        if (depth > 0 && nodeDepth + 1 > depth) {
+            return;
+        }
         final var childNodes = widthList((ContainerLike) value(), width);
         for (final var childNode : childNodes) {
             new PropertyEntity(childNode, generator, stack(), required, parentName(), isParentConfig(),
-                definitionNames(), width);
+                definitionNames(), width, depth, nodeDepth + 1);
         }
     }
 }
index 51df1c072b7dea5dd40de4823c599a5ba0c88dca..75ae73b74857d57411673077b9d28f596d61aa1b 100644 (file)
@@ -33,11 +33,14 @@ public abstract sealed class SchemaEntity extends OpenApiEntity permits NodeSche
     private final @NonNull String parentName;
     private final @NonNull DefinitionNames definitionNames;
     protected final @NonNull Integer width;
+    protected final @NonNull Integer depth;
+    protected final int nodeDepth;
 
     public SchemaEntity(final @NonNull SchemaNode value, final @NonNull String title,
             final @Nullable String discriminator, final @NonNull String type,
             final @NonNull SchemaInferenceStack context, final @NonNull String parentName, final boolean isParentConfig,
-            final @NonNull DefinitionNames definitionNames, final @NonNull Integer width) {
+            final @NonNull DefinitionNames definitionNames, final @NonNull Integer width,
+            final @NonNull Integer depth, final @NonNull int nodeDepth) {
         this.value = requireNonNull(value);
         this.title = requireNonNull(title);
         this.type = requireNonNull(type);
@@ -47,6 +50,8 @@ public abstract sealed class SchemaEntity extends OpenApiEntity permits NodeSche
         this.definitionNames = requireNonNull(definitionNames);
         this.discriminator = requireNonNullElse(discriminator, "");
         this.width = requireNonNullElse(width, 0);
+        this.depth = requireNonNullElse(depth, 0);
+        this.nodeDepth = nodeDepth;
     }
 
     @Override
index 3d2e68ea0f9884d71885f25df342f8dad3922312..f44e510f1f8e270bb81300bf4285ddde20f8d2f7 100644 (file)
@@ -130,7 +130,7 @@ public class MountPointOpenApi implements DOMMountPointListener, AutoCloseable {
     }
 
     public OpenApiInputStream getMountPointApi(final UriInfo uriInfo, final Long id, final String module,
-            final String revision, final Integer width) throws IOException  {
+            final String revision, final Integer width, final Integer depth) throws IOException  {
         final YangInstanceIdentifier iid = longIdToInstanceId.get(id);
         final EffectiveModelContext modelContext = getModelContext(iid);
         final String urlPrefix = getYangMountUrl(iid);
@@ -141,14 +141,14 @@ public class MountPointOpenApi implements DOMMountPointListener, AutoCloseable {
         }
 
         if (DATASTORES_LABEL.equals(module) && DATASTORES_REVISION.equals(revision)) {
-            return generateDataStoreOpenApi(modelContext, uriInfo, urlPrefix, deviceName, width);
+            return generateDataStoreOpenApi(modelContext, uriInfo, urlPrefix, deviceName, width, depth);
         }
         return openApiGenerator.getApiDeclaration(module, revision, uriInfo, modelContext, urlPrefix, deviceName,
-            width);
+            width, depth);
     }
 
     public OpenApiInputStream getMountPointApi(final UriInfo uriInfo, final Long id, final @Nullable String strPageNum,
-            final Integer width) throws IOException {
+            final Integer width, final Integer depth) throws IOException {
         final var iid = longIdToInstanceId.get(id);
         final var context = getModelContext(iid);
         final var urlPrefix = getYangMountUrl(iid);
@@ -178,7 +178,7 @@ public class MountPointOpenApi implements DOMMountPointListener, AutoCloseable {
         final var url = schema + "://" + host + "/";
         final var basePath = openApiGenerator.getBasePath();
         return new OpenApiInputStream(context, title, url, SECURITY, deviceName, urlPrefix, false, includeDataStore,
-            modules, basePath, width);
+            modules, basePath, width, depth);
     }
 
     private static String extractDeviceName(final YangInstanceIdentifier iid) {
@@ -187,15 +187,15 @@ public class MountPointOpenApi implements DOMMountPointListener, AutoCloseable {
     }
 
     private OpenApiInputStream generateDataStoreOpenApi(final EffectiveModelContext modelContext,
-            final UriInfo uriInfo, final String urlPrefix, final String deviceName, final Integer width)
-            throws IOException {
+            final UriInfo uriInfo, final String urlPrefix, final String deviceName, final Integer width,
+            final Integer depth) throws IOException {
         final var schema = openApiGenerator.createSchemaFromUriInfo(uriInfo);
         final var host = openApiGenerator.createHostFromUriInfo(uriInfo);
         final var url = schema + "://" + host + "/";
         final var basePath = openApiGenerator.getBasePath();
         final var modules = BaseYangOpenApiGenerator.getModulesWithoutDuplications(modelContext);
         return new OpenApiInputStream(modelContext, urlPrefix, url, SECURITY, deviceName, urlPrefix, true, false,
-            modules, basePath, width);
+            modules, basePath, width, depth);
     }
 
     @Override
index aa6c1d883e33889edd2066fa530e39243b3dc5a2..f78c831315ff94217c293144eac5ef5abf64ecfe 100644 (file)
@@ -65,40 +65,41 @@ abstract class AbstractDocumentTest {
             AbstractDocumentTest.class.getClassLoader().getResourceAsStream(jsonPath)));
     }
 
-    protected static String getAllModulesDoc(final Integer width) throws Exception {
+    protected static String getAllModulesDoc(final Integer width, final Integer depth) throws Exception {
         final var getAllController = createMockUriInfo(URI + "single");
-        final var controllerDocAll = openApiService.getAllModulesDoc(getAllController, width).getEntity();
+        final var controllerDocAll = openApiService.getAllModulesDoc(getAllController, width, depth).getEntity();
 
         return new String(((OpenApiInputStream) controllerDocAll).readAllBytes(),
             StandardCharsets.UTF_8);
     }
 
-    protected static String getDocByModule(final String moduleName, final String revision, final Integer width)
-            throws Exception {
+    protected static String getDocByModule(final String moduleName, final String revision, final Integer width,
+            final Integer depth) throws Exception {
         var uri = URI + moduleName;
         if (revision != null) {
             uri = uri + "(" + revision + ")";
         }
         final var getModuleController = createMockUriInfo(uri);
-        final var controllerDocModule = openApiService.getDocByModule(moduleName, revision, getModuleController, width);
+        final var controllerDocModule = openApiService.getDocByModule(moduleName, revision, getModuleController, width,
+            depth);
 
         return new String(((OpenApiInputStream) controllerDocModule.getEntity()).readAllBytes(),
             StandardCharsets.UTF_8);
     }
 
-    protected static String getMountDoc(final Integer width) throws Exception {
+    protected static String getMountDoc(final Integer width, final Integer depth) throws Exception {
         final var getAllDevice = createMockUriInfo(URI + "mounts/1");
         when(getAllDevice.getQueryParameters()).thenReturn(ImmutableMultivaluedMap.empty());
-        final var deviceDocAll = openApiService.getMountDoc("1", getAllDevice, width);
+        final var deviceDocAll = openApiService.getMountDoc("1", getAllDevice, width, depth);
 
         return new String(((OpenApiInputStream) deviceDocAll.getEntity()).readAllBytes(),
             StandardCharsets.UTF_8);
     }
 
-    protected static String getMountDocByModule(final String moduleName, final String revision, final Integer width)
-            throws Exception {
+    protected static String getMountDocByModule(final String moduleName, final String revision, final Integer width,
+            final Integer depth) throws Exception {
         final var getDevice = createMockUriInfo(URI + "mounts/1/" + moduleName);
-        final var deviceDoc = openApiService.getMountDocByModule("1", moduleName, revision, getDevice, width);
+        final var deviceDoc = openApiService.getMountDocByModule("1", moduleName, revision, getDevice, width, depth);
 
         return new String(((OpenApiInputStream) deviceDoc.getEntity()).readAllBytes(),
             StandardCharsets.UTF_8);
index 4e9ed35d2ad0b2ea7b9e17ba5aa59b544e99c72f..23d2f933359ffad62a9e6902412e0e28042e3a99 100644 (file)
@@ -34,7 +34,7 @@ class BugsDocumentTest extends AbstractDocumentTest {
     void getDocByModuleTest(final String moduleName, final String revision, final String jsonPath)
             throws Exception {
         final var expectedJson = getExpectedDoc("bugs-document/" + jsonPath);
-        final var moduleDoc = getDocByModule(moduleName, revision, 0);
+        final var moduleDoc = getDocByModule(moduleName, revision, 0, 0);
         JSONAssert.assertEquals(expectedJson, moduleDoc, IGNORE_ORDER);
     }
 
index 2b22aeac2174b7bc4ccd9b7a8fde94d22ce3d529..aeefc881f8dd2b9f169a61b7d49433b2cc86ab0a 100644 (file)
@@ -36,7 +36,7 @@ class OperationalDocumentTest extends AbstractDocumentTest {
     @Test
     void getAllModulesDocTest() throws Exception {
         final var expectedJson = getExpectedDoc("operational-document/controller-all.json");
-        final var allModulesDoc = getAllModulesDoc(0);
+        final var allModulesDoc = getAllModulesDoc(0, 0);
         JSONAssert.assertEquals(expectedJson, allModulesDoc, IGNORE_ORDER);
     }
 
@@ -48,7 +48,7 @@ class OperationalDocumentTest extends AbstractDocumentTest {
     void getDocByModuleTest(final String moduleName, final String revision, final String jsonPath)
             throws Exception {
         final var expectedJson = getExpectedDoc("operational-document/" + jsonPath);
-        final var moduleDoc = getDocByModule(moduleName, revision, 0);
+        final var moduleDoc = getDocByModule(moduleName, revision, 0, 0);
         JSONAssert.assertEquals(expectedJson, moduleDoc, IGNORE_ORDER);
     }
 
@@ -66,7 +66,7 @@ class OperationalDocumentTest extends AbstractDocumentTest {
     @Test
     void getMountDocTest() throws Exception {
         final var expectedJson = getExpectedDoc("operational-document/device-all.json");
-        final var allModulesDoc = getMountDoc(0);
+        final var allModulesDoc = getMountDoc(0, 0);
         JSONAssert.assertEquals(expectedJson, allModulesDoc, IGNORE_ORDER);
     }
 
@@ -78,7 +78,7 @@ class OperationalDocumentTest extends AbstractDocumentTest {
     void getMountDocByModuleTest(final String moduleName, final String revision, final String jsonPath)
             throws Exception {
         final var expectedJson = getExpectedDoc("operational-document/" + jsonPath);
-        final var moduleDoc = getMountDocByModule(moduleName, revision, 0);
+        final var moduleDoc = getMountDocByModule(moduleName, revision, 0, 0);
         JSONAssert.assertEquals(expectedJson, moduleDoc, IGNORE_ORDER);
     }
 
index 70ca13ca353b493f0048a535537567573cf80b44..6f012fb24984ddd640dfa1cc58a8bf535a4244de 100644 (file)
@@ -37,7 +37,7 @@ class ToasterDocumentTest extends AbstractDocumentTest {
      */
     @Test
     void getAllModulesDocTest() throws Exception {
-        final var jsonControllerDoc = getAllModulesDoc(0);
+        final var jsonControllerDoc = getAllModulesDoc(0, 0);
         final var expectedJson = getExpectedDoc("toaster-document/controller-all.json");
         JSONAssert.assertEquals(expectedJson, jsonControllerDoc, IGNORE_ORDER);
     }
@@ -49,7 +49,7 @@ class ToasterDocumentTest extends AbstractDocumentTest {
     @MethodSource
     void getDocByModuleTest(final String revision, final String jsonPath) throws Exception {
         final var expectedJson = getExpectedDoc("toaster-document/" + jsonPath);
-        final var moduleDoc = getDocByModule(TOASTER, revision, 0);
+        final var moduleDoc = getDocByModule(TOASTER, revision, 0, 0);
         JSONAssert.assertEquals(expectedJson, moduleDoc, IGNORE_ORDER);
     }
 
@@ -66,7 +66,7 @@ class ToasterDocumentTest extends AbstractDocumentTest {
      */
     @Test
     void getMountDocTest() throws Exception {
-        final var jsonDeviceDoc = getMountDoc(0);
+        final var jsonDeviceDoc = getMountDoc(0, 0);
         final var expectedJson = getExpectedDoc("toaster-document/device-all.json");
         JSONAssert.assertEquals(expectedJson, jsonDeviceDoc, IGNORE_ORDER);
     }
@@ -78,7 +78,7 @@ class ToasterDocumentTest extends AbstractDocumentTest {
     @MethodSource
     void getMountDocByModuleTest(final String revision, final String jsonPath) throws Exception {
         final var expectedJson = getExpectedDoc("toaster-document/" + jsonPath);
-        final var moduleDoc = getMountDocByModule(TOASTER, revision, 0);
+        final var moduleDoc = getMountDocByModule(TOASTER, revision, 0, 0);
         JSONAssert.assertEquals(expectedJson, moduleDoc, IGNORE_ORDER);
     }
 
index 6e6aa60f100cd455ef126a86bc43e5f1e21c4e75..8d2a4042000ebd38949f5d2665bb9b57f965414f 100644 (file)
@@ -111,7 +111,7 @@ class YangDocumentTest extends AbstractDocumentTest {
     @Test
     void getAllModulesDocTest() throws Exception {
         final var expectedJson = getExpectedDoc("yang-document/controller-all.json");
-        final var allModulesDoc = getAllModulesDoc(0);
+        final var allModulesDoc = getAllModulesDoc(0, 0);
         JSONAssert.assertEquals(expectedJson, allModulesDoc, IGNORE_ORDER);
     }
 
@@ -121,7 +121,27 @@ class YangDocumentTest extends AbstractDocumentTest {
     @Test
     public void getAllModulesDocWidthOneTest() throws Exception {
         final var expectedJson = getExpectedDoc("yang-document/controller-all-width-one.json");
-        final var allModulesDoc = getAllModulesDoc(1);
+        final var allModulesDoc = getAllModulesDoc(1, 0);
+        JSONAssert.assertEquals(expectedJson, allModulesDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/single?depth=1' endpoint.
+     */
+    @Test
+    public void getAllModulesDocDepthOneTest() throws Exception {
+        final var expectedJson = getExpectedDoc("yang-document/controller-all-depth-one.json");
+        final var allModulesDoc = getAllModulesDoc(0, 1);
+        JSONAssert.assertEquals(expectedJson, allModulesDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/single?width=1&depth=1' endpoint.
+     */
+    @Test
+    public void getAllModulesDocWidthAndDepthOneTest() throws Exception {
+        final var expectedJson = getExpectedDoc("yang-document/controller-all-width-and-depth-one.json");
+        final var allModulesDoc = getAllModulesDoc(1, 1);
         JSONAssert.assertEquals(expectedJson, allModulesDoc, IGNORE_ORDER);
     }
 
@@ -133,7 +153,7 @@ class YangDocumentTest extends AbstractDocumentTest {
     void getDocByModuleTest(final String moduleName, final String revision, final String jsonPath)
             throws Exception {
         final var expectedJson = getExpectedDoc("yang-document/" + jsonPath);
-        final var moduleDoc = getDocByModule(moduleName, revision, 0);
+        final var moduleDoc = getDocByModule(moduleName, revision, 0, 0);
         JSONAssert.assertEquals(expectedJson, moduleDoc, IGNORE_ORDER);
     }
 
@@ -166,7 +186,7 @@ class YangDocumentTest extends AbstractDocumentTest {
     @Test
     void getMountDocTest() throws Exception {
         final var expectedJson = getExpectedDoc("yang-document/device-all.json");
-        final var allModulesDoc = getMountDoc(0);
+        final var allModulesDoc = getMountDoc(0, 0);
         JSONAssert.assertEquals(expectedJson, allModulesDoc, IGNORE_ORDER);
     }
 
@@ -176,7 +196,27 @@ class YangDocumentTest extends AbstractDocumentTest {
     @Test
     public void getMountDocWidthOneTest() throws Exception {
         final var expectedJson = getExpectedDoc("yang-document/device-all-width-one.json");
-        final var allModulesDoc = getMountDoc(1);
+        final var allModulesDoc = getMountDoc(1, 0);
+        JSONAssert.assertEquals(expectedJson, allModulesDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1?depth=1' endpoint.
+     */
+    @Test
+    public void getMountDocDepthOneTest() throws Exception {
+        final var expectedJson = getExpectedDoc("yang-document/device-all-depth-one.json");
+        final var allModulesDoc = getMountDoc(0, 1);
+        JSONAssert.assertEquals(expectedJson, allModulesDoc, IGNORE_ORDER);
+    }
+
+    /**
+     * Tests the swagger document that is result of the call to the '/mounts/1?width=1&depth=1' endpoint.
+     */
+    @Test
+    public void getMountDocWidthAndDepthOneTest() throws Exception {
+        final var expectedJson = getExpectedDoc("yang-document/device-all-width-and-depth-one.json");
+        final var allModulesDoc = getMountDoc(1, 1);
         JSONAssert.assertEquals(expectedJson, allModulesDoc, IGNORE_ORDER);
     }
 
@@ -188,7 +228,7 @@ class YangDocumentTest extends AbstractDocumentTest {
     void getMountDocByModuleTest(final String moduleName, final String revision, final String jsonPath)
             throws Exception {
         final var expectedJson = getExpectedDoc("yang-document/" + jsonPath);
-        final var moduleDoc = getMountDocByModule(moduleName, revision, 0);
+        final var moduleDoc = getMountDocByModule(moduleName, revision, 0, 0);
         JSONAssert.assertEquals(expectedJson, moduleDoc, IGNORE_ORDER);
     }
 
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-all-depth-one.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-all-depth-one.json
new file mode 100644 (file)
index 0000000..efe0cd7
--- /dev/null
@@ -0,0 +1,5068 @@
+{
+  "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": {
+      "post": {
+        "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",
+        "requestBody": {
+          "description": "list",
+          "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"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "tags": [
+          "Controller root"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "Queries the config (startup) datastore on the mounted hosted.",
+        "responses": {
+          "200": {
+            "description": "OK"
+          }
+        },
+        "summary": "GET - Controller - datastore - data",
+        "tags": [
+          "Controller root"
+        ]
+      }
+    },
+    "/rests/operations": {
+      "get": {
+        "description": "Queries the available operations (RPC calls) on the mounted hosted.",
+        "responses": {
+          "200": {
+            "description": "OK"
+          }
+        },
+        "summary": "GET - Controller - datastore - operations",
+        "tags": [
+          "Controller root"
+        ]
+      }
+    },
+    "/rests/data/action-types:list={name}": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - Controller - list",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - Controller - list",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - action-types - list",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - action-types - list",
+        "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"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "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"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/action-types:list={name}/list-action": {
+      "post": {
+        "description": "",
+        "summary": "POST - Controller - action-types - list-action",
+        "requestBody": {
+          "description": "list-action_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_list_list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list_list-action_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC list-action success",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list_list-action_output"
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list_list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/action-types:container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - Controller - container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - Controller - container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - action-types - container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - action-types - container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/action-types:container/container-action": {
+      "post": {
+        "description": "",
+        "summary": "POST - Controller - action-types - container-action",
+        "requestBody": {
+          "description": "container-action_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_container_container-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container_container-action_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC container-action success",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container_container-action_output"
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container_container-action_output"
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/action-types:multi-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - Controller - multi-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - Controller - multi-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - action-types - multi-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - action-types - multi-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/action-types:first-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - Controller - first-container",
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:first-container": {
+                    "$ref": "#/components/schemas/action-types_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_first-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - Controller - first-container",
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:first-container": {
+                    "$ref": "#/components/schemas/action-types_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_first-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - action-types - first-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - action-types - first-container",
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_first-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "first-container": {
+                      "$ref": "#/components/schemas/action-types_first-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/action-types:nc-list={nc-name}": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - Controller - nc-list",
+        "requestBody": {
+          "description": "nc-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:nc-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_nc-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_nc-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "nc-name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - Controller - nc-list",
+        "requestBody": {
+          "description": "nc-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:nc-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_nc-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_nc-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "nc-name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - action-types - nc-list",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "nc-name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - action-types - nc-list",
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_nc-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nc-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/action-types_nc-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "nc-name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/action-types:nc-list={nc-name}/nc-list-action": {
+      "post": {
+        "description": "",
+        "summary": "POST - Controller - action-types - nc-list-action",
+        "requestBody": {
+          "description": "nc-list-action_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_nc-list_nc-list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_nc-list_nc-list-action_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC nc-list-action success",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_nc-list_nc-list-action_output"
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_nc-list_nc-list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "nc-name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/action-types:nc-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - Controller - nc-container",
+        "requestBody": {
+          "description": "nc-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:nc-container": {
+                    "$ref": "#/components/schemas/action-types_nc-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_nc-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - Controller - nc-container",
+        "requestBody": {
+          "description": "nc-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:nc-container": {
+                    "$ref": "#/components/schemas/action-types_nc-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_nc-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - action-types - nc-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - action-types - nc-container",
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_nc-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nc-container": {
+                      "$ref": "#/components/schemas/action-types_nc-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/action-types:nc-container/nc-container-action": {
+      "post": {
+        "description": "",
+        "summary": "POST - Controller - action-types - nc-container-action",
+        "requestBody": {
+          "description": "nc-container-action_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_nc-container_nc-container-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_nc-container_nc-container-action_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC nc-container-action success",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_nc-container_nc-container-action_output"
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_nc-container_nc-container-action_output"
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/choice-test:first-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - choice-test - Controller - first-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - choice-test - Controller - first-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - choice-test - first-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - choice-test - first-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/choice-test:second-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - choice-test - Controller - second-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - choice-test - Controller - second-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - choice-test - second-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - choice-test - second-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/definition-test:binary-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - definition-test - Controller - binary-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - binary-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - binary-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - definition-test - binary-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/definition-test:union-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - definition-test - Controller - union-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - union-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - union-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - definition-test - union-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/definition-test:number-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - definition-test - Controller - number-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - number-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - number-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - definition-test - number-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/definition-test:enum-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - definition-test - Controller - enum-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - enum-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - enum-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - definition-test - enum-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/definition-test:network-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - definition-test - Controller - network-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - network-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - network-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - definition-test - network-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/duplication-test:test-rpc": {
+      "post": {
+        "description": "",
+        "summary": "POST - Controller - duplication-test - test-rpc",
+        "requestBody": {
+          "description": "test-rpc_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/duplication-test_test-rpc_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/duplication-test_test-rpc_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC test-rpc success"
+          }
+        },
+        "tags": [
+          "Controller duplication-test"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/duplication-test:test-rpc2": {
+      "post": {
+        "description": "",
+        "summary": "POST - Controller - duplication-test - test-rpc2",
+        "requestBody": {
+          "description": "test-rpc2_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/duplication-test_test-rpc2_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/duplication-test_test-rpc2_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC test-rpc2 success"
+          }
+        },
+        "tags": [
+          "Controller duplication-test"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/duplication-test:test-rpc3": {
+      "post": {
+        "description": "",
+        "summary": "POST - Controller - duplication-test - test-rpc3",
+        "requestBody": {
+          "description": "test-rpc3_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/duplication-test_test-rpc3_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/duplication-test_test-rpc3_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC test-rpc3 success"
+          }
+        },
+        "tags": [
+          "Controller duplication-test"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/mandatory-test:root-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - root-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - root-container",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - root-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - root-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/mandatory-test:root-optional-list={id}": {
+      "put": {
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - root-optional-list",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ]
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - root-optional-list",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ]
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - root-optional-list",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ]
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - root-optional-list",
+        "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"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "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"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/mandatory-test:root-mandatory-list={id}": {
+      "put": {
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - root-mandatory-list",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ]
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - root-mandatory-list",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ]
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - root-mandatory-list",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ]
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - root-mandatory-list",
+        "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"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "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"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/my-yang:data": {
+      "put": {
+        "description": "",
+        "summary": "PUT - my-yang - Controller - data",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - my-yang - Controller - data",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - my-yang - data",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - my-yang - data",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/path-params-test:cont": {
+      "put": {
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - cont",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - cont",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - cont",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - path-params-test - cont",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/recursive:container-root": {
+      "put": {
+        "description": "",
+        "summary": "PUT - recursive - Controller - container-root",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - recursive - Controller - container-root",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - recursive - container-root",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - recursive - container-root",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/string-types:test": {
+      "put": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "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",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "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",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/strings-examples-length:test": {
+      "put": {
+        "description": "",
+        "summary": "PUT - strings-examples-length - Controller - test",
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "strings-examples-length:test": {
+                    "$ref": "#/components/schemas/strings-examples-length_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-examples-length_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller strings-examples-length"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - strings-examples-length - Controller - test",
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "strings-examples-length:test": {
+                    "$ref": "#/components/schemas/strings-examples-length_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-examples-length_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller strings-examples-length"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - strings-examples-length - test",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller strings-examples-length"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - strings-examples-length - test",
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/strings-examples-length_test"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "test": {
+                      "$ref": "#/components/schemas/strings-examples-length_test",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller strings-examples-length"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/strings-from-regex:test": {
+      "put": {
+        "description": "",
+        "summary": "PUT - strings-from-regex - Controller - test",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - strings-from-regex - Controller - test",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - strings-from-regex - test",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - strings-from-regex - test",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/test-container-childs:root-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - root-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - root-container",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - root-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - root-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/test-container-childs:root-container-two-keys": {
+      "put": {
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - root-container-two-keys",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - root-container-two-keys",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - root-container-two-keys",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - root-container-two-keys",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/test-container-childs:root-container-unique": {
+      "put": {
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - root-container-unique",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - root-container-unique",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - root-container-unique",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - root-container-unique",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/toaster:make-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/toaster:cancel-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/toaster:toaster": {
+      "put": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster - Controller - toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster - Controller - toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - Controller - toaster - toaster",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - Controller - toaster - toaster",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/toaster2:make-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/toaster2:cancel-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/toaster2:restock-toaster": {
+      "post": {
+        "description": "Restocks the toaster with the amount of bread specified.",
+        "summary": "POST - Controller - toaster2 - restock-toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/toaster2:toaster": {
+      "put": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster2 - Controller - toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster2 - Controller - toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - Controller - toaster2 - toaster",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - Controller - toaster2 - toaster",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/toaster2:lst={lf1}": {
+      "put": {
+        "description": "",
+        "summary": "PUT - toaster2 - Controller - lst",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - toaster2 - Controller - lst",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - toaster2 - lst",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - toaster2 - lst",
+        "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"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "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"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/typed-params:typed": {
+      "put": {
+        "description": "",
+        "summary": "PUT - typed-params - Controller - typed",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - typed",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - typed",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - typed-params - typed",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "action-types_list": {
+        "title": "action-types_list",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_list_list-action_input": {
+        "title": "action-types_list_list-action_input",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_list_list-action_output": {
+        "title": "action-types_list_list-action_output",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_container": {
+        "title": "action-types_container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_container_container-action_input": {
+        "title": "action-types_container_container-action_input",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_container_container-action_output": {
+        "title": "action-types_container_container-action_output",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_multi-container": {
+        "title": "action-types_multi-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "multi-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_first-container": {
+        "title": "action-types_first-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "first-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_nc-list": {
+        "title": "action-types_nc-list",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "nc-list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_nc-list_nc-list-action_input": {
+        "title": "action-types_nc-list_nc-list-action_input",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_nc-list_nc-list-action_output": {
+        "title": "action-types_nc-list_nc-list-action_output",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_nc-container": {
+        "title": "action-types_nc-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "nc-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_nc-container_nc-container-action_input": {
+        "title": "action-types_nc-container_nc-container-action_input",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_nc-container_nc-container-action_output": {
+        "title": "action-types_nc-container_nc-container-action_output",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "choice-test_first-container": {
+        "title": "choice-test_first-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "first-container",
+          "namespace": "urn:opendaylight:choice-test"
+        }
+      },
+      "choice-test_second-container": {
+        "title": "choice-test_second-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "second-container",
+          "namespace": "urn:opendaylight:choice-test"
+        }
+      },
+      "definition-test_binary-container": {
+        "title": "definition-test_binary-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "binary-container",
+          "namespace": "urn:definition-test"
+        }
+      },
+      "definition-test_union-container": {
+        "title": "definition-test_union-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "union-container",
+          "namespace": "urn:definition-test"
+        }
+      },
+      "definition-test_number-container": {
+        "title": "definition-test_number-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "number-container",
+          "namespace": "urn:definition-test"
+        }
+      },
+      "definition-test_enum-container": {
+        "title": "definition-test_enum-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "enum-container",
+          "namespace": "urn:definition-test"
+        }
+      },
+      "definition-test_network-container": {
+        "title": "definition-test_network-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "network-container",
+          "namespace": "urn:definition-test"
+        }
+      },
+      "duplication-test_test-rpc_input": {
+        "title": "duplication-test_test-rpc_input",
+        "type": "object",
+        "properties": {
+          "input-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some input-leaf"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:duplication:test"
+        }
+      },
+      "duplication-test_test-rpc2_input": {
+        "title": "duplication-test_test-rpc2_input",
+        "type": "object",
+        "properties": {
+          "input-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some input-leaf"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:duplication:test"
+        }
+      },
+      "duplication-test_test-rpc3_input": {
+        "title": "duplication-test_test-rpc3_input",
+        "type": "object",
+        "properties": {
+          "input-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some input-leaf"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:duplication:test"
+        }
+      },
+      "mandatory-test_root-container": {
+        "title": "mandatory-test_root-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test"
+        }
+      },
+      "mandatory-test_root-optional-list": {
+        "title": "mandatory-test_root-optional-list",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-optional-list",
+          "namespace": "http://example.com/test"
+        }
+      },
+      "mandatory-test_root-mandatory-list": {
+        "title": "mandatory-test_root-mandatory-list",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-mandatory-list",
+          "namespace": "http://example.com/test"
+        }
+      },
+      "my-yang_data": {
+        "title": "my-yang_data",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "data",
+          "namespace": "urn:opendaylight:params:xml:ns:yang:my-yang"
+        }
+      },
+      "path-params-test_cont": {
+        "title": "path-params-test_cont",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "cont",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        }
+      },
+      "recursive_container-root": {
+        "title": "recursive_container-root",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "container-root",
+          "namespace": "urn:opendaylight:test:recursive"
+        }
+      },
+      "string-types_test": {
+        "title": "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.",
+        "properties": {},
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:string:types"
+        }
+      },
+      "strings-examples-length_test": {
+        "title": "strings-examples-length_test",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:strings:examples"
+        }
+      },
+      "strings-from-regex_test": {
+        "title": "strings-from-regex_test",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:strings:regex"
+        }
+      },
+      "test-container-childs_root-container": {
+        "title": "test-container-childs_root-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test/container/child"
+        }
+      },
+      "test-container-childs_root-container-two-keys": {
+        "title": "test-container-childs_root-container-two-keys",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-container-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        }
+      },
+      "test-container-childs_root-container-unique": {
+        "title": "test-container-childs_root-container-unique",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-container-unique",
+          "namespace": "http://example.com/test/container/child"
+        }
+      },
+      "toaster_make-toast_input": {
+        "title": "toaster_make-toast_input",
+        "type": "object",
+        "properties": {
+          "toasterDoneness": {
+            "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",
+            "format": "int64",
+            "default": 5,
+            "example": 1
+          },
+          "toasterToastType": {
+            "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",
+            "enum": [
+              "toast-type",
+              "hash-brown",
+              "frozen-waffle",
+              "wonder-bread",
+              "wheat-bread",
+              "frozen-bagel",
+              "white-bread"
+            ],
+            "default": "wheat-bread",
+            "example": "toast-type"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        }
+      },
+      "toaster_toaster": {
+        "title": "toaster_toaster",
+        "type": "object",
+        "description": "Top-level container for all toaster database objects.",
+        "properties": {},
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        }
+      },
+      "toaster2_make-toast_input": {
+        "title": "toaster2_make-toast_input",
+        "type": "object",
+        "properties": {
+          "toasterDoneness": {
+            "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",
+            "format": "int64",
+            "default": 5,
+            "example": 1
+          },
+          "toasterToastType": {
+            "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",
+            "enum": [
+              "toast-type",
+              "hash-brown",
+              "white-bread",
+              "wheat-bread",
+              "wonder-bread",
+              "frozen-waffle",
+              "frozen-bagel"
+            ],
+            "default": "wheat-bread",
+            "example": "toast-type"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "toaster2_restock-toaster_input": {
+        "title": "toaster2_restock-toaster_input",
+        "type": "object",
+        "properties": {
+          "amountOfBreadToStock": {
+            "description": "Indicates the amount of bread to re-stock",
+            "type": "integer",
+            "format": "int64",
+            "example": 0
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "toaster2_toaster": {
+        "title": "toaster2_toaster",
+        "type": "object",
+        "description": "Top-level container for all toaster database objects.",
+        "properties": {},
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "toaster2_lst": {
+        "title": "toaster2_lst",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "lst",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "typed-params_typed": {
+        "title": "typed-params_typed",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "typed",
+          "namespace": "urn:typed-params"
+        }
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/controller-all-width-and-depth-one.json b/restconf/restconf-openapi/src/test/resources/yang-document/controller-all-width-and-depth-one.json
new file mode 100644 (file)
index 0000000..ccb52e4
--- /dev/null
@@ -0,0 +1,2417 @@
+{
+  "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": {
+      "post": {
+        "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",
+        "requestBody": {
+          "description": "list",
+          "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"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "tags": [
+          "Controller root"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "Queries the config (startup) datastore on the mounted hosted.",
+        "responses": {
+          "200": {
+            "description": "OK"
+          }
+        },
+        "summary": "GET - Controller - datastore - data",
+        "tags": [
+          "Controller root"
+        ]
+      }
+    },
+    "/rests/operations": {
+      "get": {
+        "description": "Queries the available operations (RPC calls) on the mounted hosted.",
+        "responses": {
+          "200": {
+            "description": "OK"
+          }
+        },
+        "summary": "GET - Controller - datastore - operations",
+        "tags": [
+          "Controller root"
+        ]
+      }
+    },
+    "/rests/data/action-types:list={name}": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - Controller - list",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - Controller - list",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - action-types - list",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - action-types - list",
+        "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"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "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"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/action-types:list={name}/list-action": {
+      "post": {
+        "description": "",
+        "summary": "POST - Controller - action-types - list-action",
+        "requestBody": {
+          "description": "list-action_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_list_list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list_list-action_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC list-action success",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list_list-action_output"
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list_list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/choice-test:first-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - choice-test - Controller - first-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - choice-test - Controller - first-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - choice-test - first-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - choice-test - first-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/definition-test:binary-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - definition-test - Controller - binary-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - definition-test - Controller - binary-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - definition-test - binary-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - definition-test - binary-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/duplication-test:test-rpc": {
+      "post": {
+        "description": "",
+        "summary": "POST - Controller - duplication-test - test-rpc",
+        "requestBody": {
+          "description": "test-rpc_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/duplication-test_test-rpc_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/duplication-test_test-rpc_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC test-rpc success"
+          }
+        },
+        "tags": [
+          "Controller duplication-test"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/duplication-test:test-rpc2": {
+      "post": {
+        "description": "",
+        "summary": "POST - Controller - duplication-test - test-rpc2",
+        "requestBody": {
+          "description": "test-rpc2_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/duplication-test_test-rpc2_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/duplication-test_test-rpc2_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC test-rpc2 success"
+          }
+        },
+        "tags": [
+          "Controller duplication-test"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/duplication-test:test-rpc3": {
+      "post": {
+        "description": "",
+        "summary": "POST - Controller - duplication-test - test-rpc3",
+        "requestBody": {
+          "description": "test-rpc3_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/duplication-test_test-rpc3_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/duplication-test_test-rpc3_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC test-rpc3 success"
+          }
+        },
+        "tags": [
+          "Controller duplication-test"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/mandatory-test:root-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - mandatory-test - Controller - root-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - mandatory-test - Controller - root-container",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - mandatory-test - root-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - mandatory-test - root-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/my-yang:data": {
+      "put": {
+        "description": "",
+        "summary": "PUT - my-yang - Controller - data",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - my-yang - Controller - data",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - my-yang - data",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - my-yang - data",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller my-yang"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/path-params-test:cont": {
+      "put": {
+        "description": "",
+        "summary": "PUT - path-params-test - Controller - cont",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - path-params-test - Controller - cont",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - path-params-test - cont",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - path-params-test - cont",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/recursive:container-root": {
+      "put": {
+        "description": "",
+        "summary": "PUT - recursive - Controller - container-root",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - recursive - Controller - container-root",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - recursive - container-root",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - recursive - container-root",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller recursive"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/string-types:test": {
+      "put": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "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",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "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",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller string-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/strings-examples-length:test": {
+      "put": {
+        "description": "",
+        "summary": "PUT - strings-examples-length - Controller - test",
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "strings-examples-length:test": {
+                    "$ref": "#/components/schemas/strings-examples-length_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-examples-length_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller strings-examples-length"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - strings-examples-length - Controller - test",
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "strings-examples-length:test": {
+                    "$ref": "#/components/schemas/strings-examples-length_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-examples-length_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller strings-examples-length"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - strings-examples-length - test",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller strings-examples-length"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - strings-examples-length - test",
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/strings-examples-length_test"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "test": {
+                      "$ref": "#/components/schemas/strings-examples-length_test",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller strings-examples-length"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/strings-from-regex:test": {
+      "put": {
+        "description": "",
+        "summary": "PUT - strings-from-regex - Controller - test",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - strings-from-regex - Controller - test",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - strings-from-regex - test",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - strings-from-regex - test",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller strings-from-regex"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/test-container-childs:root-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - test-container-childs - Controller - root-container",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - test-container-childs - Controller - root-container",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - test-container-childs - root-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - test-container-childs - root-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/toaster:make-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/toaster:cancel-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/toaster2:make-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/toaster2:cancel-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/toaster2:restock-toaster": {
+      "post": {
+        "description": "Restocks the toaster with the amount of bread specified.",
+        "summary": "POST - Controller - toaster2 - restock-toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/toaster2:toaster": {
+      "put": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster2 - Controller - toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster2 - Controller - toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - Controller - toaster2 - toaster",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - Controller - toaster2 - toaster",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/typed-params:typed": {
+      "put": {
+        "description": "",
+        "summary": "PUT - typed-params - Controller - typed",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - typed-params - Controller - typed",
+        "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"
+          }
+        },
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - Controller - typed-params - typed",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - Controller - typed-params - typed",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "Controller typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "action-types_list": {
+        "title": "action-types_list",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_list_list-action_input": {
+        "title": "action-types_list_list-action_input",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_list_list-action_output": {
+        "title": "action-types_list_list-action_output",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "choice-test_first-container": {
+        "title": "choice-test_first-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "first-container",
+          "namespace": "urn:opendaylight:choice-test"
+        }
+      },
+      "definition-test_binary-container": {
+        "title": "definition-test_binary-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "binary-container",
+          "namespace": "urn:definition-test"
+        }
+      },
+      "duplication-test_test-rpc_input": {
+        "title": "duplication-test_test-rpc_input",
+        "type": "object",
+        "properties": {
+          "input-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some input-leaf"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:duplication:test"
+        }
+      },
+      "duplication-test_test-rpc2_input": {
+        "title": "duplication-test_test-rpc2_input",
+        "type": "object",
+        "properties": {
+          "input-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some input-leaf"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:duplication:test"
+        }
+      },
+      "duplication-test_test-rpc3_input": {
+        "title": "duplication-test_test-rpc3_input",
+        "type": "object",
+        "properties": {
+          "input-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some input-leaf"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:duplication:test"
+        }
+      },
+      "mandatory-test_root-container": {
+        "title": "mandatory-test_root-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test"
+        }
+      },
+      "my-yang_data": {
+        "title": "my-yang_data",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "data",
+          "namespace": "urn:opendaylight:params:xml:ns:yang:my-yang"
+        }
+      },
+      "path-params-test_cont": {
+        "title": "path-params-test_cont",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "cont",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        }
+      },
+      "recursive_container-root": {
+        "title": "recursive_container-root",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "container-root",
+          "namespace": "urn:opendaylight:test:recursive"
+        }
+      },
+      "string-types_test": {
+        "title": "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.",
+        "properties": {},
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:string:types"
+        }
+      },
+      "strings-examples-length_test": {
+        "title": "strings-examples-length_test",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:strings:examples"
+        }
+      },
+      "strings-from-regex_test": {
+        "title": "strings-from-regex_test",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:strings:regex"
+        }
+      },
+      "test-container-childs_root-container": {
+        "title": "test-container-childs_root-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test/container/child"
+        }
+      },
+      "toaster_make-toast_input": {
+        "title": "toaster_make-toast_input",
+        "type": "object",
+        "properties": {
+          "toasterDoneness": {
+            "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",
+            "format": "int64",
+            "default": 5,
+            "example": 1
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        }
+      },
+      "toaster2_make-toast_input": {
+        "title": "toaster2_make-toast_input",
+        "type": "object",
+        "properties": {
+          "toasterDoneness": {
+            "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",
+            "format": "int64",
+            "default": 5,
+            "example": 1
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "toaster2_restock-toaster_input": {
+        "title": "toaster2_restock-toaster_input",
+        "type": "object",
+        "properties": {
+          "amountOfBreadToStock": {
+            "description": "Indicates the amount of bread to re-stock",
+            "type": "integer",
+            "format": "int64",
+            "example": 0
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "toaster2_toaster": {
+        "title": "toaster2_toaster",
+        "type": "object",
+        "description": "Top-level container for all toaster database objects.",
+        "properties": {},
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "typed-params_typed": {
+        "title": "typed-params_typed",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "typed",
+          "namespace": "urn:typed-params"
+        }
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-all-depth-one.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-all-depth-one.json
new file mode 100644 (file)
index 0000000..e06c3e6
--- /dev/null
@@ -0,0 +1,5068 @@
+{
+  "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": {
+      "post": {
+        "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",
+        "requestBody": {
+          "description": "list",
+          "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"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "tags": [
+          "123 root"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "Queries the config (startup) datastore on the mounted hosted.",
+        "responses": {
+          "200": {
+            "description": "OK"
+          }
+        },
+        "summary": "GET - 123 - datastore - data",
+        "tags": [
+          "123 root"
+        ]
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount": {
+      "get": {
+        "description": "Queries the available operations (RPC calls) on the mounted hosted.",
+        "responses": {
+          "200": {
+            "description": "OK"
+          }
+        },
+        "summary": "GET - 123 - datastore - operations",
+        "tags": [
+          "123 root"
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:list={name}": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - 123 - list",
+        "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"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - 123 - list",
+        "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"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - action-types - list",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - action-types - list",
+        "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"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "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"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:list={name}/list-action": {
+      "post": {
+        "description": "",
+        "summary": "POST - 123 - action-types - list-action",
+        "requestBody": {
+          "description": "list-action_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_list_list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list_list-action_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC list-action success",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list_list-action_output"
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list_list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - 123 - container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - 123 - container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - action-types - container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - action-types - container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:container/container-action": {
+      "post": {
+        "description": "",
+        "summary": "POST - 123 - action-types - container-action",
+        "requestBody": {
+          "description": "container-action_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_container_container-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_container_container-action_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC container-action success",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container_container-action_output"
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_container_container-action_output"
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:multi-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - 123 - multi-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - 123 - multi-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - action-types - multi-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - action-types - multi-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:first-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - 123 - first-container",
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:first-container": {
+                    "$ref": "#/components/schemas/action-types_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_first-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - 123 - first-container",
+        "requestBody": {
+          "description": "first-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:first-container": {
+                    "$ref": "#/components/schemas/action-types_first-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_first-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - action-types - first-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - action-types - first-container",
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_first-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "first-container": {
+                      "$ref": "#/components/schemas/action-types_first-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:nc-list={nc-name}": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - 123 - nc-list",
+        "requestBody": {
+          "description": "nc-list",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:nc-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_nc-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_nc-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "nc-name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - 123 - nc-list",
+        "requestBody": {
+          "description": "nc-list",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:nc-list": {
+                    "type": "array",
+                    "items": {
+                      "$ref": "#/components/schemas/action-types_nc-list",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_nc-list"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "nc-name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - action-types - nc-list",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "nc-name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - action-types - nc-list",
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_nc-list"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nc-list": {
+                      "type": "array",
+                      "items": {
+                        "$ref": "#/components/schemas/action-types_nc-list",
+                        "type": "object"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "nc-name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:nc-list={nc-name}/nc-list-action": {
+      "post": {
+        "description": "",
+        "summary": "POST - 123 - action-types - nc-list-action",
+        "requestBody": {
+          "description": "nc-list-action_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_nc-list_nc-list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_nc-list_nc-list-action_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC nc-list-action success",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_nc-list_nc-list-action_output"
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_nc-list_nc-list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "nc-name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:nc-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - 123 - nc-container",
+        "requestBody": {
+          "description": "nc-container",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "action-types:nc-container": {
+                    "$ref": "#/components/schemas/action-types_nc-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_nc-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - 123 - nc-container",
+        "requestBody": {
+          "description": "nc-container",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "action-types:nc-container": {
+                    "$ref": "#/components/schemas/action-types_nc-container",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_nc-container"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - action-types - nc-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - action-types - nc-container",
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_nc-container"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "nc-container": {
+                      "$ref": "#/components/schemas/action-types_nc-container",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:nc-container/nc-container-action": {
+      "post": {
+        "description": "",
+        "summary": "POST - 123 - action-types - nc-container-action",
+        "requestBody": {
+          "description": "nc-container-action_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_nc-container_nc-container-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_nc-container_nc-container-action_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC nc-container-action success",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_nc-container_nc-container-action_output"
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_nc-container_nc-container-action_output"
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/choice-test:first-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - choice-test - 123 - first-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - choice-test - 123 - first-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - choice-test - first-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - choice-test - first-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/choice-test:second-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - choice-test - 123 - second-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - choice-test - 123 - second-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - choice-test - second-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - choice-test - second-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:binary-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - definition-test - 123 - binary-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - binary-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - binary-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - definition-test - binary-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:union-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - definition-test - 123 - union-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - union-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - union-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - definition-test - union-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:number-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - definition-test - 123 - number-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - number-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - number-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - definition-test - number-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:enum-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - definition-test - 123 - enum-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - enum-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - enum-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - definition-test - enum-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:network-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - definition-test - 123 - network-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - network-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - network-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - definition-test - network-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/duplication-test:test-rpc": {
+      "post": {
+        "description": "",
+        "summary": "POST - 123 - duplication-test - test-rpc",
+        "requestBody": {
+          "description": "test-rpc_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/duplication-test_test-rpc_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/duplication-test_test-rpc_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC test-rpc success"
+          }
+        },
+        "tags": [
+          "123 duplication-test"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/duplication-test:test-rpc2": {
+      "post": {
+        "description": "",
+        "summary": "POST - 123 - duplication-test - test-rpc2",
+        "requestBody": {
+          "description": "test-rpc2_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/duplication-test_test-rpc2_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/duplication-test_test-rpc2_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC test-rpc2 success"
+          }
+        },
+        "tags": [
+          "123 duplication-test"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/duplication-test:test-rpc3": {
+      "post": {
+        "description": "",
+        "summary": "POST - 123 - duplication-test - test-rpc3",
+        "requestBody": {
+          "description": "test-rpc3_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/duplication-test_test-rpc3_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/duplication-test_test-rpc3_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC test-rpc3 success"
+          }
+        },
+        "tags": [
+          "123 duplication-test"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - root-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - root-container",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - root-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - root-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-optional-list={id}": {
+      "put": {
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - root-optional-list",
+        "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"
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ]
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - root-optional-list",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ]
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - root-optional-list",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ]
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - root-optional-list",
+        "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"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "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"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-mandatory-list={id}": {
+      "put": {
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - root-mandatory-list",
+        "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"
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ]
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - root-mandatory-list",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ]
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - root-mandatory-list",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "id",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ]
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - root-mandatory-list",
+        "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"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "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"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/my-yang:data": {
+      "put": {
+        "description": "",
+        "summary": "PUT - my-yang - 123 - data",
+        "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"
+          }
+        },
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - my-yang - 123 - data",
+        "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"
+          }
+        },
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - my-yang - data",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - my-yang - data",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont": {
+      "put": {
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - cont",
+        "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"
+          }
+        },
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - cont",
+        "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"
+          }
+        },
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - cont",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - path-params-test - cont",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/recursive:container-root": {
+      "put": {
+        "description": "",
+        "summary": "PUT - recursive - 123 - container-root",
+        "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"
+          }
+        },
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - recursive - 123 - container-root",
+        "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"
+          }
+        },
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - recursive - container-root",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - recursive - container-root",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/string-types:test": {
+      "put": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "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",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "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",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/strings-examples-length:test": {
+      "put": {
+        "description": "",
+        "summary": "PUT - strings-examples-length - 123 - test",
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "strings-examples-length:test": {
+                    "$ref": "#/components/schemas/strings-examples-length_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-examples-length_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 strings-examples-length"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - strings-examples-length - 123 - test",
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "strings-examples-length:test": {
+                    "$ref": "#/components/schemas/strings-examples-length_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-examples-length_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 strings-examples-length"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - strings-examples-length - test",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 strings-examples-length"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - strings-examples-length - test",
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/strings-examples-length_test"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "test": {
+                      "$ref": "#/components/schemas/strings-examples-length_test",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 strings-examples-length"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/strings-from-regex:test": {
+      "put": {
+        "description": "",
+        "summary": "PUT - strings-from-regex - 123 - test",
+        "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"
+          }
+        },
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - strings-from-regex - 123 - test",
+        "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"
+          }
+        },
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - strings-from-regex - test",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - strings-from-regex - test",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - root-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - root-container",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - root-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - root-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-two-keys": {
+      "put": {
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - root-container-two-keys",
+        "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"
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - root-container-two-keys",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - root-container-two-keys",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - root-container-two-keys",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container-unique": {
+      "put": {
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - root-container-unique",
+        "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"
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - root-container-unique",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - root-container-unique",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - root-container-unique",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster:make-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster:cancel-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster:toaster": {
+      "put": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster - 123 - toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster - 123 - toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - 123 - toaster - toaster",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - 123 - toaster - toaster",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster2:make-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster2:cancel-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster2:restock-toaster": {
+      "post": {
+        "description": "Restocks the toaster with the amount of bread specified.",
+        "summary": "POST - 123 - toaster2 - restock-toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:toaster": {
+      "put": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster2 - 123 - toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster2 - 123 - toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - 123 - toaster2 - toaster",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - 123 - toaster2 - toaster",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:lst={lf1}": {
+      "put": {
+        "description": "",
+        "summary": "PUT - toaster2 - 123 - lst",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - toaster2 - 123 - lst",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - toaster2 - lst",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "lf1",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - toaster2 - lst",
+        "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"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "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"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed": {
+      "put": {
+        "description": "",
+        "summary": "PUT - typed-params - 123 - typed",
+        "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"
+          }
+        },
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - typed",
+        "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"
+          }
+        },
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - typed",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - typed-params - typed",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "action-types_list": {
+        "title": "action-types_list",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_list_list-action_input": {
+        "title": "action-types_list_list-action_input",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_list_list-action_output": {
+        "title": "action-types_list_list-action_output",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_container": {
+        "title": "action-types_container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_container_container-action_input": {
+        "title": "action-types_container_container-action_input",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_container_container-action_output": {
+        "title": "action-types_container_container-action_output",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_multi-container": {
+        "title": "action-types_multi-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "multi-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_first-container": {
+        "title": "action-types_first-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "first-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_nc-list": {
+        "title": "action-types_nc-list",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "nc-list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_nc-list_nc-list-action_input": {
+        "title": "action-types_nc-list_nc-list-action_input",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_nc-list_nc-list-action_output": {
+        "title": "action-types_nc-list_nc-list-action_output",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_nc-container": {
+        "title": "action-types_nc-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "nc-container",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_nc-container_nc-container-action_input": {
+        "title": "action-types_nc-container_nc-container-action_input",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_nc-container_nc-container-action_output": {
+        "title": "action-types_nc-container_nc-container-action_output",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "choice-test_first-container": {
+        "title": "choice-test_first-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "first-container",
+          "namespace": "urn:opendaylight:choice-test"
+        }
+      },
+      "choice-test_second-container": {
+        "title": "choice-test_second-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "second-container",
+          "namespace": "urn:opendaylight:choice-test"
+        }
+      },
+      "definition-test_binary-container": {
+        "title": "definition-test_binary-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "binary-container",
+          "namespace": "urn:definition-test"
+        }
+      },
+      "definition-test_union-container": {
+        "title": "definition-test_union-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "union-container",
+          "namespace": "urn:definition-test"
+        }
+      },
+      "definition-test_number-container": {
+        "title": "definition-test_number-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "number-container",
+          "namespace": "urn:definition-test"
+        }
+      },
+      "definition-test_enum-container": {
+        "title": "definition-test_enum-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "enum-container",
+          "namespace": "urn:definition-test"
+        }
+      },
+      "definition-test_network-container": {
+        "title": "definition-test_network-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "network-container",
+          "namespace": "urn:definition-test"
+        }
+      },
+      "duplication-test_test-rpc_input": {
+        "title": "duplication-test_test-rpc_input",
+        "type": "object",
+        "properties": {
+          "input-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some input-leaf"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:duplication:test"
+        }
+      },
+      "duplication-test_test-rpc2_input": {
+        "title": "duplication-test_test-rpc2_input",
+        "type": "object",
+        "properties": {
+          "input-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some input-leaf"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:duplication:test"
+        }
+      },
+      "duplication-test_test-rpc3_input": {
+        "title": "duplication-test_test-rpc3_input",
+        "type": "object",
+        "properties": {
+          "input-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some input-leaf"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:duplication:test"
+        }
+      },
+      "mandatory-test_root-container": {
+        "title": "mandatory-test_root-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test"
+        }
+      },
+      "mandatory-test_root-optional-list": {
+        "title": "mandatory-test_root-optional-list",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-optional-list",
+          "namespace": "http://example.com/test"
+        }
+      },
+      "mandatory-test_root-mandatory-list": {
+        "title": "mandatory-test_root-mandatory-list",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-mandatory-list",
+          "namespace": "http://example.com/test"
+        }
+      },
+      "my-yang_data": {
+        "title": "my-yang_data",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "data",
+          "namespace": "urn:opendaylight:params:xml:ns:yang:my-yang"
+        }
+      },
+      "path-params-test_cont": {
+        "title": "path-params-test_cont",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "cont",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        }
+      },
+      "recursive_container-root": {
+        "title": "recursive_container-root",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "container-root",
+          "namespace": "urn:opendaylight:test:recursive"
+        }
+      },
+      "string-types_test": {
+        "title": "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.",
+        "properties": {},
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:string:types"
+        }
+      },
+      "strings-examples-length_test": {
+        "title": "strings-examples-length_test",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:strings:examples"
+        }
+      },
+      "strings-from-regex_test": {
+        "title": "strings-from-regex_test",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:strings:regex"
+        }
+      },
+      "test-container-childs_root-container": {
+        "title": "test-container-childs_root-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test/container/child"
+        }
+      },
+      "test-container-childs_root-container-two-keys": {
+        "title": "test-container-childs_root-container-two-keys",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-container-two-keys",
+          "namespace": "http://example.com/test/container/child"
+        }
+      },
+      "test-container-childs_root-container-unique": {
+        "title": "test-container-childs_root-container-unique",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-container-unique",
+          "namespace": "http://example.com/test/container/child"
+        }
+      },
+      "toaster_make-toast_input": {
+        "title": "toaster_make-toast_input",
+        "type": "object",
+        "properties": {
+          "toasterDoneness": {
+            "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",
+            "format": "int64",
+            "default": 5,
+            "example": 1
+          },
+          "toasterToastType": {
+            "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",
+            "enum": [
+              "toast-type",
+              "white-bread",
+              "hash-brown",
+              "wheat-bread",
+              "frozen-bagel",
+              "frozen-waffle",
+              "wonder-bread"
+            ],
+            "default": "wheat-bread",
+            "example": "toast-type"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        }
+      },
+      "toaster_toaster": {
+        "title": "toaster_toaster",
+        "type": "object",
+        "description": "Top-level container for all toaster database objects.",
+        "properties": {},
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        }
+      },
+      "toaster2_make-toast_input": {
+        "title": "toaster2_make-toast_input",
+        "type": "object",
+        "properties": {
+          "toasterDoneness": {
+            "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",
+            "format": "int64",
+            "default": 5,
+            "example": 1
+          },
+          "toasterToastType": {
+            "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",
+            "enum": [
+              "toast-type",
+              "white-bread",
+              "wonder-bread",
+              "frozen-bagel",
+              "frozen-waffle",
+              "wheat-bread",
+              "hash-brown"
+            ],
+            "default": "wheat-bread",
+            "example": "toast-type"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "toaster2_restock-toaster_input": {
+        "title": "toaster2_restock-toaster_input",
+        "type": "object",
+        "properties": {
+          "amountOfBreadToStock": {
+            "description": "Indicates the amount of bread to re-stock",
+            "type": "integer",
+            "format": "int64",
+            "example": 0
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "toaster2_toaster": {
+        "title": "toaster2_toaster",
+        "type": "object",
+        "description": "Top-level container for all toaster database objects.",
+        "properties": {},
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "toaster2_lst": {
+        "title": "toaster2_lst",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "lst",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "typed-params_typed": {
+        "title": "typed-params_typed",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "typed",
+          "namespace": "urn:typed-params"
+        }
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}
diff --git a/restconf/restconf-openapi/src/test/resources/yang-document/device-all-width-and-depth-one.json b/restconf/restconf-openapi/src/test/resources/yang-document/device-all-width-and-depth-one.json
new file mode 100644 (file)
index 0000000..385ed72
--- /dev/null
@@ -0,0 +1,2417 @@
+{
+  "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": {
+      "post": {
+        "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",
+        "requestBody": {
+          "description": "list",
+          "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"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          }
+        },
+        "tags": [
+          "123 root"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "Queries the config (startup) datastore on the mounted hosted.",
+        "responses": {
+          "200": {
+            "description": "OK"
+          }
+        },
+        "summary": "GET - 123 - datastore - data",
+        "tags": [
+          "123 root"
+        ]
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount": {
+      "get": {
+        "description": "Queries the available operations (RPC calls) on the mounted hosted.",
+        "responses": {
+          "200": {
+            "description": "OK"
+          }
+        },
+        "summary": "GET - 123 - datastore - operations",
+        "tags": [
+          "123 root"
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/action-types:list={name}": {
+      "put": {
+        "description": "",
+        "summary": "PUT - action-types - 123 - list",
+        "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"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - action-types - 123 - list",
+        "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"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - action-types - list",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - action-types - list",
+        "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"
+                      }
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "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"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/action-types:list={name}/list-action": {
+      "post": {
+        "description": "",
+        "summary": "POST - 123 - action-types - list-action",
+        "requestBody": {
+          "description": "list-action_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/action-types_list_list-action_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/action-types_list_list-action_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "RPC list-action success",
+            "content": {
+              "application/json": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list_list-action_output"
+                }
+              },
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/action-types_list_list-action_output"
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 action-types"
+        ],
+        "parameters": [
+          {
+            "name": "name",
+            "in": "path",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/choice-test:first-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - choice-test - 123 - first-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - choice-test - 123 - first-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - choice-test - first-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - choice-test - first-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 choice-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/definition-test:binary-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - definition-test - 123 - binary-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - definition-test - 123 - binary-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - definition-test - binary-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - definition-test - binary-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 definition-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/duplication-test:test-rpc": {
+      "post": {
+        "description": "",
+        "summary": "POST - 123 - duplication-test - test-rpc",
+        "requestBody": {
+          "description": "test-rpc_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/duplication-test_test-rpc_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/duplication-test_test-rpc_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC test-rpc success"
+          }
+        },
+        "tags": [
+          "123 duplication-test"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/duplication-test:test-rpc2": {
+      "post": {
+        "description": "",
+        "summary": "POST - 123 - duplication-test - test-rpc2",
+        "requestBody": {
+          "description": "test-rpc2_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/duplication-test_test-rpc2_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/duplication-test_test-rpc2_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC test-rpc2 success"
+          }
+        },
+        "tags": [
+          "123 duplication-test"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/duplication-test:test-rpc3": {
+      "post": {
+        "description": "",
+        "summary": "POST - 123 - duplication-test - test-rpc3",
+        "requestBody": {
+          "description": "test-rpc3_input",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "input": {
+                    "$ref": "#/components/schemas/duplication-test_test-rpc3_input",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/duplication-test_test-rpc3_input"
+              }
+            }
+          }
+        },
+        "responses": {
+          "204": {
+            "description": "RPC test-rpc3 success"
+          }
+        },
+        "tags": [
+          "123 duplication-test"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/mandatory-test:root-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - mandatory-test - 123 - root-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - mandatory-test - 123 - root-container",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - mandatory-test - root-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - mandatory-test - root-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 mandatory-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/my-yang:data": {
+      "put": {
+        "description": "",
+        "summary": "PUT - my-yang - 123 - data",
+        "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"
+          }
+        },
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - my-yang - 123 - data",
+        "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"
+          }
+        },
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - my-yang - data",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - my-yang - data",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 my-yang"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/path-params-test:cont": {
+      "put": {
+        "description": "",
+        "summary": "PUT - path-params-test - 123 - cont",
+        "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"
+          }
+        },
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - path-params-test - 123 - cont",
+        "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"
+          }
+        },
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - path-params-test - cont",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - path-params-test - cont",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 path-params-test"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/recursive:container-root": {
+      "put": {
+        "description": "",
+        "summary": "PUT - recursive - 123 - container-root",
+        "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"
+          }
+        },
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - recursive - 123 - container-root",
+        "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"
+          }
+        },
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - recursive - container-root",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - recursive - container-root",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 recursive"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/string-types:test": {
+      "put": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "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",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "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",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 string-types"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/strings-examples-length:test": {
+      "put": {
+        "description": "",
+        "summary": "PUT - strings-examples-length - 123 - test",
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "strings-examples-length:test": {
+                    "$ref": "#/components/schemas/strings-examples-length_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-examples-length_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "201": {
+            "description": "Created"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 strings-examples-length"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - strings-examples-length - 123 - test",
+        "requestBody": {
+          "description": "test",
+          "content": {
+            "application/yang-data+json": {
+              "schema": {
+                "properties": {
+                  "strings-examples-length:test": {
+                    "$ref": "#/components/schemas/strings-examples-length_test",
+                    "type": "object"
+                  }
+                }
+              }
+            },
+            "application/yang-data+xml": {
+              "schema": {
+                "$ref": "#/components/schemas/strings-examples-length_test"
+              }
+            }
+          }
+        },
+        "responses": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 strings-examples-length"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - strings-examples-length - test",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 strings-examples-length"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - strings-examples-length - test",
+        "responses": {
+          "200": {
+            "description": "200",
+            "content": {
+              "application/xml": {
+                "schema": {
+                  "$ref": "#/components/schemas/strings-examples-length_test"
+                }
+              },
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "test": {
+                      "$ref": "#/components/schemas/strings-examples-length_test",
+                      "type": "object"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 strings-examples-length"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/strings-from-regex:test": {
+      "put": {
+        "description": "",
+        "summary": "PUT - strings-from-regex - 123 - test",
+        "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"
+          }
+        },
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - strings-from-regex - 123 - test",
+        "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"
+          }
+        },
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - strings-from-regex - test",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - strings-from-regex - test",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 strings-from-regex"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/test-container-childs:root-container": {
+      "put": {
+        "description": "",
+        "summary": "PUT - test-container-childs - 123 - root-container",
+        "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"
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - test-container-childs - 123 - root-container",
+        "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": {
+          "200": {
+            "description": "OK"
+          },
+          "204": {
+            "description": "Updated"
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - test-container-childs - root-container",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - test-container-childs - root-container",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 test-container-childs"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster:make-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster:cancel-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster2:make-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster2:cancel-toast": {
+      "post": {
+        "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",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/operations/nodes/node=123/yang-ext:mount/toaster2:restock-toaster": {
+      "post": {
+        "description": "Restocks the toaster with the amount of bread specified.",
+        "summary": "POST - 123 - toaster2 - restock-toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": []
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/toaster2:toaster": {
+      "put": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PUT - toaster2 - 123 - toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "PATCH - toaster2 - 123 - toaster",
+        "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"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "DELETE - 123 - toaster2 - toaster",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "Top-level container for all toaster database objects.",
+        "summary": "GET - 123 - toaster2 - toaster",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 toaster2"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    },
+    "/rests/data/nodes/node=123/yang-ext:mount/typed-params:typed": {
+      "put": {
+        "description": "",
+        "summary": "PUT - typed-params - 123 - typed",
+        "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"
+          }
+        },
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": []
+      },
+      "patch": {
+        "description": "",
+        "summary": "PATCH - typed-params - 123 - typed",
+        "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"
+          }
+        },
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": []
+      },
+      "delete": {
+        "description": "",
+        "summary": "DELETE - 123 - typed-params - typed",
+        "responses": {
+          "204": {
+            "description": "Deleted"
+          }
+        },
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": []
+      },
+      "get": {
+        "description": "",
+        "summary": "GET - 123 - typed-params - typed",
+        "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"
+                    }
+                  }
+                }
+              }
+            }
+          }
+        },
+        "tags": [
+          "123 typed-params"
+        ],
+        "parameters": [
+          {
+            "name": "content",
+            "in": "query",
+            "required": false,
+            "schema": {
+              "enum": [
+                "config",
+                "nonconfig",
+                "all"
+              ],
+              "type": "string"
+            }
+          }
+        ]
+      }
+    }
+  },
+  "components": {
+    "schemas": {
+      "action-types_list": {
+        "title": "action-types_list",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "list",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_list_list-action_input": {
+        "title": "action-types_list_list-action_input",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "action-types_list_list-action_output": {
+        "title": "action-types_list_list-action_output",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "output",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:action:types"
+        }
+      },
+      "choice-test_first-container": {
+        "title": "choice-test_first-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "first-container",
+          "namespace": "urn:opendaylight:choice-test"
+        }
+      },
+      "definition-test_binary-container": {
+        "title": "definition-test_binary-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "binary-container",
+          "namespace": "urn:definition-test"
+        }
+      },
+      "duplication-test_test-rpc_input": {
+        "title": "duplication-test_test-rpc_input",
+        "type": "object",
+        "properties": {
+          "input-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some input-leaf"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:duplication:test"
+        }
+      },
+      "duplication-test_test-rpc2_input": {
+        "title": "duplication-test_test-rpc2_input",
+        "type": "object",
+        "properties": {
+          "input-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some input-leaf"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:duplication:test"
+        }
+      },
+      "duplication-test_test-rpc3_input": {
+        "title": "duplication-test_test-rpc3_input",
+        "type": "object",
+        "properties": {
+          "input-leaf": {
+            "description": "",
+            "type": "string",
+            "example": "Some input-leaf"
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:duplication:test"
+        }
+      },
+      "mandatory-test_root-container": {
+        "title": "mandatory-test_root-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test"
+        }
+      },
+      "my-yang_data": {
+        "title": "my-yang_data",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "data",
+          "namespace": "urn:opendaylight:params:xml:ns:yang:my-yang"
+        }
+      },
+      "path-params-test_cont": {
+        "title": "path-params-test_cont",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "cont",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:params"
+        }
+      },
+      "recursive_container-root": {
+        "title": "recursive_container-root",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "container-root",
+          "namespace": "urn:opendaylight:test:recursive"
+        }
+      },
+      "string-types_test": {
+        "title": "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.",
+        "properties": {},
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:test:string:types"
+        }
+      },
+      "strings-examples-length_test": {
+        "title": "strings-examples-length_test",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:strings:examples"
+        }
+      },
+      "strings-from-regex_test": {
+        "title": "strings-from-regex_test",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "test",
+          "namespace": "urn:ietf:params:xml:ns:yang:strings:regex"
+        }
+      },
+      "test-container-childs_root-container": {
+        "title": "test-container-childs_root-container",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "root-container",
+          "namespace": "http://example.com/test/container/child"
+        }
+      },
+      "toaster_make-toast_input": {
+        "title": "toaster_make-toast_input",
+        "type": "object",
+        "properties": {
+          "toasterDoneness": {
+            "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",
+            "format": "int64",
+            "default": 5,
+            "example": 1
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster"
+        }
+      },
+      "toaster2_make-toast_input": {
+        "title": "toaster2_make-toast_input",
+        "type": "object",
+        "properties": {
+          "toasterDoneness": {
+            "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",
+            "format": "int64",
+            "default": 5,
+            "example": 1
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "toaster2_restock-toaster_input": {
+        "title": "toaster2_restock-toaster_input",
+        "type": "object",
+        "properties": {
+          "amountOfBreadToStock": {
+            "description": "Indicates the amount of bread to re-stock",
+            "type": "integer",
+            "format": "int64",
+            "example": 0
+          }
+        },
+        "xml": {
+          "name": "input",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "toaster2_toaster": {
+        "title": "toaster2_toaster",
+        "type": "object",
+        "description": "Top-level container for all toaster database objects.",
+        "properties": {},
+        "xml": {
+          "name": "toaster",
+          "namespace": "http://netconfcentral.org/ns/toaster2"
+        }
+      },
+      "typed-params_typed": {
+        "title": "typed-params_typed",
+        "type": "object",
+        "properties": {},
+        "xml": {
+          "name": "typed",
+          "namespace": "urn:typed-params"
+        }
+      }
+    },
+    "securitySchemes": {
+      "basicAuth": {
+        "scheme": "basic",
+        "type": "http"
+      }
+    }
+  },
+  "security": [
+    {
+      "basicAuth": []
+    }
+  ]
+}