code: @Override
      public JSONObject post(String path, JSONObject content, Map<String, String> headers)
              throws ServiceException, JSONException {
          String[] segments = getSegments(path);
          if (segments.length == 2) {
              ServiceLocator.getAssetServices().createPackage(segments[1]);
              CacheRegistration.getInstance().refreshCache("PackageCache");
          }
          else if (segments.length == 3) {
              String asset = segments[1] + '/' + segments[2];
              if (segments[2].endsWith(".proc")) {
                  try {
                      Query query = getQuery(path, headers);
                      if (query.getFilter("template") == null)
                          query.setFilter("template", "new");
                      ServiceLocator.getWorkflowServices().createProcess(asset, query);
                  }
                  catch (IOException ex) {
                      throw new ServiceException(ServiceException.INTERNAL_ERROR, ex.getMessage());
                  }
              }
              else {
                  ServiceLocator.getAssetServices().createAsset(asset);
              }
          }
          else {
              throw new ServiceException(ServiceException.BAD_REQUEST, "Invalid path: " + path);
          }
          return null;
      }
docs: TODO: Content is ignored, and an empty asset is always created.