test_class.declarator: security
test_class.modifier: @Autowired
      private
test_class.original_string: @Autowired
      private Security security;
test_class.type: Security
test_class.var_name: security
test_class.declarator: contentCache
test_class.modifier: @Autowired
      private
test_class.original_string: @Autowired
      private ContentCache contentCache;
test_class.type: ContentCache
test_class.var_name: contentCache
test_class.declarator: cacheKeyGenerator
test_class.modifier: @Autowired
      private
test_class.original_string: @Autowired
      private CacheKeyGenerator cacheKeyGenerator;
test_class.type: CacheKeyGenerator
test_class.var_name: cacheKeyGenerator
test_class.file: dataprep-api/src/test/java/org/talend/dataprep/api/service/PreparationAPITest.java
test_class.identifier: PreparationAPITest
test_class.superclass: extends ApiServiceTestBase
test_case.body: @Test
      public void testPreparationContentWithActions() throws Exception {
          // given
          final String preparationId =
                  testClient.createPreparationFromFile("dataset/dataset.csv", "testPreparationContentGet", home.getId());
          PreparationDTO preparation = getPreparationDetails(preparationId);
          List<String> steps = preparation.getSteps();
  
          assertThat(steps.size(), is(1));
          assertThat(steps.get(0), is(Step.ROOT_STEP.id()));
  
          // when
          testClient.applyActionFromFile(preparationId, "transformation/upper_case_firstname.json");
  
          // then
          final PreparationDTO preparationMessage = getPreparationDetails(preparationId);
          steps = preparationMessage.getSteps();
          assertThat(steps.size(), is(2));
          assertThat(steps.get(0), is(Step.ROOT_STEP.id()));
  
          // Request preparation content at different versions (preparation has 2 steps -> Root + Upper Case).
          assertThat(testClient.getPreparation(preparationId).asString(), sameJSONAsFile(PreparationAPITest.class
                  .getResourceAsStream("dataset/expected_dataset_firstname_uppercase_with_column.json")));
  
          assertThat(testClient.getPreparation(preparationId, "head").asString(), sameJSONAsFile(PreparationAPITest.class
                  .getResourceAsStream("dataset/expected_dataset_firstname_uppercase_with_column.json")));
  
          assertThat(testClient.getPreparation(preparationId, steps.get(0)).asString(), sameJSONAsFile(
                  PreparationAPITest.class.getResourceAsStream("dataset/expected_dataset_with_columns.json")));
  
          assertThat(testClient.getPreparation(preparationId, steps.get(1)).asString(),
                  sameJSONAsFile(PreparationAPITest.class
                          .getResourceAsStream("dataset/expected_dataset_firstname_uppercase_with_column.json")));
  
          assertThat(testClient.getPreparation(preparationId, "origin").asString(), sameJSONAsFile(
                  PreparationAPITest.class.getResourceAsStream("dataset/expected_dataset_with_columns.json")));
  
          assertThat(testClient.getPreparation(preparationId, Step.ROOT_STEP.id()).asString(), sameJSONAsFile(
                  PreparationAPITest.class.getResourceAsStream("dataset/expected_dataset_with_columns.json")));
      }
test_case.class_method_signature: PreparationAPITest.testPreparationContentWithActions()
test_case.full_signature: @Test public void testPreparationContentWithActions()
test_case.identifier: testPreparationContentWithActions
test_case.invocations: createPreparationFromFile getId getPreparationDetails getSteps assertThat size is assertThat get is id applyActionFromFile getPreparationDetails getSteps assertThat size is assertThat get is id assertThat asString getPreparation sameJSONAsFile getResourceAsStream assertThat asString getPreparation sameJSONAsFile getResourceAsStream assertThat asString getPreparation get sameJSONAsFile getResourceAsStream assertThat asString getPreparation get sameJSONAsFile getResourceAsStream assertThat asString getPreparation sameJSONAsFile getResourceAsStream assertThat asString getPreparation id sameJSONAsFile getResourceAsStream
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void testPreparationContentWithActions()
focal_class.declarator: dataSetAPI
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private DataSetAPI dataSetAPI;
focal_class.type: DataSetAPI
focal_class.var_name: dataSetAPI
focal_class.declarator: datasetClient
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private DatasetClient datasetClient;
focal_class.type: DatasetClient
focal_class.var_name: datasetClient
focal_class.declarator: registry
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private ActionRegistry registry;
focal_class.type: ActionRegistry
focal_class.var_name: registry
focal_class.declarator: injectorUtil
focal_class.modifier: @Autowired
      private
focal_class.original_string: @Autowired
      private InjectorUtil injectorUtil;
focal_class.type: InjectorUtil
focal_class.var_name: injectorUtil
focal_class.file: dataprep-api/src/main/java/org/talend/dataprep/api/service/PreparationAPI.java
focal_class.identifier: PreparationAPI
focal_class.class_method_signature: PreparationAPI.listPreparations(
              @ApiParam(name = "name",
                      value = "Filter preparations by name.") @RequestParam(required = false) String name,
              @ApiParam(name = "folder_path", value = "Filter preparations by its folder path.") @RequestParam(
                      required = false, name = "folder_path") String folderPath,
              @ApiParam(name = "path",
                      value = "Filter preparations by full path. Should always return one preparation") @RequestParam(
                              required = false, name = "path") String path,
              @ApiParam(value = "Sort key, defaults to 'modification'.") @RequestParam(
                      defaultValue = "lastModificationDate") Sort sort,
              @ApiParam(value = "Order for sort key (desc or asc), defaults to 'desc'.") @RequestParam(
                      defaultValue = "desc") Order order)
