code: @Override
      public RestItem addItem(Request request,
                              String repositoryName,
                              String workspaceName,
                              String path,
                              String requestBody) throws RepositoryException {
          JsonNode requestBodyJSON = stringToJSONObject(requestBody);
  
          String parentAbsPath = parentPath(path);
          String newNodeName = newNodeName(path);
  
          Session session = getSession(request, repositoryName, workspaceName);
          Node parentNode = (Node) session.getItem(parentAbsPath);
          Node newNode = addNode(parentNode, newNodeName, requestBodyJSON);
  
          session.save();
          RestItem restNewNode = createRestItem(request, 0, session, newNode);
          return restNewNode;
      }
docs: Adds the content of the request as a node (or subtree of nodes) at the location specified by {@code path}.
  <p>
  The primary type and mixin type(s) may optionally be specified through the {@code jcr:primaryType} and
  {@code jcr:mixinTypes} properties.
  </p>
  
  @param request        the servlet request; may not be null or unauthenticated
  @param repositoryName the URL-encoded repository name
  @param workspaceName  the URL-encoded workspace name
  @param path           the path to the item
  @param requestBody    the JSON-encoded representation of the node or nodes to be added
  @return the JSON-encoded representation of the node or nodes that were added. This will differ from {@code requestBody} in
  that auto-created and protected properties (e.g., jcr:uuid) will be populated.
  @throws javax.jcr.RepositoryException if any other error occurs while interacting with the repository