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));
            }
        }