focal_class.full_signature: @RequestMapping(value = "/api/preparations", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get all preparations.", notes = "Returns the list of preparations the current user is allowed to see.") @Timed public Stream<PreparationListItemDTO> listPreparations(
              @ApiParam(name = "name",
                      value = "Filter preparations by name.") @RequestParam(required = false) String name,
              @ApiParam(name = "folder_path", value = "Filter preparations by its folder path.") @RequestParam(
                      required = false, name = "folder_path") String folderPath,
              @ApiParam(name = "path",
                      value = "Filter preparations by full path. Should always return one preparation") @RequestParam(
                              required = false, name = "path") String path,
              @ApiParam(value = "Sort key, defaults to 'modification'.") @RequestParam(
                      defaultValue = "lastModificationDate") Sort sort,
              @ApiParam(value = "Order for sort key (desc or asc), defaults to 'desc'.") @RequestParam(
                      defaultValue = "desc") Order order)
focal_class.identifier: listPreparations
focal_class.modifiers: @RequestMapping(value = "/api/preparations", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get all preparations.", notes = "Returns the list of preparations the current user is allowed to see.") @Timed public
focal_class.parameters: (
              @ApiParam(name = "name",
                      value = "Filter preparations by name.") @RequestParam(required = false) String name,
              @ApiParam(name = "folder_path", value = "Filter preparations by its folder path.") @RequestParam(
                      required = false, name = "folder_path") String folderPath,
              @ApiParam(name = "path",
                      value = "Filter preparations by full path. Should always return one preparation") @RequestParam(
                              required = false, name = "path") String path,
              @ApiParam(value = "Sort key, defaults to 'modification'.") @RequestParam(
                      defaultValue = "lastModificationDate") Sort sort,
              @ApiParam(value = "Order for sort key (desc or asc), defaults to 'desc'.") @RequestParam(
                      defaultValue = "desc") Order order)
focal_class.return: Stream<PreparationListItemDTO>
focal_class.signature: Stream<PreparationListItemDTO> listPreparations(
              @ApiParam(name = "name",
                      value = "Filter preparations by name.") @RequestParam(required = false) String name,
              @ApiParam(name = "folder_path", value = "Filter preparations by its folder path.") @RequestParam(
                      required = false, name = "folder_path") String folderPath,
              @ApiParam(name = "path",
                      value = "Filter preparations by full path. Should always return one preparation") @RequestParam(
                              required = false, name = "path") String path,
              @ApiParam(value = "Sort key, defaults to 'modification'.") @RequestParam(
                      defaultValue = "lastModificationDate") Sort sort,
              @ApiParam(value = "Order for sort key (desc or asc), defaults to 'desc'.") @RequestParam(
                      defaultValue = "desc") Order order)
focal_class.class_method_signature: PreparationAPI.createPreparation(
              @ApiParam(name = "folder", value = "Where to store the preparation.") @RequestParam(value = "folder") String folder,
              @ApiParam(name = "body", value = "The original preparation. You may set all values, service will override values you can't write to.") @RequestBody Preparation preparation)
focal_class.full_signature: @RequestMapping(value = "/api/preparations", method = POST, produces = TEXT_PLAIN_VALUE) @ApiOperation(value = "Create a new preparation for preparation content in body.", notes = "Returns the created preparation id.") @Timed public String createPreparation(
              @ApiParam(name = "folder", value = "Where to store the preparation.") @RequestParam(value = "folder") String folder,
              @ApiParam(name = "body", value = "The original preparation. You may set all values, service will override values you can't write to.") @RequestBody Preparation preparation)
focal_class.identifier: createPreparation
focal_class.modifiers: @RequestMapping(value = "/api/preparations", method = POST, produces = TEXT_PLAIN_VALUE) @ApiOperation(value = "Create a new preparation for preparation content in body.", notes = "Returns the created preparation id.") @Timed public
focal_class.parameters: (
              @ApiParam(name = "folder", value = "Where to store the preparation.") @RequestParam(value = "folder") String folder,
              @ApiParam(name = "body", value = "The original preparation. You may set all values, service will override values you can't write to.") @RequestBody Preparation preparation)
focal_class.return: String
focal_class.signature: String createPreparation(
              @ApiParam(name = "folder", value = "Where to store the preparation.") @RequestParam(value = "folder") String folder,
              @ApiParam(name = "body", value = "The original preparation. You may set all values, service will override values you can't write to.") @RequestBody Preparation preparation)
focal_class.class_method_signature: PreparationAPI.updatePreparation(
              @ApiParam(name = "id", value = "The id of the preparation to update.") @PathVariable("id") String id,
              @ApiParam(name = "body",
                      value = "The updated preparation. Null values are ignored during update. You may set all values, service will override values you can't write to.") @RequestBody PreparationDTO preparation)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{id}", method = PUT, consumes = APPLICATION_JSON_VALUE, produces = TEXT_PLAIN_VALUE) @ApiOperation(value = "Update a preparation with content in body.", notes = "Returns the updated preparation id.") @Timed public String updatePreparation(
              @ApiParam(name = "id", value = "The id of the preparation to update.") @PathVariable("id") String id,
              @ApiParam(name = "body",
                      value = "The updated preparation. Null values are ignored during update. You may set all values, service will override values you can't write to.") @RequestBody PreparationDTO preparation)
