@RequestMapping(
      value = "",
      method = RequestMethod.POST,
      consumes = MediaType.APPLICATION_JSON_VALUE,
      produces = MediaType.APPLICATION_JSON_VALUE)
  @PreAuthorize("hasRole('ALL') or hasRole('F_PROGRAM_ENROLLMENT')")
  public void postEnrollmentJson(
      @RequestParam(defaultValue = "CREATE") ImportStrategy strategy,
      HttpServletRequest request,
      HttpServletResponse response)
      throws IOException {
    ImportSummaries importSummaries =
        enrollmentService.addEnrollmentsJson(request.getInputStream(), strategy);
    response.setContentType(MediaType.APPLICATION_JSON_VALUE);

    if (importSummaries.getImportSummaries().size() > 1) {
      response.setStatus(HttpServletResponse.SC_CREATED);
      renderService.toJson(response.getOutputStream(), importSummaries);
    } else {
      response.setStatus(HttpServletResponse.SC_CREATED);
      ImportSummary importSummary = importSummaries.getImportSummaries().get(0);

      if (!importSummary.getStatus().equals(ImportStatus.ERROR)) {
        response.setHeader("Location", getResourcePath(request, importSummary));
      }

      webMessageService.send(WebMessageUtils.importSummaries(importSummaries), response, request);
    }
  }
 @RequestMapping(
     value = "/{id}",
     method = RequestMethod.PUT,
     consumes = MediaType.APPLICATION_JSON_VALUE,
     produces = MediaType.APPLICATION_JSON_VALUE)
 @PreAuthorize("hasRole('ALL') or hasRole('F_PROGRAM_UNENROLLMENT')")
 public void updateEnrollmentJson(
     @PathVariable String id, HttpServletRequest request, HttpServletResponse response)
     throws IOException {
   ImportSummary importSummary =
       enrollmentService.updateEnrollmentJson(id, request.getInputStream());
   webMessageService.send(WebMessageUtils.importSummary(importSummary), response, request);
 }
  @RequestMapping(value = "/{id}", method = RequestMethod.DELETE)
  @PreAuthorize("hasRole('ALL') or hasRole('F_PROGRAM_UNENROLLMENT')")
  @ResponseStatus(HttpStatus.NO_CONTENT)
  public void deleteEnrollment(
      @PathVariable String id, HttpServletRequest request, HttpServletResponse response)
      throws WebMessageException {
    if (!programInstanceService.programInstanceExists(id)) {
      throw new WebMessageException(WebMessageUtils.notFound("Enrollment not found for ID " + id));
    }

    response.setStatus(HttpServletResponse.SC_OK);
    ImportSummary importSummary = enrollmentService.deleteEnrollment(id);
    webMessageService.send(WebMessageUtils.importSummary(importSummary), response, request);
  }