code: @Override
      @Path("/{ownerType}/{ownerId}")
      @ApiOperation(value="Update attributes for an ownerType and ownerId", response=StatusMessage.class)
      @ApiImplicitParams({
          @ApiImplicitParam(name="Attributes", paramType="body", required=true, dataType="java.lang.Object")})
      public JSONObject put(String path, JSONObject content, Map<String,String> headers)
      throws ServiceException, JSONException {
          String ownerType = getSegment(path, 1);
          if (ownerType == null)
              throw new ServiceException(ServiceException.BAD_REQUEST, "Missing pathSegment: ownerType");
          String ownerId = getSegment(path, 2);
          if (ownerId == null)
              throw new ServiceException(ServiceException.BAD_REQUEST, "Missing pathSegment: ownerId");
  
          try {
              Map<String,String> attrs = JsonUtil.getMap(content);
              ServiceLocator.getWorkflowServices().updateAttributes(ownerType, Long.parseLong(ownerId), attrs);
              return null;
          }
          catch (NumberFormatException ex) {
              throw new ServiceException(ServiceException.BAD_REQUEST, "Invalid ownerId: " + ownerId);
          }
          catch (JSONException ex) {
              throw new ServiceException(ServiceException.INTERNAL_ERROR, ex.getMessage(), ex);
          }
      }
docs: Update attributes owner type and id (does not delete existing ones).