Repository: owncloud/ocis
Pull request #8415 (2024-02-09 06:17:51)

build(deps): bump golang.org/x/oauth2 from 0.16.0 to 0.17.0
Bumps [golang.org/x/oauth2](https://github.com/golang/oauth2) from 0.16.0 to 0.17.0.
<details>
<summary>Commits</summary>
<ul>
<li><a href="https://github.com/golang/oauth2/commit/ebe81ad83719fe3426335b22e40a1e3a76fa45c0"><code>ebe81ad</code></a> go.mod: update golang.org/x dependencies</li>
<li><a href="https://github.com/golang/oauth2/commit/adffd94437cee5e033b67282039fc9c21708ffc7"><code>adffd94</code></a> google/internal/externalaccount: update serviceAccountImpersonationRE to supp...</li>
<li><a href="https://github.com/golang/oauth2/commit/deefa7e836e5aa043b2b8102b5b098da53a43903"><code>deefa7e</code></a> google/downscope: add DownscopingConfig.UniverseDomain to support TPC</li>
<li>See full diff in <a href="https://github.com/golang/oauth2/compare/v0.16.0...v0.17.0">compare view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=golang.org/x/oauth2&package-manager=go_modules&previous-version=0.16.0&new-version=0.17.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `@dependabot merge` will merge this PR after your CI passes on it
- `@dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `@dependabot cancel merge` will cancel a previously requested merge and block automerging
- `@dependabot reopen` will reopen this PR if it is closed
- `@dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `@dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)


</details>


Patch:
diff --git a/.bingo/Variables.mk b/.bingo/Variables.mk
index 6096ca9e33e..43c81141502 100644
--- a/.bingo/Variables.mk
+++ b/.bingo/Variables.mk
@@ -65,11 +65,11 @@ $(HUGO): $(BINGO_DIR)/hugo.mod
 	@echo "(re)installing $(GOBIN)/hugo-v0.115.2"
 	@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=hugo.mod -o=$(GOBIN)/hugo-v0.115.2 "github.com/gohugoio/hugo"
 
-MOCKERY := $(GOBIN)/mockery-v2.40.1
+MOCKERY := $(GOBIN)/mockery-v2.40.2
 $(MOCKERY): $(BINGO_DIR)/mockery.mod
 	@# Install binary/ries using Go 1.14+ build command. This is using bwplotka/bingo-controlled, separate go module with pinned dependencies.
-	@echo "(re)installing $(GOBIN)/mockery-v2.40.1"
-	@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=mockery.mod -o=$(GOBIN)/mockery-v2.40.1 "github.com/vektra/mockery/v2"
+	@echo "(re)installing $(GOBIN)/mockery-v2.40.2"
+	@cd $(BINGO_DIR) && GOWORK=off $(GO) build -mod=mod -modfile=mockery.mod -o=$(GOBIN)/mockery-v2.40.2 "github.com/vektra/mockery/v2"
 
 MUTAGEN := $(GOBIN)/mutagen-v0.13.1
 $(MUTAGEN): $(BINGO_DIR)/mutagen.mod
diff --git a/.bingo/mockery.mod b/.bingo/mockery.mod
index 9c2314f8e4e..6dd4aa4be73 100644
--- a/.bingo/mockery.mod
+++ b/.bingo/mockery.mod
@@ -2,4 +2,4 @@ module _ // Auto generated by https://github.com/bwplotka/bingo. DO NOT EDIT
 
 go 1.21.6
 
-require github.com/vektra/mockery/v2 v2.40.1
+require github.com/vektra/mockery/v2 v2.40.2
diff --git a/.bingo/mockery.sum b/.bingo/mockery.sum
index e06a7204a66..f9acfc35683 100644
--- a/.bingo/mockery.sum
+++ b/.bingo/mockery.sum
@@ -190,6 +190,8 @@ github.com/subosito/gotenv v1.4.2 h1:X1TuBLAMDFbaTAChgCBLu3DU3UPyELpnF2jjJ2cz/S8
 github.com/subosito/gotenv v1.4.2/go.mod h1:ayKnFf/c6rvx/2iiLrJUk1e6plDbT3edrFNGqEflhK0=
 github.com/vektra/mockery/v2 v2.40.1 h1:8D01rBqloDLDHKZGXkyUD9Yj5Z+oDXBqDZ+tRXYM/oA=
 github.com/vektra/mockery/v2 v2.40.1/go.mod h1:dPzGtjT0/Uu4hqpF6QNHwz+GLago7lq1bxdj9wHbGKo=
+github.com/vektra/mockery/v2 v2.40.2 h1:JKuQ74IXibMCGKG6F0yvH/s2sNs1CHy/nGBP0We5DJ8=
+github.com/vektra/mockery/v2 v2.40.2/go.mod h1:KYBZF/7sqOa86BaOZPYsoCZWEWLS90a5oBLg2pVudxY=
 github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
 github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
@@ -242,6 +244,8 @@ golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
 golang.org/x/mod v0.9.0 h1:KENHtAZL2y3NLMYZeHY9DW8HW8V+kQyJsY/V9JlKvCs=
 golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
+golang.org/x/mod v0.14.0 h1:dGoOF9QVLYng8IHTm7BAyWqCqSheQ5pYWGhzW00YJr0=
+golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
 golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
 golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
@@ -395,6 +399,8 @@ golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4f
 golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0=
 golang.org/x/tools v0.7.0 h1:W4OVu8VVOaIO0yzWMNdepAulS7YfoS3Zabrm8DOXXU4=
 golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
+golang.org/x/tools v0.17.0 h1:FvmRgNOcs3kOa+T20R1uhfP9F6HgG2mfxDv1vrx1Htc=
+golang.org/x/tools v0.17.0/go.mod h1:xsh6VxdV005rRVaS6SSAf9oiAqljS7UZUacMZ8Bnsps=
 golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
 golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
diff --git a/.bingo/variables.env b/.bingo/variables.env
index a4673819ca4..7f7a6eedef4 100644
--- a/.bingo/variables.env
+++ b/.bingo/variables.env
@@ -24,7 +24,7 @@ GOVULNCHECK="${GOBIN}/govulncheck-v1.0.1"
 
 HUGO="${GOBIN}/hugo-v0.115.2"
 
-MOCKERY="${GOBIN}/mockery-v2.40.1"
+MOCKERY="${GOBIN}/mockery-v2.40.2"
 
 MUTAGEN="${GOBIN}/mutagen-v0.13.1"
 
diff --git a/CHANGELOG.md b/CHANGELOG.md
index b4e81947be6..d5f22dc935c 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -40,6 +40,7 @@ The following sections list the changes for unreleased.
 
 ## Summary
 
+* Bugfix - Fix search response: [#7815](https://github.com/owncloud/ocis/pull/7815)
 * Bugfix - The race conditions in tests: [#7847](https://github.com/owncloud/ocis/pull/7847)
 * Bugfix - Fix jwt config of policies service: [#7893](https://github.com/owncloud/ocis/pull/7893)
 * Bugfix - Fix Service Account Roles on external IDP: [#8074](https://github.com/owncloud/ocis/pull/8074)
@@ -65,6 +66,7 @@ The following sections list the changes for unreleased.
 * Bugfix - Signed url verification: [#8385](https://github.com/owncloud/ocis/pull/8385)
 * Bugfix - Fix an error when move: [#8396](https://github.com/owncloud/ocis/pull/8396)
 * Bugfix - Fix extended env parser: [#8409](https://github.com/owncloud/ocis/pull/8409)
+* Bugfix - Graph/drives/permission Expiration date update: [#8413](https://github.com/owncloud/ocis/pull/8413)
 * Enhancement - Support login page background configuration: [#7674](https://github.com/owncloud/ocis/issues/7674)
 * Enhancement - Disable the password policy: [#7985](https://github.com/owncloud/ocis/pull/7985)
 * Enhancement - Update antivirus service: [#8062](https://github.com/owncloud/ocis/pull/8062)
@@ -79,6 +81,13 @@ The following sections list the changes for unreleased.
 
 ## Details
 
+* Bugfix - Fix search response: [#7815](https://github.com/owncloud/ocis/pull/7815)
+
+   We fixed the search response code from 500 to 400 when the request is invalid
+
+   https://github.com/owncloud/ocis/issues/7812
+   https://github.com/owncloud/ocis/pull/7815
+
 * Bugfix - The race conditions in tests: [#7847](https://github.com/owncloud/ocis/pull/7847)
 
    We fixed the race conditions in tests.
@@ -270,6 +279,14 @@ The following sections list the changes for unreleased.
 
    https://github.com/owncloud/ocis/pull/8409
 
+* Bugfix - Graph/drives/permission Expiration date update: [#8413](https://github.com/owncloud/ocis/pull/8413)
+
+   We fixed a bug in the Update sharing permission the expiration dates can't be
+   removed from link permissions.
+
+   https://github.com/owncloud/ocis/issues/8405
+   https://github.com/owncloud/ocis/pull/8413
+
 * Enhancement - Support login page background configuration: [#7674](https://github.com/owncloud/ocis/issues/7674)
 
    Introduce a new environment variable `IDP_LOGIN_BACKGROUND_URL` that overrides
diff --git a/changelog/unreleased/fix-search-responce.md b/changelog/unreleased/fix-search-responce.md
new file mode 100644
index 00000000000..e7f308a153c
--- /dev/null
+++ b/changelog/unreleased/fix-search-responce.md
@@ -0,0 +1,6 @@
+Bugfix: Fix search response
+
+We fixed the search response code from 500 to 400 when the request is invalid
+
+https://github.com/owncloud/ocis/pull/7815
+https://github.com/owncloud/ocis/issues/7812
diff --git a/changelog/unreleased/sharing-ng-expirationdate.md b/changelog/unreleased/sharing-ng-expirationdate.md
new file mode 100644
index 00000000000..f917b3111cc
--- /dev/null
+++ b/changelog/unreleased/sharing-ng-expirationdate.md
@@ -0,0 +1,6 @@
+Bugfix: graph/drives/permission Expiration date update
+
+We fixed a bug in the Update sharing permission the expiration dates can't be removed from link permissions.
+
+https://github.com/owncloud/ocis/pull/8413
+https://github.com/owncloud/ocis/issues/8405
diff --git a/docs/helpers/extended_vars.yaml b/docs/helpers/extended_vars.yaml
index 544206b9a7e..28091b1a8fa 100644
--- a/docs/helpers/extended_vars.yaml
+++ b/docs/helpers/extended_vars.yaml
@@ -32,39 +32,47 @@ variables:
   default_value: ""
   description: ""
   do_ignore: true
-- rawname: registryEnv
-  path: ocis-pkg/registry/registry.go:118
-  foundincode: false
+- rawname: _registryEnv
+  path: ocis-pkg/registry/registry.go:114
+  foundincode: true
   name: MICRO_REGISTRY
   type: string
-  default_value: ""
+  default_value: nats-js-kv
   description: 'The Go micro registry type to use. Supported types are: ''memory'',
     ''nats-js-kv'' (default) and ''kubernetes''. Note that ''nats'', ''etcd'', ''consul''
     and ''mdns'' are deprecated and will be removed in a later version. Only change
     on supervision of ownCloud Support.'
   do_ignore: false
-- rawname: registryAddressEnv
-  path: ocis-pkg/registry/registry.go:122
-  foundincode: false
+- rawname: _registryAddressEnv
+  path: ocis-pkg/natsjsregistry/registry.go:145
+  foundincode: true
   name: MICRO_REGISTRY_ADDRESS
   type: string
   default_value: 127.0.0.1:9233
   description: The bind address of the internal go micro framework. Only change on
     supervision of ownCloud Support.
   do_ignore: false
-- rawname: registryPasswordEnv
-  path: ocis-pkg/registry/registry.go:115
-  foundincode: false
-  name: MICRO_REGISTRY_AUTH_PASSWORD
+- rawname: _registryAddressEnv
+  path: ocis-pkg/registry/registry.go:118
+  foundincode: true
+  name: MICRO_REGISTRY_ADDRESS
   type: ""
   default_value: ""
+  description: ""
+  do_ignore: true
+- rawname: _registryPasswordEnv
+  path: ocis-pkg/natsjsregistry/registry.go:163
+  foundincode: true
+  name: MICRO_REGISTRY_AUTH_PASSWORD
+  type: string
+  default_value: ""
   description: Optional when using nats to authenticate with the nats cluster.
   do_ignore: false
-- rawname: registryUsernameEnv
-  path: ocis-pkg/registry/registry.go:114
-  foundincode: false
+- rawname: _registryUsernameEnv
+  path: ocis-pkg/natsjsregistry/registry.go:163
+  foundincode: true
   name: MICRO_REGISTRY_AUTH_USERNAME
-  type: ""
+  type: string
   default_value: ""
   description: Optional when using nats to authenticate with the nats cluster.
   do_ignore: false
@@ -73,61 +81,20 @@ variables:
   foundincode: true
   name: OCIS_BASE_DATA_PATH
   type: string
-  default_value: '''/var/lib/ocis'' or ''$HOME/.ocis/'''
+  default_value: ""
   description: The base directory location used by several services and for user data.
-    Predefined to '/var/lib/ocis' for container images (inside the container) or '$HOME/.ocis/'
-    for binary releases. Services can have, if available, an individual setting with
-    an own environment variable.
+    See the General Info section in the documentation for more details on defaults.
+    Services can have, if available, an individual setting with an own environment
+    variable.
   do_ignore: false
 - rawname: OCIS_CONFIG_DIR
   path: ocis-pkg/config/defaults/paths.go:56
   foundincode: true
   name: OCIS_CONFIG_DIR
   type: string
-  default_value: '''/etc/ocis'' or ''$HOME/.ocis/config'''
-  description: The default directory location for config files. Predefined to '/etc/ocis'
-    for container images (inside the container) or '$HOME/.ocis/config' for binary
-    releases.
-  do_ignore: false
-- rawname: _registryAddressEnv
-  path: ocis-pkg/natsjsregistry/registry.go:145
-  foundincode: true
-  name: _registryAddressEnv
-  type: ""
-  default_value: ""
-  description: ""
-  do_ignore: false
-- rawname: _registryAddressEnv
-  path: ocis-pkg/registry/registry.go:118
-  foundincode: true
-  name: _registryAddressEnv
-  type: ""
-  default_value: ""
-  description: ""
-  do_ignore: false
-- rawname: _registryEnv
-  path: ocis-pkg/registry/registry.go:114
-  foundincode: true
-  name: _registryEnv
-  type: ""
   default_value: ""
-  description: ""
-  do_ignore: false
-- rawname: _registryPasswordEnv
-  path: ocis-pkg/natsjsregistry/registry.go:163
-  foundincode: true
-  name: _registryPasswordEnv
-  type: ""
-  default_value: ""
-  description: ""
-  do_ignore: false
-- rawname: _registryUsernameEnv
-  path: ocis-pkg/natsjsregistry/registry.go:163
-  foundincode: true
-  name: _registryUsernameEnv
-  type: ""
-  default_value: ""
-  description: ""
+  description: The default directory location for config files. See the General Info
+    section in the documentation for more details on defaults.
   do_ignore: false
 - rawname: parts[0]
   path: ocis-pkg/config/envdecode/envdecode.go:382
diff --git a/docs/services/general-info/env-var-deltas/4.0.0-5.0.0-added.adoc b/docs/services/general-info/env-var-deltas/4.0.0-5.0.0-added.adoc
index 6edb3679c80..061e54b1c53 100644
--- a/docs/services/general-info/env-var-deltas/4.0.0-5.0.0-added.adoc
+++ b/docs/services/general-info/env-var-deltas/4.0.0-5.0.0-added.adoc
@@ -8,9 +8,18 @@
 |===
 | Service| Variable| Description| Default
 
-| Available in multiple services
+| xref:deployment/services/env-vars-special-scope.adoc[Special Scope Envvars]
 | `OCIS_CACHE_DISABLE_PERSISTENCE`
 | Disables persistence of the cache. Only applies when store type 'nats-js-kv' is configured.| `false`
+|
+| `MICRO_REGISTRY` (important change)
+| The Go micro registry type to use. Supported types are: 'memory', 'nats-js-kv' (default) and 'kubernetes'. Note that 'nats', 'etcd', 'consul' and 'mdns' are deprecated and will be removed in a later version. Only change on supervision of ownCloud Support.| nats-js-kv
+|
+| `MICRO_REGISTRY_AUTH_PASSWORD`
+| Optional when using nats to authenticate with the nats cluster.|
+|
+| `MICRO_REGISTRY_AUTH_USERNAME`
+| Optional when using nats to authenticate with the nats cluster.|
 
 | xref:{s-path}/antivirus.adoc[antivirus]
 | `OCIS_EVENTS_AUTH_USERNAME`
diff --git a/docs/services/general-info/env-var-deltas/4.0.0-5.0.0-added.md b/docs/services/general-info/env-var-deltas/4.0.0-5.0.0-added.md
index 004a659e158..a58a4ef27a4 100644
--- a/docs/services/general-info/env-var-deltas/4.0.0-5.0.0-added.md
+++ b/docs/services/general-info/env-var-deltas/4.0.0-5.0.0-added.md
@@ -3,9 +3,12 @@
 | File                                          | Variable                                                                                                                                                                                           | Description                                                                                                                                                                                                                                                                                                                                                                                                                                                                 | Default                               |
 |-----------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------|
 | ocis-pkg/shared/shared_types.go               | `OCIS_CACHE_DISABLE_PERSISTENCE`                                                                                                                                                                   | Disables persistence of the cache. Only applies when store type 'nats-js-kv' is configured.                                                                                                                                                                                                                                                                                                                                                                                 | `false`                               |
+| ocis-pkg/registry/registry.go                 | `MICRO_REGISTRY` (important change)                                                                                                                                                                | The Go micro registry type to use. Supported types are: 'memory', 'nats-js-kv' (default) and 'kubernetes'. Note that 'nats', 'etcd', 'consul' and 'mdns' are deprecated and will be removed in a later version. Only change on supervision of ownCloud Support.                                                                                                                                                                                                                                                                                                                                                                                    | `nats-js-kv`                          |
+| ocis-pkg/natsjsregistry/registry.go           | `MICRO_REGISTRY_AUTH_USERNAME`                                                                                                                                                                     | Optional when using nats to authenticate with the nats cluster.                                                                                                                                                                                                                                                                                                                         |                                       |
+|                                               | `MICRO_REGISTRY_AUTH_PASSWORD`                                                                                                                                                                     | Optional when using nats to authenticate with the nats cluster.                                                                                                                                                                                                                                                                                                                         |                                       |
 | services/antivirus/pkg/config/config.go       | `OCIS_EVENTS_AUTH_USERNAME`                                                                                                                                                                        | The username to authenticate with the events broker. The events broker is the ocis service which receives and delivers events between the services.                                                                                                                                                                                                                                                                                                                         |                                       |
 |                                               | `OCIS_EVENTS_AUTH_PASSWORD`                                                                                                                                                                        | The password to authenticate with the events broker. The events broker is the ocis service which receives and delivers events between the services.                                                                                                                                                                                                                                                                                                                         |                                       |
-|                                               | `ANTIVIRUS_ICAP_TIMEOUT`                                                                                                                                                                        | Scan timeout for the ICAP client. Defaults to '5m' (5 minutes). See the Environment Variable Types description for more details.                                                                                                                                                                                                                                                                                                                         |                                       |
+|                                               | `ANTIVIRUS_ICAP_TIMEOUT`                                                                                                                                                                           | Scan timeout for the ICAP client. Defaults to '5m' (5 minutes). See the Environment Variable Types description for more details.                                                                                                                                                                                                                                                                                                                         |                                       |
 | services/audit/pkg/config/config.go           | `OCIS_EVENTS_AUTH_USERNAME`                                                                                                                                                                        | The username to authenticate with the events broker. The events broker is the ocis service which receives and delivers events between the services.                                                                                                                                                                                                                                                                                                                         |                                       |
 |                                               | `OCIS_EVENTS_AUTH_PASSWORD`                                                                                                                                                                        | The password to authenticate with the events broker. The events broker is the ocis service which receives and delivers events between the services.                                                                                                                                                                                                                                                                                                                         |                                       |
 | services/auth-service/pkg/config/config.go    | `OCIS_TRACING_ENABLED;AUTH_SERVICE_TRACING_ENABLED`                                                                                                                                                | Activates tracing.                                                                                                                                                                                                                                                                                                                                                                                                                                                          |                                       |
diff --git a/go.mod b/go.mod
index d7188933cc9..ca7948872db 100644
--- a/go.mod
+++ b/go.mod
@@ -97,7 +97,7 @@ require (
 	golang.org/x/crypto v0.19.0
 	golang.org/x/image v0.15.0
 	golang.org/x/net v0.21.0
-	golang.org/x/oauth2 v0.16.0
+	golang.org/x/oauth2 v0.17.0
 	golang.org/x/sync v0.6.0
 	golang.org/x/term v0.17.0
 	golang.org/x/text v0.14.0
diff --git a/go.sum b/go.sum
index 3b62591e10f..118628d84ab 100644
--- a/go.sum
+++ b/go.sum
@@ -2349,8 +2349,8 @@ golang.org/x/oauth2 v0.7.0/go.mod h1:hPLQkd9LyjfXTiRohC/41GhcFqxisoUQ99sCUOHO9x4
 golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE=
 golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI=
 golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk=
-golang.org/x/oauth2 v0.16.0 h1:aDkGMBSYxElaoP81NpoUoz2oo2R2wHdZpGToUxfyQrQ=
-golang.org/x/oauth2 v0.16.0/go.mod h1:hqZ+0LWXsiVoZpeld6jVt06P3adbS2Uu911W1SsJv2o=
+golang.org/x/oauth2 v0.17.0 h1:6m3ZPmLEFdVxKKWnKq4VqZ60gutO35zm+zrAHVmHyDQ=
+golang.org/x/oauth2 v0.17.0/go.mod h1:OzPDGQiuQMguemayvdylqddI7qcD9lnSDb+1FiwQ5HA=
 golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
 golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
diff --git a/ocis-pkg/oidc/mocks/oidc_client.go b/ocis-pkg/oidc/mocks/oidc_client.go
index 5a822397341..0aa0dfdfee0 100644
--- a/ocis-pkg/oidc/mocks/oidc_client.go
+++ b/ocis-pkg/oidc/mocks/oidc_client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/graph/mocks/http_client.go b/services/graph/mocks/http_client.go
index 6baaf331917..b31a16b269a 100644
--- a/services/graph/mocks/http_client.go
+++ b/services/graph/mocks/http_client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/graph/mocks/permissions.go b/services/graph/mocks/permissions.go
index 73bf9421d57..a0645ce951a 100644
--- a/services/graph/mocks/permissions.go
+++ b/services/graph/mocks/permissions.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/graph/mocks/publisher.go b/services/graph/mocks/publisher.go
index 189ebe218ec..7449caf0f6d 100644
--- a/services/graph/mocks/publisher.go
+++ b/services/graph/mocks/publisher.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/graph/mocks/role_service.go b/services/graph/mocks/role_service.go
index 70fadd24ed7..4538a943030 100644
--- a/services/graph/mocks/role_service.go
+++ b/services/graph/mocks/role_service.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/graph/pkg/identity/mocks/backend.go b/services/graph/pkg/identity/mocks/backend.go
index 885ee880abd..4a6153290f4 100644
--- a/services/graph/pkg/identity/mocks/backend.go
+++ b/services/graph/pkg/identity/mocks/backend.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/graph/pkg/identity/mocks/education_backend.go b/services/graph/pkg/identity/mocks/education_backend.go
index 44e831c58eb..8799d04adfe 100644
--- a/services/graph/pkg/identity/mocks/education_backend.go
+++ b/services/graph/pkg/identity/mocks/education_backend.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/graph/pkg/identity/mocks/ldapclient.go b/services/graph/pkg/identity/mocks/ldapclient.go
index f9f1e15b6f6..c4dba72e1ed 100644
--- a/services/graph/pkg/identity/mocks/ldapclient.go
+++ b/services/graph/pkg/identity/mocks/ldapclient.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/graph/pkg/service/v0/links.go b/services/graph/pkg/service/v0/links.go
index f9303fa5c77..684dd8e67be 100644
--- a/services/graph/pkg/service/v0/links.go
+++ b/services/graph/pkg/service/v0/links.go
@@ -202,7 +202,7 @@ func (g Graph) libreGraphPermissionFromCS3PublicShare(createdLink *link.PublicSh
 }
 
 func parseAndFillUpTime(t *time.Time) *types.Timestamp {
-	if t == nil {
+	if t == nil || t.IsZero() {
 		return nil
 	}
 
diff --git a/services/invitations/pkg/backends/keycloak/mocks/client.go b/services/invitations/pkg/backends/keycloak/mocks/client.go
index be451669b32..c6bdfbc7ccd 100644
--- a/services/invitations/pkg/backends/keycloak/mocks/client.go
+++ b/services/invitations/pkg/backends/keycloak/mocks/client.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/proxy/pkg/user/backend/mocks/user_backend.go b/services/proxy/pkg/user/backend/mocks/user_backend.go
index c625438af96..2d57b340168 100644
--- a/services/proxy/pkg/user/backend/mocks/user_backend.go
+++ b/services/proxy/pkg/user/backend/mocks/user_backend.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/proxy/pkg/userroles/mocks/user_role_assigner.go b/services/proxy/pkg/userroles/mocks/user_role_assigner.go
index 3a601b6aa34..babeb5491e3 100644
--- a/services/proxy/pkg/userroles/mocks/user_role_assigner.go
+++ b/services/proxy/pkg/userroles/mocks/user_role_assigner.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/search/pkg/content/mocks/extractor.go b/services/search/pkg/content/mocks/extractor.go
index 80a795af36d..273d96b0140 100644
--- a/services/search/pkg/content/mocks/extractor.go
+++ b/services/search/pkg/content/mocks/extractor.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/search/pkg/content/mocks/retriever.go b/services/search/pkg/content/mocks/retriever.go
index 76271c2205c..c755da70e14 100644
--- a/services/search/pkg/content/mocks/retriever.go
+++ b/services/search/pkg/content/mocks/retriever.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/search/pkg/engine/bleve.go b/services/search/pkg/engine/bleve.go
index a0b3f26f30c..54375d99250 100644
--- a/services/search/pkg/engine/bleve.go
+++ b/services/search/pkg/engine/bleve.go
@@ -22,6 +22,7 @@ import (
 	storageProvider "github.com/cs3org/go-cs3apis/cs3/storage/provider/v1beta1"
 	"google.golang.org/protobuf/types/known/timestamppb"
 
+	"github.com/cs3org/reva/v2/pkg/errtypes"
 	"github.com/cs3org/reva/v2/pkg/storagespace"
 	"github.com/cs3org/reva/v2/pkg/utils"
 
@@ -123,6 +124,9 @@ func BuildBleveMapping() (mapping.IndexMapping, error) {
 func (b *Bleve) Search(ctx context.Context, sir *searchService.SearchIndexRequest) (*searchService.SearchIndexResponse, error) {
 	createdQuery, err := b.queryCreator.Create(sir.Query)
 	if err != nil {
+		if searchQuery.IsValidationError(err) {
+			return nil, errtypes.BadRequest(err.Error())
+		}
 		return nil, err
 	}
 
diff --git a/services/search/pkg/engine/mocks/engine.go b/services/search/pkg/engine/mocks/engine.go
index aca2f730f50..d1c356d0c7a 100644
--- a/services/search/pkg/engine/mocks/engine.go
+++ b/services/search/pkg/engine/mocks/engine.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/search/pkg/query/kql/error.go b/services/search/pkg/query/error.go
similarity index 82%
rename from services/search/pkg/query/kql/error.go
rename to services/search/pkg/query/error.go
index 5f171d77fdb..89f504c8a45 100644
--- a/services/search/pkg/query/kql/error.go
+++ b/services/search/pkg/query/error.go
@@ -1,4 +1,4 @@
-package kql
+package query
 
 import (
 	"fmt"
@@ -37,3 +37,11 @@ type UnsupportedTimeRangeError struct {
 func (e UnsupportedTimeRangeError) Error() string {
 	return fmt.Sprintf("unable to convert '%v' to a time range", e.Value)
 }
+
+func IsValidationError(err error) bool {
+	switch err.(type) {
+	case *StartsWithBinaryOperatorError, *NamedGroupInvalidNodesError, *UnsupportedTimeRangeError:
+		return true
+	}
+	return false
+}
diff --git a/services/search/pkg/query/kql/cast.go b/services/search/pkg/query/kql/cast.go
index 06fb800ce5a..c6ca30541ac 100644
--- a/services/search/pkg/query/kql/cast.go
+++ b/services/search/pkg/query/kql/cast.go
@@ -5,6 +5,7 @@ import (
 	"time"
 
 	"github.com/jinzhu/now"
+	"github.com/owncloud/ocis/v2/services/search/pkg/query"
 
 	"github.com/owncloud/ocis/v2/services/search/pkg/query/ast"
 )
@@ -84,7 +85,7 @@ func toTimeRange(in interface{}) (*time.Time, *time.Time, error) {
 
 	value, err := toString(in)
 	if err != nil {
-		return &from, &to, UnsupportedTimeRangeError{}
+		return &from, &to, &query.UnsupportedTimeRangeError{}
 	}
 
 	c := &now.Config{
@@ -131,7 +132,7 @@ func toTimeRange(in interface{}) (*time.Time, *time.Time, error) {
 	}
 
 	if from.IsZero() || to.IsZero() {
-		return nil, nil, UnsupportedTimeRangeError{}
+		return nil, nil, &query.UnsupportedTimeRangeError{}
 	}
 
 	return &from, &to, nil
diff --git a/services/search/pkg/query/kql/validate.go b/services/search/pkg/query/kql/validate.go
index 9e9a2428b99..96c6761ab17 100644
--- a/services/search/pkg/query/kql/validate.go
+++ b/services/search/pkg/query/kql/validate.go
@@ -1,6 +1,7 @@
 package kql
 
 import (
+	"github.com/owncloud/ocis/v2/services/search/pkg/query"
 	"github.com/owncloud/ocis/v2/services/search/pkg/query/ast"
 )
 
@@ -9,10 +10,9 @@ func validateAst(a *ast.Ast) error {
 	case *ast.OperatorNode:
 		switch node.Value {
 		case BoolAND, BoolOR:
-			return StartsWithBinaryOperatorError{Node: node}
+			return &query.StartsWithBinaryOperatorError{Node: node}
 		}
 	}
-
 	return nil
 }
 
@@ -21,14 +21,14 @@ func validateGroupNode(n *ast.GroupNode) error {
 	case *ast.OperatorNode:
 		switch node.Value {
 		case BoolAND, BoolOR:
-			return StartsWithBinaryOperatorError{Node: node}
+			return &query.StartsWithBinaryOperatorError{Node: node}
 		}
 	}
 
 	if n.Key != "" {
 		for _, node := range n.Nodes {
 			if ast.NodeKey(node) != "" {
-				return NamedGroupInvalidNodesError{Node: node}
+				return &query.NamedGroupInvalidNodesError{Node: node}
 			}
 		}
 	}
diff --git a/services/search/pkg/search/mocks/searcher.go b/services/search/pkg/search/mocks/searcher.go
index 8900f1dc244..cb0b0b529f5 100644
--- a/services/search/pkg/search/mocks/searcher.go
+++ b/services/search/pkg/search/mocks/searcher.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/services/settings/pkg/settings/mocks/manager.go b/services/settings/pkg/settings/mocks/manager.go
index 687d1688850..b4d6b43c638 100644
--- a/services/settings/pkg/settings/mocks/manager.go
+++ b/services/settings/pkg/settings/mocks/manager.go
@@ -1,4 +1,4 @@
-// Code generated by mockery v2.40.1. DO NOT EDIT.
+// Code generated by mockery v2.40.2. DO NOT EDIT.
 
 package mocks
 
diff --git a/vendor/modules.txt b/vendor/modules.txt
index 77193ee9f64..511434e5b93 100644
--- a/vendor/modules.txt
+++ b/vendor/modules.txt
@@ -2090,7 +2090,7 @@ golang.org/x/net/netutil
 golang.org/x/net/proxy
 golang.org/x/net/publicsuffix
 golang.org/x/net/trace
-# golang.org/x/oauth2 v0.16.0
+# golang.org/x/oauth2 v0.17.0
 ## explicit; go 1.18
 golang.org/x/oauth2
 golang.org/x/oauth2/internal


Test patch:
diff --git a/services/search/pkg/query/kql/dictionary_test.go b/services/search/pkg/query/kql/dictionary_test.go
index ba2780db895..adf4bd2d45e 100644
--- a/services/search/pkg/query/kql/dictionary_test.go
+++ b/services/search/pkg/query/kql/dictionary_test.go
@@ -6,6 +6,7 @@ import (
 	"time"
 
 	"github.com/jinzhu/now"
+	"github.com/owncloud/ocis/v2/services/search/pkg/query"
 	tAssert "github.com/stretchr/testify/assert"
 
 	"github.com/owncloud/ocis/v2/services/search/pkg/query/ast"
@@ -34,13 +35,13 @@ func TestParse_Spec(t *testing.T) {
 		},
 		{
 			name: `AND`,
-			error: kql.StartsWithBinaryOperatorError{
+			error: query.StartsWithBinaryOperatorError{
 				Node: &ast.OperatorNode{Value: kql.BoolAND},
 			},
 		},
 		{
 			name: `AND cat AND dog`,
-			error: kql.StartsWithBinaryOperatorError{
+			error: query.StartsWithBinaryOperatorError{
 				Node: &ast.OperatorNode{Value: kql.BoolAND},
 			},
 		},
@@ -80,13 +81,13 @@ func TestParse_Spec(t *testing.T) {
 		},
 		{
 			name: `OR`,
-			error: kql.StartsWithBinaryOperatorError{
+			error: query.StartsWithBinaryOperatorError{
 				Node: &ast.OperatorNode{Value: kql.BoolOR},
 			},
 		},
 		{
 			name: `OR cat AND dog`,
-			error: kql.StartsWithBinaryOperatorError{
+			error: query.StartsWithBinaryOperatorError{
 				Node: &ast.OperatorNode{Value: kql.BoolOR},
 			},
 		},
@@ -862,37 +863,37 @@ func TestParse_Errors(t *testing.T) {
 	tests := []testCase{
 		{
 			query: "animal:(mammal:cat mammal:dog reptile:turtle)",
-			error: kql.NamedGroupInvalidNodesError{
+			error: query.NamedGroupInvalidNodesError{
 				Node: &ast.StringNode{Key: "mammal", Value: "cat"},
 			},
 		},
 		{
 			query: "animal:(cat mammal:dog turtle)",
-			error: kql.NamedGroupInvalidNodesError{
+			error: query.NamedGroupInvalidNodesError{
 				Node: &ast.StringNode{Key: "mammal", Value: "dog"},
 			},
 		},
 		{
 			query: "animal:(AND cat)",
-			error: kql.StartsWithBinaryOperatorError{
+			error: query.StartsWithBinaryOperatorError{
 				Node: &ast.OperatorNode{Value: kql.BoolAND},
 			},
 		},
 		{
 			query: "animal:(OR cat)",
-			error: kql.StartsWithBinaryOperatorError{
+			error: query.StartsWithBinaryOperatorError{
 				Node: &ast.OperatorNode{Value: kql.BoolOR},
 			},
 		},
 		{
 			query: "(AND cat)",
-			error: kql.StartsWithBinaryOperatorError{
+			error: query.StartsWithBinaryOperatorError{
 				Node: &ast.OperatorNode{Value: kql.BoolAND},
 			},
 		},
 		{
 			query: "(OR cat)",
-			error: kql.StartsWithBinaryOperatorError{
+			error: query.StartsWithBinaryOperatorError{
 				Node: &ast.OperatorNode{Value: kql.BoolOR},
 			},
 		},
diff --git a/services/search/pkg/query/kql/kql_test.go b/services/search/pkg/query/kql/kql_test.go
index de050a47413..c130f755820 100644
--- a/services/search/pkg/query/kql/kql_test.go
+++ b/services/search/pkg/query/kql/kql_test.go
@@ -3,6 +3,7 @@ package kql_test
 import (
 	"testing"
 
+	"github.com/owncloud/ocis/v2/services/search/pkg/query"
 	tAssert "github.com/stretchr/testify/assert"
 
 	"github.com/owncloud/ocis/v2/services/search/pkg/query/ast"
@@ -22,7 +23,7 @@ func TestNewAST(t *testing.T) {
 		{
 			name:       "error",
 			givenQuery: kql.BoolAND,
-			expectedError: kql.StartsWithBinaryOperatorError{
+			expectedError: query.StartsWithBinaryOperatorError{
 				Node: &ast.OperatorNode{Value: kql.BoolAND},
 			},
 		},
diff --git a/tests/acceptance/expected-failures-localAPI-on-OCIS-storage.md b/tests/acceptance/expected-failures-localAPI-on-OCIS-storage.md
index 6f729a599af..b8789d196a8 100644
--- a/tests/acceptance/expected-failures-localAPI-on-OCIS-storage.md
+++ b/tests/acceptance/expected-failures-localAPI-on-OCIS-storage.md
@@ -249,19 +249,19 @@ The expected failures in this file are from features in the owncloud/ocis repo.
 
 ### [blocksDownload link type is not implemented yet (sharing-ng)](https://github.com/owncloud/ocis/issues/7879)
 
-- [apiSharingNg/linkShare.feature:79](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L79)
-- [apiSharingNg/linkShare.feature:149](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L149)
-- [apiSharingNg/linkShare.feature:228](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L228)
-- [apiSharingNg/linkShare.feature:305](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L305)
-- [apiSharingNg/linkShare.feature:377](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L377)
-- [apiSharingNg/linkShare.feature:451](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L451)
-- [apiSharingNg/linkShare.feature:453](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L453)
-- [apiSharingNg/linkShare.feature:455](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L455)
-- [apiSharingNg/linkShare.feature:456](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L456)
-- [apiSharingNg/deletePermissions.feature:130](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/deletePermissions.feature#L130)
-- [apiSharingNg/deletePermissions.feature:147](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/deletePermissions.feature#L147)
-- [apiSharingNg/deletePermissions.feature:168](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/deletePermissions.feature#L168)
-- [apiSharingNg/deletePermissions.feature:187](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/deletePermissions.feature#L187)
+- [apiSharingNg/linkShare.feature:78](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L78)
+- [apiSharingNg/linkShare.feature:147](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L147)
+- [apiSharingNg/linkShare.feature:225](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L225)
+- [apiSharingNg/linkShare.feature:301](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L301)
+- [apiSharingNg/linkShare.feature:372](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L372)
+- [apiSharingNg/linkShare.feature:444](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L444)
+- [apiSharingNg/linkShare.feature:446](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L446)
+- [apiSharingNg/linkShare.feature:448](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L448)
+- [apiSharingNg/linkShare.feature:449](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/linkShare.feature#L449)
+- [apiSharingNg/deletePermissions.feature:125](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/deletePermissions.feature#L125)
+- [apiSharingNg/deletePermissions.feature:141](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/deletePermissions.feature#L141)
+- [apiSharingNg/deletePermissions.feature:161](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/deletePermissions.feature#L161)
+- [apiSharingNg/deletePermissions.feature:179](https://github.com/owncloud/ocis/blob/master/tests/acceptance/features/apiSharingNg/deletePermissions.feature#L179)
 
 ### [sharee (editor role) MOVE a file by file-id into same shared folder returns 403](https://github.com/owncloud/ocis/issues/7617)
 
diff --git a/tests/acceptance/features/apiSharingNg/deletePermissions.feature b/tests/acceptance/features/apiSharingNg/deletePermissions.feature
index 222514e4c43..ffc90cb1277 100644
--- a/tests/acceptance/features/apiSharingNg/deletePermissions.feature
+++ b/tests/acceptance/features/apiSharingNg/deletePermissions.feature
@@ -13,23 +13,22 @@ Feature: Remove access to a drive item
     Given user "Alice" has created folder "FolderToShare"
     And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "textfile.txt"
     And user "Alice" has sent the following share invitation:
-      | resourceType    | <resource-type>   |
       | resource        | <path>            |
       | space           | Personal          |
       | sharee          | Brian             |
       | shareType       | user              |
       | permissionsRole | <permissionsRole> |
-    When user "Alice" removes the share permission of user "Brian" from <resource-type> "<path>" of space "Personal" using the Graph API
+    When user "Alice" removes the share permission of user "Brian" from resource "<path>" of space "Personal" using the Graph API
     Then the HTTP status code should be "204"
     And for user "Brian" the space "Shares" should not contain these entries:
       | <path> |
     Examples:
-      | permissionsRole | resource-type | path          |
-      | Viewer          | file          | textfile.txt  |
-      | File Editor     | file          | textfile.txt  |
-      | Viewer          | folder        | FolderToShare |
-      | Editor          | folder        | FolderToShare |
-      | Uploader        | folder        | FolderToShare |
+      | permissionsRole | path          |
+      | Viewer          | textfile.txt  |
+      | File Editor     | textfile.txt  |
+      | Viewer          | FolderToShare |
+      | Editor          | FolderToShare |
+      | Uploader        | FolderToShare |
 
 
   Scenario Outline: user removes access to resource inside of a project space in the user share
@@ -38,23 +37,22 @@ Feature: Remove access to a drive item
     And user "Alice" has created a folder "FolderToShare" in space "NewSpace"
     And user "Alice" has uploaded a file inside space "NewSpace" with content "some content" to "textfile.txt"
     And user "Alice" has sent the following share invitation:
-      | resourceType    | <resource-type>   |
       | resource        | <path>            |
       | space           | NewSpace          |
       | sharee          | Brian             |
       | shareType       | user              |
       | permissionsRole | <permissionsRole> |
-    When user "Alice" removes the share permission of user "Brian" from <resource-type> "<path>" of space "NewSpace" using the Graph API
+    When user "Alice" removes the share permission of user "Brian" from resource "<path>" of space "NewSpace" using the Graph API
     Then the HTTP status code should be "204"
     And for user "Brian" the space "Shares" should not contain these entries:
       | <path> |
     Examples:
-      | permissionsRole | resource-type | path          |
-      | Viewer          | file          | textfile.txt  |
-      | File Editor     | file          | textfile.txt  |
-      | Viewer          | folder        | FolderToShare |
-      | Editor          | folder        | FolderToShare |
-      | Uploader        | folder        | FolderToShare |
+      | permissionsRole | path          |
+      | Viewer          | textfile.txt  |
+      | File Editor     | textfile.txt  |
+      | Viewer          | FolderToShare |
+      | Editor          | FolderToShare |
+      | Uploader        | FolderToShare |
 
 
   Scenario Outline: user removes access to a resource in a group share
@@ -64,23 +62,22 @@ Feature: Remove access to a drive item
     And user "Alice" has created folder "FolderToShare"
     And user "Alice" has uploaded file "filesForUpload/textfile.txt" to "textfile.txt"
     And user "Alice" has sent the following share invitation:
-      | resourceType    | <resource-type>   |
       | resource        | <path>            |
       | space           | Personal          |
       | sharee          | group1            |
       | shareType       | group             |
       | permissionsRole | <permissionsRole> |
-    When user "Alice" removes the share permission of group "group1" from <resource-type> "<path>" of space "Personal" using the Graph API
+    When user "Alice" removes the share permission of group "group1" from resource "<path>" of space "Personal" using the Graph API
     Then the HTTP status code should be "204"
     And for user "Brian" the space "Shares" should not contain these entries:
       | <path> |
     Examples:
-      | permissionsRole | resource-type | path          |
-      | Viewer          | file          | textfile.txt  |
-      | File Editor     | file          | textfile.txt  |
-      | Viewer          | folder        | FolderToShare |
-      | Editor          | folder        | FolderToShare |
-      | Uploader        | folder        | FolderToShare |
+      | permissionsRole | path          |
+      | Viewer          | textfile.txt  |
+      | File Editor     | textfile.txt  |
+      | Viewer          | FolderToShare |
+      | Editor          | FolderToShare |
+      | Uploader        | FolderToShare |
 
 
   Scenario Outline: user removes access to a resource inside of a project space in group share
@@ -92,29 +89,27 @@ Feature: Remove access to a drive item
     And user "Brian" has been added to group "group1"
     And user "Alice" has been added to group "group1"
     And user "Alice" has sent the following share invitation:
-      | resourceType    | <resource-type>   |
       | resource        | <path>            |
       | space           | NewSpace          |
       | sharee          | group1            |
       | shareType       | group             |
       | permissionsRole | <permissionsRole> |
-    When user "Alice" removes the share permission of group "group1" from <resource-type> "<path>" of space "NewSpace" using the Graph API
+    When user "Alice" removes the share permission of group "group1" from resource "<path>" of space "NewSpace" using the Graph API
     Then the HTTP status code should be "204"
     And for user "Brian" the space "Shares" should not contain these entries:
       | <path> |
     Examples:
-      | permissionsRole | resource-type | path          |
-      | Viewer          | file          | textfile.txt  |
-      | File Editor     | file          | textfile.txt  |
-      | Viewer          | folder        | FolderToShare |
-      | Editor          | folder        | FolderToShare |
-      | Uploader        | folder        | FolderToShare |
+      | permissionsRole | path          |
+      | Viewer          | textfile.txt  |
+      | File Editor     | textfile.txt  |
+      | Viewer          | FolderToShare |
+      | Editor          | FolderToShare |
+      | Uploader        | FolderToShare |
 
 
   Scenario Outline: user removes access to a folder in link share
     Given user "Alice" has created folder "FolderToShare"
     And user "Alice" has created the following link share:
-      | resourceType    | folder        |
       | resource        | FolderToShare |
       | space           | Personal      |
       | permissionsRole | <role>        |
@@ -133,7 +128,6 @@ Feature: Remove access to a drive item
   Scenario Outline: user removes access to a file in link share
     Given user "Alice" has uploaded file "filesForUpload/textfile.txt" to "textfile.txt"
     And user "Alice" has created the following link share:
-      | resourceType    | file              |
       | resource        | textfile.txt      |
       | space           | Personal          |
       | permissionsRole | <permissionsRole> |
@@ -152,7 +146,6 @@ Feature: Remove access to a drive item
     And user "Alice" has created a space "NewSpace" with the default quota using the Graph API
     And user "Alice" has created a folder "FolderToShare" in space "NewSpace"
     And user "Alice" has created the following link share:
-      | resourceType    | folder        |
       | resource        | FolderToShare |
       | space           | NewSpace      |
       | permissionsRole | <role>        |
@@ -173,7 +166,6 @@ Feature: Remove access to a drive item
     And user "Alice" has created a space "NewSpace" with the default quota using the Graph API
     And user "Alice" has uploaded a file inside space "NewSpace" with content "some content" to "textfile.txt"
     And user "Alice" has created the following link share:
-      | resourceType    | file              |
       | resource        | textfile.txt      |
       | space           | NewSpace          |
       | permissionsRole | <permissionsRole> |
diff --git a/tests/acceptance/features/apiSharingNg/linkShare.feature b/tests/acceptance/features/apiSharingNg/linkShare.feature
index b7259c17a94..23a419d97d9 100644
--- a/tests/acceptance/features/apiSharingNg/linkShare.feature
+++ b/tests/acceptance/features/apiSharingNg/linkShare.feature
@@ -10,7 +10,6 @@ Feature: Create a share link for a resource
   Scenario Outline: create a link share of a folder
     Given user "Alice" has created folder "folder"
     When user "Alice" creates the following link share using the Graph API:
-      | resourceType    | folder            |
       | resource        | folder            |
       | space           | Personal          |
       | permissionsRole | <permissionsRole> |
@@ -82,7 +81,6 @@ Feature: Create a share link for a resource
   Scenario Outline: create a link share of a file
     Given user "Alice" has uploaded file with content "other data" to "textfile1.txt"
     When user "Alice" creates the following link share using the Graph API:
-      | resourceType    | file              |
       | resource        | textfile1.txt     |
       | space           | Personal          |
       | permissionsRole | <permissionsRole> |
@@ -152,7 +150,6 @@ Feature: Create a share link for a resource
   Scenario Outline: create a link share of a folder with display name and expiry date
     Given user "Alice" has created folder "folder"
     When user "Alice" creates the following link share using the Graph API:
-      | resourceType       | folder                   |
       | resource           | folder                   |
       | space              | Personal                 |
       | permissionsRole    | <permissionsRole>        |
@@ -231,7 +228,6 @@ Feature: Create a share link for a resource
   Scenario Outline: create a link share of a file with display name and expiry date
     Given user "Alice" has uploaded file with content "other data" to "textfile1.txt"
     When user "Alice" creates the following link share using the Graph API:
-      | resourceType       | file                     |
       | resource           | textfile1.txt            |
       | space              | Personal                 |
       | permissionsRole    | <permissionsRole>        |
@@ -311,7 +307,6 @@ Feature: Create a share link for a resource
       | OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD | false |
     And user "Alice" has uploaded file with content "other data" to "textfile1.txt"
     When user "Alice" creates the following link share using the Graph API:
-      | resourceType    | file              |
       | resource        | textfile1.txt     |
       | space           | Personal          |
       | permissionsRole | <permissionsRole> |
@@ -380,13 +375,11 @@ Feature: Create a share link for a resource
   Scenario Outline: update role of a file's link share
     Given user "Alice" has uploaded file with content "other data" to "textfile1.txt"
     And user "Alice" has created the following link share:
-      | resourceType    | file                      |
       | resource        | textfile1.txt             |
       | space           | Personal                  |
       | permissionsRole | <previousPermissionsRole> |
       | password        | %public%                  |
     When user "Alice" updates the last public link share using the Graph API with
-      | resourceType    | file                 |
       | resource        | textfile1.txt        |
       | space           | Personal             |
       | permissionsRole | <newPermissionsRole> |
@@ -460,14 +453,12 @@ Feature: Create a share link for a resource
   Scenario: update expiration date of a file's link share
     Given user "Alice" has uploaded file with content "other data" to "textfile1.txt"
     And user "Alice" has created the following link share:
-      | resourceType       | file                     |
       | resource           | textfile1.txt            |
       | space              | Personal                 |
       | permissionsRole    | view                     |
       | password           | %public%                 |
       | expirationDateTime | 2200-07-15T14:00:00.000Z |
     When user "Alice" updates the last public link share using the Graph API with
-      | resourceType       | file                     |
       | resource           | textfile1.txt            |
       | space              | Personal                 |
       | expirationDateTime | 2201-07-15T14:00:00.000Z |
@@ -534,12 +525,10 @@ Feature: Create a share link for a resource
       | OCIS_SHARING_PUBLIC_SHARE_MUST_HAVE_PASSWORD | false |
     And user "Alice" has uploaded file with content "other data" to "textfile1.txt"
     And user "Alice" has created the following link share:
-      | resourceType    | file          |
       | resource        | textfile1.txt |
       | space           | Personal      |
       | permissionsRole | view          |
     When user "Alice" sets the following password for the last link share using the Graph API:
-      | resourceType | file          |
       | resource     | textfile1.txt |
       | space        | Personal      |
       | password     | %public%      |
@@ -564,13 +553,11 @@ Feature: Create a share link for a resource
   Scenario: update password of a file's link share
     Given user "Alice" has uploaded file with content "other data" to "textfile1.txt"
     And user "Alice" has created the following link share:
-      | resourceType    | file          |
       | resource        | textfile1.txt |
       | space           | Personal      |
       | permissionsRole | view          |
       | password        | $heLlo*1234*  |
     When user "Alice" sets the following password for the last link share using the Graph API:
-      | resourceType | file          |
       | resource     | textfile1.txt |
       | space        | Personal      |
       | password     | %public%      |
@@ -598,7 +585,6 @@ Feature: Create a share link for a resource
     Given the config "OCIS_PASSWORD_POLICY_BANNED_PASSWORDS_LIST" has been set to path "config/drone/banned-password-list.txt"
     And user "Alice" has uploaded file with content "other data" to "text.txt"
     When user "Alice" creates the following link share using the Graph API:
-      | resourceType    | file              |
       | resource        | text.txt          |
       | space           | Personal          |
       | permissionsRole | view              |
@@ -645,13 +631,11 @@ Feature: Create a share link for a resource
     Given the config "OCIS_PASSWORD_POLICY_BANNED_PASSWORDS_LIST" has been set to path "config/drone/banned-password-list.txt"
     And user "Alice" has uploaded file with content "other data" to "text.txt"
     And user "Alice" has created the following link share:
-      | resourceType    | file     |
       | resource        | text.txt |
       | space           | Personal |
       | permissionsRole | view     |
       | password        | %public% |
     When user "Alice" sets the following password for the last link share using the Graph API:
-      | resourceType    | file              |
       | resource        | text.txt          |
       | space           | Personal          |
       | permissionsRole | view              |
diff --git a/tests/acceptance/features/bootstrap/SharingNgContext.php b/tests/acceptance/features/bootstrap/SharingNgContext.php
index bdd91d4d597..4c6453ea1d4 100644
--- a/tests/acceptance/features/bootstrap/SharingNgContext.php
+++ b/tests/acceptance/features/bootstrap/SharingNgContext.php
@@ -65,15 +65,10 @@ class SharingNgContext implements Context {
 	public function createLinkShare(string $user, TableNode $body): ResponseInterface {
 		$bodyRows = $body->getRowsHash();
 		$space = $bodyRows['space'];
-		$resourceType = $bodyRows['resourceType'];
 		$resource = $bodyRows['resource'];
 
 		$spaceId = ($this->spacesContext->getSpaceByName($user, $space))["id"];
-		if ($resourceType === 'folder') {
-			$itemId = $this->spacesContext->getResourceId($user, $space, $resource);
-		} else {
-			$itemId = $this->spacesContext->getFileId($user, $space, $resource);
-		}
+		$itemId = $this->spacesContext->getResourceId($user, $space, $resource);
 
 		$bodyRows['displayName'] = $bodyRows['displayName'] ?? null;
 		$bodyRows['expirationDateTime'] = $bodyRows['expirationDateTime'] ?? null;
@@ -399,14 +394,9 @@ class SharingNgContext implements Context {
 	public function userSetsOrUpdatesFollowingPasswordForLastLinkShareUsingTheGraphApi(string $user, TableNode  $body):void {
 		$bodyRows = $body->getRowsHash();
 		$space = $bodyRows['space'];
-		$resourceType = $bodyRows['resourceType'];
 		$resource = $bodyRows['resource'];
 		$spaceId = ($this->spacesContext->getSpaceByName($user, $space))["id"];
-		if ($resourceType === 'folder') {
-			$itemId = $this->spacesContext->getResourceId($user, $space, $resource);
-		} else {
-			$itemId = $this->spacesContext->getFileId($user, $space, $resource);
-		}
+		$itemId = $this->spacesContext->getResourceId($user, $space, $resource);
 
 		if (\array_key_exists('password', $bodyRows)) {
 			$body = [
@@ -432,7 +422,6 @@ class SharingNgContext implements Context {
 	/**
 	 * @param string $sharer
 	 * @param string $shareType (user|group)
-	 * @param string $resourceType
 	 * @param string $resource
 	 * @param string $space
 	 * @param string|null $sharee can be both user or group
@@ -444,15 +433,12 @@ class SharingNgContext implements Context {
 	public function removeSharePermission(
 		string $sharer,
 		string $shareType,
-		string $resourceType,
 		string $resource,
 		string $space,
 		?string $sharee = null
 	): ResponseInterface {
 		$spaceId = ($this->spacesContext->getSpaceByName($sharer, $space))["id"];
-		$itemId = ($resourceType === 'folder')
-			? $this->spacesContext->getResourceId($sharer, $space, $resource)
-			: $this->spacesContext->getFileId($sharer, $space, $resource);
+		$itemId = $this->spacesContext->getResourceId($sharer, $space, $resource);
 
 		$permId = ($shareType === 'link')
 			? $this->featureContext->shareNgGetLastCreatedLinkShareID()
@@ -470,12 +456,11 @@ class SharingNgContext implements Context {
 	}
 
 	/**
-	 * @When /^user "([^"]*)" removes the share permission of (user|group) "([^"]*)" from (file|folder) "([^"]*)" of space "([^"]*)" using the Graph API$/
+	 * @When /^user "([^"]*)" removes the share permission of (user|group) "([^"]*)" from (?:file|folder|resource) "([^"]*)" of space "([^"]*)" using the Graph API$/
 	 *
 	 * @param string $sharer
 	 * @param string $shareType (user|group)
 	 * @param string $sharee can be both user or group
-	 * @param string $resourceType
 	 * @param string $resource
 	 * @param string $space
 	 *
@@ -487,20 +472,18 @@ class SharingNgContext implements Context {
 		string $sharer,
 		string $shareType,
 		string $sharee,
-		string $resourceType,
 		string $resource,
 		string $space
 	): void {
 		$this->featureContext->setResponse(
-			$this->removeSharePermission($sharer, $shareType, $resourceType, $resource, $space)
+			$this->removeSharePermission($sharer, $shareType, $resource, $space)
 		);
 	}
 
 	/**
-	 * @When /^user "([^"]*)" removes the share permission of link from (file|folder) "([^"]*)" of space "([^"]*)" using the Graph API$/
+	 * @When /^user "([^"]*)" removes the share permission of link from (?:file|folder) "([^"]*)" of space "([^"]*)" using the Graph API$/
 	 *
 	 * @param string $sharer
-	 * @param string $resourceType
 	 * @param string $resource
 	 * @param string $space
 	 *
@@ -510,12 +493,11 @@ class SharingNgContext implements Context {
 	 */
 	public function userRemovesSharePermissionOfAResourceInLinkShareUsingGraphAPI(
 		string $sharer,
-		string $resourceType,
 		string $resource,
 		string $space
 	):void {
 		$this->featureContext->setResponse(
-			$this->removeSharePermission($sharer, 'link', $resourceType, $resource, $space)
+			$this->removeSharePermission($sharer, 'link', $resource, $space)
 		);
 	}