focal_class.identifier: updatePreparation
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{id}", method = PUT, consumes = APPLICATION_JSON_VALUE, produces = TEXT_PLAIN_VALUE) @ApiOperation(value = "Update a preparation with content in body.", notes = "Returns the updated preparation id.") @Timed public
focal_class.parameters: (
              @ApiParam(name = "id", value = "The id of the preparation to update.") @PathVariable("id") String id,
              @ApiParam(name = "body",
                      value = "The updated preparation. Null values are ignored during update. You may set all values, service will override values you can't write to.") @RequestBody PreparationDTO preparation)
focal_class.return: String
focal_class.signature: String updatePreparation(
              @ApiParam(name = "id", value = "The id of the preparation to update.") @PathVariable("id") String id,
              @ApiParam(name = "body",
                      value = "The updated preparation. Null values are ignored during update. You may set all values, service will override values you can't write to.") @RequestBody PreparationDTO preparation)
focal_class.class_method_signature: PreparationAPI.deletePreparation(
              @ApiParam(name = "id", value = "The id of the preparation to delete.") @PathVariable("id") String id)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{id}", method = DELETE, produces = TEXT_PLAIN_VALUE) @ApiOperation(value = "Delete a preparation by id", notes = "Delete a preparation content based on provided id. Id should be a UUID returned by the list operation. Not valid or non existing preparation id returns empty content.") @Timed public String deletePreparation(
              @ApiParam(name = "id", value = "The id of the preparation to delete.") @PathVariable("id") String id)
focal_class.identifier: deletePreparation
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{id}", method = DELETE, produces = TEXT_PLAIN_VALUE) @ApiOperation(value = "Delete a preparation by id", notes = "Delete a preparation content based on provided id. Id should be a UUID returned by the list operation. Not valid or non existing preparation id returns empty content.") @Timed public
focal_class.parameters: (
              @ApiParam(name = "id", value = "The id of the preparation to delete.") @PathVariable("id") String id)
focal_class.return: String
focal_class.signature: String deletePreparation(
              @ApiParam(name = "id", value = "The id of the preparation to delete.") @PathVariable("id") String id)
focal_class.class_method_signature: PreparationAPI.copy(
              @ApiParam(value = "Id of the preparation to copy") @PathVariable(value = "id") String id,
              @ApiParam(value = "Optional new name of the copied preparation, if not set the copy will get the original name.") @RequestParam(required = false) String newName,
              @ApiParam(value = "The destination path to create the entry.") @RequestParam(required = false) String destination)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{id}/copy", method = POST, produces = TEXT_PLAIN_VALUE) @ApiOperation(value = "Copy a preparation", produces = TEXT_PLAIN_VALUE, notes = "Copy a preparation based the provided id.") public String copy(
              @ApiParam(value = "Id of the preparation to copy") @PathVariable(value = "id") String id,
              @ApiParam(value = "Optional new name of the copied preparation, if not set the copy will get the original name.") @RequestParam(required = false) String newName,
              @ApiParam(value = "The destination path to create the entry.") @RequestParam(required = false) String destination)
focal_class.identifier: copy
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{id}/copy", method = POST, produces = TEXT_PLAIN_VALUE) @ApiOperation(value = "Copy a preparation", produces = TEXT_PLAIN_VALUE, notes = "Copy a preparation based the provided id.") public
focal_class.parameters: (
              @ApiParam(value = "Id of the preparation to copy") @PathVariable(value = "id") String id,
              @ApiParam(value = "Optional new name of the copied preparation, if not set the copy will get the original name.") @RequestParam(required = false) String newName,
              @ApiParam(value = "The destination path to create the entry.") @RequestParam(required = false) String destination)
focal_class.return: String
focal_class.signature: String copy(
              @ApiParam(value = "Id of the preparation to copy") @PathVariable(value = "id") String id,
              @ApiParam(value = "Optional new name of the copied preparation, if not set the copy will get the original name.") @RequestParam(required = false) String newName,
              @ApiParam(value = "The destination path to create the entry.") @RequestParam(required = false) String destination)
focal_class.class_method_signature: PreparationAPI.move(@PathVariable(value = "id") @ApiParam(name = "id", value = "Id of the preparation to move") String id,
                       @ApiParam(value = "The original folder path of the preparation.") @RequestParam(defaultValue = "", required = false) String folder,
                       @ApiParam(value = "The new folder path of the preparation.") @RequestParam() String destination,
                       @ApiParam(value = "The new name of the moved dataset.") @RequestParam(defaultValue = "", required = false) String newName)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{id}/move", method = PUT) @ApiOperation(value = "Move a Preparation", notes = "Move a preparation to another folder.") @Timed public void move(@PathVariable(value = "id") @ApiParam(name = "id", value = "Id of the preparation to move") String id,
                       @ApiParam(value = "The original folder path of the preparation.") @RequestParam(defaultValue = "", required = false) String folder,
                       @ApiParam(value = "The new folder path of the preparation.") @RequestParam() String destination,
                       @ApiParam(value = "The new name of the moved dataset.") @RequestParam(defaultValue = "", required = false) String newName)
