@PostMapping(value = "/map", produces = TEXT_PLAIN_VALUE)
  public ResponseEntity<String> scheduleMappingJob(
      @RequestParam String mappingProjectId,
      @RequestParam String targetEntityTypeId,
      @RequestParam(required = false) String label,
      @RequestParam(required = false, name = "package") String rawPackageId,
      @RequestParam(required = false) Boolean addSourceAttribute)
      throws URISyntaxException {
    mappingProjectId = mappingProjectId.trim();
    targetEntityTypeId = targetEntityTypeId.trim();
    label = trim(label);
    String packageId = trim(rawPackageId);

    try {
      validateEntityName(targetEntityTypeId);
      if (mappingService.getMappingProject(mappingProjectId) == null) {
        throw new MolgenisDataException("No mapping project found with ID " + mappingProjectId);
      }
      if (packageId != null) {
        Package aPackage =
            dataService
                .getMeta()
                .getPackage(packageId)
                .orElseThrow(
                    () -> new MolgenisDataException("No package found with ID " + packageId));
        if (isSystemPackage(aPackage)) {
          throw new MolgenisDataException(format("Package [{0}] is a system package.", packageId));
        }
      }
    } catch (MolgenisDataException mde) {
      return ResponseEntity.badRequest().contentType(TEXT_PLAIN).body(mde.getMessage());
    }

    String jobHref =
        submitMappingJob(mappingProjectId, targetEntityTypeId, addSourceAttribute, packageId, label)
            .getBody();
    return created(new URI(jobHref)).contentType(TEXT_PLAIN).body(jobHref);
  }
@ PostMapping ( value = "/map" , produces = TEXT_PLAIN_VALUE ) public ResponseEntity < String > scheduleMappingJob ( @ RequestParam String mappingProjectId , @ RequestParam String targetEntityTypeId , @ RequestParam ( required = false ) String label , @ RequestParam ( required = false , name = "package" ) String rawPackageId , @ RequestParam ( required = false ) Boolean addSourceAttribute ) throws URISyntaxException { mappingProjectId = mappingProjectId . trim ( ) ; targetEntityTypeId = targetEntityTypeId . trim ( ) ; label = trim ( label ) ; String packageId = trim ( rawPackageId ) ; try { validateEntityName ( targetEntityTypeId ) ; if ( mappingService . getMappingProject ( mappingProjectId ) == null ) { throw new MolgenisDataException ( "No mapping project found with ID " + mappingProjectId ) ; } if ( packageId != null ) { Package aPackage = dataService . getMeta ( ) . getPackage ( packageId ) . orElseThrow ( ( ) -> new MolgenisDataException ( "No package found with ID " + packageId ) ) ; if ( isSystemPackage ( aPackage ) ) { throw new MolgenisDataException ( format ( "Package [{0}] is a system package." , packageId ) ) ; } } } catch ( MolgenisDataException mde ) { return ResponseEntity . badRequest ( ) . contentType ( TEXT_PLAIN ) . body ( mde . getMessage ( ) ) ; } String jobHref = submitMappingJob ( mappingProjectId , targetEntityTypeId , addSourceAttribute , packageId , label ) . getBody ( ) ; return created ( new URI ( jobHref ) ) . contentType ( TEXT_PLAIN ) . body ( jobHref ) ; }
Schedules a {@link MappingJobExecution}.

@param mappingProjectId ID of the mapping project
@param targetEntityTypeId ID of the target entity to create or update
@param label label of the target entity to create
@param rawPackageId ID of the package to put the newly created entity in
@return the href of the created MappingJobExecution