private async Task <dynamic> DeleteGranularPermissions(dynamic param) { var permissions = this.Bind <List <PermissionApiModel> >(); if (permissions.Count == 0) { return(CreateFailureResponse( "No permissions specified to add, ensure an array of permissions is included in the request.", HttpStatusCode.BadRequest)); } foreach (var perm in permissions) { await CheckWriteAccess(_clientService, _grainService, perm.Grain, perm.SecurableItem); } var granularPermission = new GranularPermission { Id = $"{param.subjectId}:{param.identityProvider}", DeniedPermissions = permissions .Where(p => p.PermissionAction == PermissionAction.Deny) .Select(p => p.ToPermissionDomainModel()), AdditionalPermissions = permissions .Where(p => p.PermissionAction == PermissionAction.Allow) .Select(p => p.ToPermissionDomainModel()) }; try { await _permissionService.DeleteGranularPermissions(granularPermission); return(HttpStatusCode.NoContent); } catch (InvalidPermissionException ex) { var invalidPermissions = new StringBuilder(); foreach (DictionaryEntry item in ex.Data) { invalidPermissions.Append($"{item.Key}: {item.Value}. "); } return(CreateFailureResponse( $"{ex.Message} {invalidPermissions}", HttpStatusCode.BadRequest)); } }