focal_class.identifier: move
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{id}/move", method = PUT) @ApiOperation(value = "Move a Preparation", notes = "Move a preparation to another folder.") @Timed public
focal_class.parameters: (@PathVariable(value = "id") @ApiParam(name = "id", value = "Id of the preparation to move") String id,
                       @ApiParam(value = "The original folder path of the preparation.") @RequestParam(defaultValue = "", required = false) String folder,
                       @ApiParam(value = "The new folder path of the preparation.") @RequestParam() String destination,
                       @ApiParam(value = "The new name of the moved dataset.") @RequestParam(defaultValue = "", required = false) String newName)
focal_class.return: void
focal_class.signature: void move(@PathVariable(value = "id") @ApiParam(name = "id", value = "Id of the preparation to move") String id,
                       @ApiParam(value = "The original folder path of the preparation.") @RequestParam(defaultValue = "", required = false) String folder,
                       @ApiParam(value = "The new folder path of the preparation.") @RequestParam() String destination,
                       @ApiParam(value = "The new name of the moved dataset.") @RequestParam(defaultValue = "", required = false) String newName)
focal_class.class_method_signature: PreparationAPI.getPreparation(
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "stepId", defaultValue = "head") @ApiParam(name = "stepId",
                      value = "optional step id", defaultValue = "head") String stepId)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{id}/details", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get a preparation by id and details.", notes = "Returns the preparation details.") @Timed public PreparationDetailsDTO getPreparation(
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "stepId", defaultValue = "head") @ApiParam(name = "stepId",
                      value = "optional step id", defaultValue = "head") String stepId)
focal_class.identifier: getPreparation
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{id}/details", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get a preparation by id and details.", notes = "Returns the preparation details.") @Timed public
focal_class.parameters: (
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "stepId", defaultValue = "head") @ApiParam(name = "stepId",
                      value = "optional step id", defaultValue = "head") String stepId)
focal_class.return: PreparationDetailsDTO
focal_class.signature: PreparationDetailsDTO getPreparation(
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "stepId", defaultValue = "head") @ApiParam(name = "stepId",
                      value = "optional step id", defaultValue = "head") String stepId)
focal_class.class_method_signature: PreparationAPI.getPreparationSummary(
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "stepId", defaultValue = "head") @ApiParam(name = "stepId",
                      value = "optional step id", defaultValue = "head") String stepId)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{id}/summary", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get a preparation by id and details.", notes = "Returns the preparation details.") @Timed public PreparationDTO getPreparationSummary(
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "stepId", defaultValue = "head") @ApiParam(name = "stepId",
                      value = "optional step id", defaultValue = "head") String stepId)
focal_class.identifier: getPreparationSummary
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{id}/summary", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get a preparation by id and details.", notes = "Returns the preparation details.") @Timed public
focal_class.parameters: (
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "stepId", defaultValue = "head") @ApiParam(name = "stepId",
                      value = "optional step id", defaultValue = "head") String stepId)
focal_class.return: PreparationDTO
focal_class.signature: PreparationDTO getPreparationSummary(
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "stepId", defaultValue = "head") @ApiParam(name = "stepId",
                      value = "optional step id", defaultValue = "head") String stepId)
focal_class.class_method_signature: PreparationAPI.getPreparation( //
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "version", defaultValue = "head") @ApiParam(name = "version",
                      value = "Version of the preparation (can be 'origin', 'head' or the version id). Defaults to 'head'.") String version,
              @RequestParam(value = "from", defaultValue = "HEAD") @ApiParam(name = "from",
                      value = "Where to get the data from") ExportParameters.SourceType from,
              @RequestParam(value = "filter", required = false) @ApiParam(name = "filter",
                      value = "A filter apply on the content") String filter)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{id}/content", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get preparation content by id and at a given version.", notes = "Returns the preparation content at version.") @Timed public ResponseEntity<StreamingResponseBody> getPreparation( //
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "version", defaultValue = "head") @ApiParam(name = "version",
                      value = "Version of the preparation (can be 'origin', 'head' or the version id). Defaults to 'head'.") String version,
              @RequestParam(value = "from", defaultValue = "HEAD") @ApiParam(name = "from",
                      value = "Where to get the data from") ExportParameters.SourceType from,
              @RequestParam(value = "filter", required = false) @ApiParam(name = "filter",
                      value = "A filter apply on the content") String filter)
focal_class.identifier: getPreparation
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{id}/content", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get preparation content by id and at a given version.", notes = "Returns the preparation content at version.") @Timed public
focal_class.parameters: ( //
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "version", defaultValue = "head") @ApiParam(name = "version",
                      value = "Version of the preparation (can be 'origin', 'head' or the version id). Defaults to 'head'.") String version,
              @RequestParam(value = "from", defaultValue = "HEAD") @ApiParam(name = "from",
                      value = "Where to get the data from") ExportParameters.SourceType from,
              @RequestParam(value = "filter", required = false) @ApiParam(name = "filter",
                      value = "A filter apply on the content") String filter)
focal_class.return: ResponseEntity<StreamingResponseBody>
focal_class.signature: ResponseEntity<StreamingResponseBody> getPreparation( //
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "version", defaultValue = "head") @ApiParam(name = "version",
                      value = "Version of the preparation (can be 'origin', 'head' or the version id). Defaults to 'head'.") String version,
              @RequestParam(value = "from", defaultValue = "HEAD") @ApiParam(name = "from",
                      value = "Where to get the data from") ExportParameters.SourceType from,
              @RequestParam(value = "filter", required = false) @ApiParam(name = "filter",
                      value = "A filter apply on the content") String filter)
