code: protected void processLegacyRequest(HyperionContext hyperionContext)
      {
          EndpointRequest request = hyperionContext.getEndpointRequest();
          EndpointResponse response = hyperionContext.getEndpointResponse();
  
          ApiVersionPlugin<ApiObject<Serializable>,PersistentObject<Serializable>,Serializable> apiVersionPlugin = hyperionContext.getVersionPlugin();
          EntityPlugin plugin = hyperionContext.getEntityPlugin();
  
          PersistenceContext persistenceContext = buildPersistenceContext(hyperionContext);
  
          Set<String> fieldSet = persistenceContext.getRequestedFields();
          if(fieldSet != null)
              fieldSet.add("id");
  
          RequestContext<ApiObject<Serializable>> requestContext = null;
          try
          {
              requestContext = marshaller.unmarshallWithContext(request.getInputStream(), apiVersionPlugin.getApiClass());
          }
          catch (MarshallingException e)
          {
              throw new BadRequestException(messageSource.getErrorMessage(ERROR_READING_REQUEST, hyperionContext.getLocale(),
                      e.getMessage()),e);
          }
          ApiObject clientObject = requestContext.getRequestObject();
  
          List<Serializable> ids = convertIds(hyperionContext, plugin);
          if(ids.size() != 1)
              throw new BadRequestException(messageSource.getErrorMessage(ERROR_SINGLE_ID_REQUIRED,hyperionContext.getLocale()));
  
          persistenceContext.setProvidedFields(requestContext.getProvidedFields());
  
          ApiObject saved = (ApiObject) plugin.getPersistenceOperations().updateItems(
                  Collections.singletonList(clientObject),
                  persistenceContext).get(0);
  
          processChangeEvents(hyperionContext,persistenceContext);
  
          response.setResponseCode(200);
          hyperionContext.setResult(saved);
      }
docs: Process a legacy V1 request (single item)
  @param hyperionContext The context