@PostMapping(GROUP_END_POINT) @ApiOperation(value = "Create a new group", response = ResponseEntity.class) @Transactional @ApiResponses({ @ApiResponse(code = 201, message = "New group created", response = ResponseEntity.class), @ApiResponse(code = 400, message = "Group name not available", response = ResponseEntity.class) }) public ResponseEntity createGroup(@RequestBody GroupCommand group) { GroupValue groupValue = groupValueFactory.createGroup(group.getName(), group.getLabel(), DEFAULT_ROLES); if (!groupService.isGroupNameAvailable(groupValue)) { throw new GroupNameNotAvailableException(group.getName()); } groupService.persist(groupValue); groupPermissionService.grantDefaultPermissions(groupValue); roleMembershipService.addUserToRole(getCurrentUsername(), getManagerRoleName(groupValue)); URI location = ServletUriComponentsBuilder.fromCurrentRequest() .path("/{name}") .buildAndExpand(groupValue.getName()) .toUri(); return ResponseEntity.created(location).build(); }