focal_class.class_method_signature: PreparationAPI.getPreparationMetadata( //
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "version", defaultValue = "head") @ApiParam(name = "version",
                      value = "Version of the preparation (can be 'origin', 'head' or the version id). Defaults to 'head'.") String version)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{id}/metadata", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get preparation metadata by id and at a given version.", notes = "Returns the preparation metadata at version.") @Timed public ResponseEntity<DataSetMetadata> getPreparationMetadata( //
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "version", defaultValue = "head") @ApiParam(name = "version",
                      value = "Version of the preparation (can be 'origin', 'head' or the version id). Defaults to 'head'.") String version)
focal_class.identifier: getPreparationMetadata
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{id}/metadata", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get preparation metadata by id and at a given version.", notes = "Returns the preparation metadata at version.") @Timed public
focal_class.parameters: ( //
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "version", defaultValue = "head") @ApiParam(name = "version",
                      value = "Version of the preparation (can be 'origin', 'head' or the version id). Defaults to 'head'.") String version)
focal_class.return: ResponseEntity<DataSetMetadata>
focal_class.signature: ResponseEntity<DataSetMetadata> getPreparationMetadata( //
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "version", defaultValue = "head") @ApiParam(name = "version",
                      value = "Version of the preparation (can be 'origin', 'head' or the version id). Defaults to 'head'.") String version)
focal_class.class_method_signature: PreparationAPI.addPreparationAction(
              @ApiParam(name = "id", value = "Preparation id.") @PathVariable(value = "id") final String preparationId,
              @ApiParam("Action to add at end of the preparation.") @RequestBody final AppendStep actionsContainer)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{id}/actions", method = POST, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Adds an action at the end of preparation.", notes = "Does not return any value, client may expect successful operation based on HTTP status code.") @Timed public void addPreparationAction(
              @ApiParam(name = "id", value = "Preparation id.") @PathVariable(value = "id") final String preparationId,
              @ApiParam("Action to add at end of the preparation.") @RequestBody final AppendStep actionsContainer)
focal_class.identifier: addPreparationAction
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{id}/actions", method = POST, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Adds an action at the end of preparation.", notes = "Does not return any value, client may expect successful operation based on HTTP status code.") @Timed public
focal_class.parameters: (
              @ApiParam(name = "id", value = "Preparation id.") @PathVariable(value = "id") final String preparationId,
              @ApiParam("Action to add at end of the preparation.") @RequestBody final AppendStep actionsContainer)
focal_class.return: void
focal_class.signature: void addPreparationAction(
              @ApiParam(name = "id", value = "Preparation id.") @PathVariable(value = "id") final String preparationId,
              @ApiParam("Action to add at end of the preparation.") @RequestBody final AppendStep actionsContainer)
focal_class.class_method_signature: PreparationAPI.updatePreparationAction(@ApiParam(name = "preparationId", value = "Preparation id.") @PathVariable(value = "preparationId") final String preparationId,
                                          @ApiParam(name = "stepId", value = "Step id in the preparation.") @PathVariable(value = "stepId") final String stepId,
                                          @ApiParam("New content for the action.") @RequestBody final AppendStep step)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{preparationId}/actions/{stepId}", method = PUT, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Updates an action in the preparation.", notes = "Does not return any value, client may expect successful operation based on HTTP status code.") @Timed public void updatePreparationAction(@ApiParam(name = "preparationId", value = "Preparation id.") @PathVariable(value = "preparationId") final String preparationId,
                                          @ApiParam(name = "stepId", value = "Step id in the preparation.") @PathVariable(value = "stepId") final String stepId,
                                          @ApiParam("New content for the action.") @RequestBody final AppendStep step)
focal_class.identifier: updatePreparationAction
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{preparationId}/actions/{stepId}", method = PUT, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Updates an action in the preparation.", notes = "Does not return any value, client may expect successful operation based on HTTP status code.") @Timed public
focal_class.parameters: (@ApiParam(name = "preparationId", value = "Preparation id.") @PathVariable(value = "preparationId") final String preparationId,
                                          @ApiParam(name = "stepId", value = "Step id in the preparation.") @PathVariable(value = "stepId") final String stepId,
                                          @ApiParam("New content for the action.") @RequestBody final AppendStep step)
focal_class.return: void
focal_class.signature: void updatePreparationAction(@ApiParam(name = "preparationId", value = "Preparation id.") @PathVariable(value = "preparationId") final String preparationId,
                                          @ApiParam(name = "stepId", value = "Step id in the preparation.") @PathVariable(value = "stepId") final String stepId,
                                          @ApiParam("New content for the action.") @RequestBody final AppendStep step)
focal_class.class_method_signature: PreparationAPI.deletePreparationAction(
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") final String preparationId,
              @PathVariable(value = "stepId") @ApiParam(name = "stepId",
                      value = "Step id to delete.") final String stepId)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{id}/actions/{stepId}", method = DELETE, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Delete an action in the preparation.", notes = "Does not return any value, client may expect successful operation based on HTTP status code.") @Timed public void deletePreparationAction(
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") final String preparationId,
              @PathVariable(value = "stepId") @ApiParam(name = "stepId",
                      value = "Step id to delete.") final String stepId)
focal_class.identifier: deletePreparationAction
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{id}/actions/{stepId}", method = DELETE, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Delete an action in the preparation.", notes = "Does not return any value, client may expect successful operation based on HTTP status code.") @Timed public
focal_class.parameters: (
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") final String preparationId,
              @PathVariable(value = "stepId") @ApiParam(name = "stepId",
                      value = "Step id to delete.") final String stepId)
focal_class.return: void
focal_class.signature: void deletePreparationAction(
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") final String preparationId,
              @PathVariable(value = "stepId") @ApiParam(name = "stepId",
                      value = "Step id to delete.") final String stepId)
focal_class.class_method_signature: PreparationAPI.setPreparationHead(@PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") final String preparationId,
                                     @PathVariable(value = "headId") @ApiParam(name = "headId", value = "New head step id") final String headId)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{id}/head/{headId}", method = PUT) @ApiOperation(value = "Changes the head of the preparation.", notes = "Does not return any value, client may expect successful operation based on HTTP status code.") @Timed public void setPreparationHead(@PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") final String preparationId,
                                     @PathVariable(value = "headId") @ApiParam(name = "headId", value = "New head step id") final String headId)
focal_class.identifier: setPreparationHead
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{id}/head/{headId}", method = PUT) @ApiOperation(value = "Changes the head of the preparation.", notes = "Does not return any value, client may expect successful operation based on HTTP status code.") @Timed public
focal_class.parameters: (@PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") final String preparationId,
                                     @PathVariable(value = "headId") @ApiParam(name = "headId", value = "New head step id") final String headId)
focal_class.return: void
focal_class.signature: void setPreparationHead(@PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") final String preparationId,
                                     @PathVariable(value = "headId") @ApiParam(name = "headId", value = "New head step id") final String headId)
focal_class.class_method_signature: PreparationAPI.lockPreparation(@PathVariable(value = "preparationId") @ApiParam(name = "preparationId",
              value = "Preparation id.") final String preparationId)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{preparationId}/lock", method = PUT, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Mark a preparation as locked by a user.", notes = "Does not return any value, client may expect successful operation based on HTTP status code.") @Timed public void lockPreparation(@PathVariable(value = "preparationId") @ApiParam(name = "preparationId",
              value = "Preparation id.") final String preparationId)
focal_class.identifier: lockPreparation
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{preparationId}/lock", method = PUT, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Mark a preparation as locked by a user.", notes = "Does not return any value, client may expect successful operation based on HTTP status code.") @Timed public
focal_class.parameters: (@PathVariable(value = "preparationId") @ApiParam(name = "preparationId",
              value = "Preparation id.") final String preparationId)
focal_class.return: void
focal_class.signature: void lockPreparation(@PathVariable(value = "preparationId") @ApiParam(name = "preparationId",
              value = "Preparation id.") final String preparationId)
focal_class.class_method_signature: PreparationAPI.unlockPreparation(@PathVariable(value = "preparationId") @ApiParam(name = "preparationId",
              value = "Preparation id.") final String preparationId)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{preparationId}/unlock", method = PUT, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Mark a preparation as unlocked by a user.", notes = "Does not return any value, client may expect successful operation based on HTTP status code.") @Timed public void unlockPreparation(@PathVariable(value = "preparationId") @ApiParam(name = "preparationId",
              value = "Preparation id.") final String preparationId)
focal_class.identifier: unlockPreparation
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{preparationId}/unlock", method = PUT, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Mark a preparation as unlocked by a user.", notes = "Does not return any value, client may expect successful operation based on HTTP status code.") @Timed public
focal_class.parameters: (@PathVariable(value = "preparationId") @ApiParam(name = "preparationId",
              value = "Preparation id.") final String preparationId)
focal_class.return: void
focal_class.signature: void unlockPreparation(@PathVariable(value = "preparationId") @ApiParam(name = "preparationId",
              value = "Preparation id.") final String preparationId)
focal_class.class_method_signature: PreparationAPI.copyStepsFrom(@ApiParam(value="the preparation id to update") @PathVariable("id")String id,
                                @ApiParam(value = "the preparation to copy the steps from.") @RequestParam String from)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{id}/steps/copy", method = PUT) @ApiOperation(value = "Copy the steps from another preparation", notes = "Copy the steps from another preparation if this one has no steps.") @Timed public void copyStepsFrom(@ApiParam(value="the preparation id to update") @PathVariable("id")String id,
                                @ApiParam(value = "the preparation to copy the steps from.") @RequestParam String from)
focal_class.identifier: copyStepsFrom
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{id}/steps/copy", method = PUT) @ApiOperation(value = "Copy the steps from another preparation", notes = "Copy the steps from another preparation if this one has no steps.") @Timed public
focal_class.parameters: (@ApiParam(value="the preparation id to update") @PathVariable("id")String id,
                                @ApiParam(value = "the preparation to copy the steps from.") @RequestParam String from)
focal_class.return: void
focal_class.signature: void copyStepsFrom(@ApiParam(value="the preparation id to update") @PathVariable("id")String id,
                                @ApiParam(value = "the preparation to copy the steps from.") @RequestParam String from)
focal_class.class_method_signature: PreparationAPI.moveStep(@PathVariable("preparationId") final String preparationId,
              @ApiParam(value = "The current index of the action we want to move.") @PathVariable("stepId") String stepId,
              @ApiParam(value = "The current index of the action we want to move.") @RequestParam String parentStepId)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{preparationId}/steps/{stepId}/order", method = POST, consumes = APPLICATION_JSON_VALUE) @ApiOperation(value = "Moves a step within a preparation just after the specified <i>parentStepId</i>", notes = "Moves a step within a preparation.") @Timed public void moveStep(@PathVariable("preparationId") final String preparationId,
              @ApiParam(value = "The current index of the action we want to move.") @PathVariable("stepId") String stepId,
              @ApiParam(value = "The current index of the action we want to move.") @RequestParam String parentStepId)
focal_class.identifier: moveStep
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{preparationId}/steps/{stepId}/order", method = POST, consumes = APPLICATION_JSON_VALUE) @ApiOperation(value = "Moves a step within a preparation just after the specified <i>parentStepId</i>", notes = "Moves a step within a preparation.") @Timed public
focal_class.parameters: (@PathVariable("preparationId") final String preparationId,
              @ApiParam(value = "The current index of the action we want to move.") @PathVariable("stepId") String stepId,
              @ApiParam(value = "The current index of the action we want to move.") @RequestParam String parentStepId)
focal_class.return: void
focal_class.signature: void moveStep(@PathVariable("preparationId") final String preparationId,
              @ApiParam(value = "The current index of the action we want to move.") @PathVariable("stepId") String stepId,
              @ApiParam(value = "The current index of the action we want to move.") @RequestParam String parentStepId)
focal_class.class_method_signature: PreparationAPI.previewDiff(@RequestBody final PreviewDiffParameters input)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/preview/diff", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get a preview diff between 2 steps of the same preparation.") @Timed public StreamingResponseBody previewDiff(@RequestBody final PreviewDiffParameters input)
focal_class.identifier: previewDiff
focal_class.modifiers: @RequestMapping(value = "/api/preparations/preview/diff", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get a preview diff between 2 steps of the same preparation.") @Timed public
focal_class.parameters: (@RequestBody final PreviewDiffParameters input)
focal_class.return: StreamingResponseBody
focal_class.signature: StreamingResponseBody previewDiff(@RequestBody final PreviewDiffParameters input)
focal_class.class_method_signature: PreparationAPI.previewUpdate(@RequestBody final PreviewUpdateParameters input)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/preview/update", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get a preview diff between the same step of the same preparation but with one step update.") public StreamingResponseBody previewUpdate(@RequestBody final PreviewUpdateParameters input)
focal_class.identifier: previewUpdate
focal_class.modifiers: @RequestMapping(value = "/api/preparations/preview/update", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get a preview diff between the same step of the same preparation but with one step update.") public
focal_class.parameters: (@RequestBody final PreviewUpdateParameters input)
focal_class.return: StreamingResponseBody
focal_class.signature: StreamingResponseBody previewUpdate(@RequestBody final PreviewUpdateParameters input)
focal_class.class_method_signature: PreparationAPI.previewAdd(@RequestBody @Valid final PreviewAddParameters input)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/preview/add", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get a preview between the head step and a new appended transformation") public StreamingResponseBody previewAdd(@RequestBody @Valid final PreviewAddParameters input)
focal_class.identifier: previewAdd
focal_class.modifiers: @RequestMapping(value = "/api/preparations/preview/add", method = POST, consumes = APPLICATION_JSON_VALUE, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get a preview between the head step and a new appended transformation") public
focal_class.parameters: (@RequestBody @Valid final PreviewAddParameters input)
focal_class.return: StreamingResponseBody
focal_class.signature: StreamingResponseBody previewAdd(@RequestBody @Valid final PreviewAddParameters input)
focal_class.class_method_signature: PreparationAPI.executePreviewCommand(HystrixCommand<InputStream> transformation)
focal_class.full_signature: private StreamingResponseBody executePreviewCommand(HystrixCommand<InputStream> transformation)
focal_class.identifier: executePreviewCommand
focal_class.modifiers: private
focal_class.parameters: (HystrixCommand<InputStream> transformation)
focal_class.return: StreamingResponseBody
focal_class.signature: StreamingResponseBody executePreviewCommand(HystrixCommand<InputStream> transformation)
focal_class.class_method_signature: PreparationAPI.getPreparationColumnSemanticCategories(
              @ApiParam(value = "The preparation id") @PathVariable String preparationId,
              @ApiParam(value = "The column id") @PathVariable String columnId,
              @ApiParam(value = "The preparation version") @RequestParam(defaultValue = "head") String stepId)
focal_class.full_signature: @RequestMapping(value = "/api/preparations/{preparationId}/columns/{columnId}/types", method = GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "list the types of the wanted column", notes = "This list can be used by user to change the column type.") @Timed @PublicAPI public ResponseEntity<StreamingResponseBody> getPreparationColumnSemanticCategories(
              @ApiParam(value = "The preparation id") @PathVariable String preparationId,
              @ApiParam(value = "The column id") @PathVariable String columnId,
              @ApiParam(value = "The preparation version") @RequestParam(defaultValue = "head") String stepId)
focal_class.identifier: getPreparationColumnSemanticCategories
focal_class.modifiers: @RequestMapping(value = "/api/preparations/{preparationId}/columns/{columnId}/types", method = GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "list the types of the wanted column", notes = "This list can be used by user to change the column type.") @Timed @PublicAPI public
focal_class.parameters: (
              @ApiParam(value = "The preparation id") @PathVariable String preparationId,
              @ApiParam(value = "The column id") @PathVariable String columnId,
              @ApiParam(value = "The preparation version") @RequestParam(defaultValue = "head") String stepId)
focal_class.return: ResponseEntity<StreamingResponseBody>
focal_class.signature: ResponseEntity<StreamingResponseBody> getPreparationColumnSemanticCategories(
              @ApiParam(value = "The preparation id") @PathVariable String preparationId,
              @ApiParam(value = "The column id") @PathVariable String columnId,
              @ApiParam(value = "The preparation version") @RequestParam(defaultValue = "head") String stepId)
focal_class.class_method_signature: PreparationAPI.internalGetActions(String preparationId)
focal_class.full_signature: private List<Action> internalGetActions(String preparationId)
focal_class.identifier: internalGetActions
focal_class.modifiers: private
focal_class.parameters: (String preparationId)
focal_class.return: List<Action>
focal_class.signature: List<Action> internalGetActions(String preparationId)
focal_class.class_method_signature: PreparationAPI.internalGetActions(String preparationId, String stepId)
focal_class.full_signature: private List<Action> internalGetActions(String preparationId, String stepId)
focal_class.identifier: internalGetActions
focal_class.modifiers: private
focal_class.parameters: (String preparationId, String stepId)
focal_class.return: List<Action>
focal_class.signature: List<Action> internalGetActions(String preparationId, String stepId)
focal_class.class_method_signature: PreparationAPI.internalGetPreparation(String preparationId)
focal_class.full_signature: private PreparationDTO internalGetPreparation(String preparationId)
focal_class.identifier: internalGetPreparation
focal_class.modifiers: private
focal_class.parameters: (String preparationId)
focal_class.return: PreparationDTO
focal_class.signature: PreparationDTO internalGetPreparation(String preparationId)
focal_class.class_method_signature: PreparationAPI.isHeadStepDependingOnDeletedDataSet(String preparationId, String stepId)
focal_class.full_signature: private boolean isHeadStepDependingOnDeletedDataSet(String preparationId, String stepId)
focal_class.identifier: isHeadStepDependingOnDeletedDataSet
focal_class.modifiers: private
focal_class.parameters: (String preparationId, String stepId)
focal_class.return: boolean
focal_class.signature: boolean isHeadStepDependingOnDeletedDataSet(String preparationId, String stepId)
focal_class.superclass: extends APIService
focal_method.body: @RequestMapping(value = "/api/preparations/{id}/details", method = RequestMethod.GET,
              produces = APPLICATION_JSON_VALUE)
      @ApiOperation(value = "Get a preparation by id and details.", notes = "Returns the preparation details.")
      @Timed
      public PreparationDetailsDTO getPreparation(
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "stepId", defaultValue = "head") @ApiParam(name = "stepId",
                      value = "optional step id", defaultValue = "head") String stepId) {
          if (LOG.isDebugEnabled()) {
              LOG.debug("Retrieving preparation details (pool: {} )...", getConnectionStats());
          }
  
          try {
              return getCommand(PreparationDetailsGet.class, preparationId, stepId).execute();
          } catch (Exception e) {
              LOG.error("Unable to get preparation {}", preparationId, e);
              throw new TDPException(APIErrorCodes.UNABLE_TO_GET_PREPARATION_DETAILS, e);
          } finally {
              if (LOG.isDebugEnabled()) {
                  LOG.debug("Retrieved preparation details (pool: {} )...", getConnectionStats());
              }
              LOG.info("Preparation {} retrieved", preparationId);
          }
      }
focal_method.class_method_signature: PreparationAPI.getPreparation(
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "stepId", defaultValue = "head") @ApiParam(name = "stepId",
                      value = "optional step id", defaultValue = "head") String stepId)
focal_method.full_signature: @RequestMapping(value = "/api/preparations/{id}/details", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get a preparation by id and details.", notes = "Returns the preparation details.") @Timed public PreparationDetailsDTO getPreparation(
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "stepId", defaultValue = "head") @ApiParam(name = "stepId",
                      value = "optional step id", defaultValue = "head") String stepId)
focal_method.identifier: getPreparation
focal_method.invocations: isDebugEnabled debug getConnectionStats execute getCommand error isDebugEnabled debug getConnectionStats info
focal_method.modifiers: @RequestMapping(value = "/api/preparations/{id}/details", method = RequestMethod.GET, produces = APPLICATION_JSON_VALUE) @ApiOperation(value = "Get a preparation by id and details.", notes = "Returns the preparation details.") @Timed public
focal_method.parameters: (
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "stepId", defaultValue = "head") @ApiParam(name = "stepId",
                      value = "optional step id", defaultValue = "head") String stepId)
focal_method.return: PreparationDetailsDTO
focal_method.signature: PreparationDetailsDTO getPreparation(
              @PathVariable(value = "id") @ApiParam(name = "id", value = "Preparation id.") String preparationId, //
              @RequestParam(value = "stepId", defaultValue = "head") @ApiParam(name = "stepId",
                      value = "optional step id", defaultValue = "head") String stepId)