fix(provisioning_api): add missing @return annotation for editUserMultiField

-e
Signed-off-by: Peter Ringelmann <peter.ringelmann@nextcloud.com>
This commit is contained in:
Peter Ringelmann 2026-04-21 14:13:45 +02:00
parent d1a548f018
commit c05904fa04
6 changed files with 620 additions and 9 deletions

View file

@ -915,6 +915,11 @@ class UsersController extends AUserDataOCSController {
* @param string|null $manager Manager user ID (null = no change, '' = clear)
* @param list<string>|null $groups Group IDs to assign (null = no change, [] = remove all)
* @param list<string>|null $subadminGroups Subadmin group IDs (null = no change, [] = remove all)
* @return DataResponse<Http::STATUS_OK, Provisioning_APIUserDetails, array{}>|DataResponse<Http::STATUS_UNPROCESSABLE_ENTITY, array{errors: array<string, string>}, array{}>
* @throws OCSException
*
* 200: User updated successfully
* 422: One or more submitted fields failed validation
*/
#[PasswordConfirmationRequired]
#[NoAdminRequired]
@ -1133,7 +1138,9 @@ class UsersController extends AUserDataOCSController {
}
}
return new DataResponse($this->getUserData($userId));
/** @var Provisioning_APIUserDetails $data */
$data = $this->getUserData($userId);
return new DataResponse($data);
}
/**

View file

@ -4566,6 +4566,210 @@
}
}
},
"patch": {
"operationId": "users-edit-user-multi-field",
"summary": "Update multiple user account fields atomically. All submitted fields are validated first; if any fail, no changes are applied.",
"description": "Unlike editUser (which updates one field at a time via key/value), this method accepts named fields and applies them all in a single request.\nThis endpoint requires password confirmation",
"tags": [
"users"
],
"security": [
{
"bearer_auth": []
},
{
"basic_auth": []
}
],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"displayName": {
"type": "string",
"nullable": true,
"default": null,
"description": "New display name (null = no change)"
},
"password": {
"type": "string",
"nullable": true,
"default": null,
"description": "New password (null = no change)"
},
"email": {
"type": "string",
"nullable": true,
"default": null,
"description": "New primary email (null = no change, '' = clear)"
},
"quota": {
"type": "string",
"nullable": true,
"default": null,
"description": "New quota e.g. \"5 GB\" (null = no change)"
},
"language": {
"type": "string",
"nullable": true,
"default": null,
"description": "Language code e.g. \"de\" (null = no change)"
},
"manager": {
"type": "string",
"nullable": true,
"default": null,
"description": "Manager user ID (null = no change, '' = clear)"
},
"groups": {
"type": "array",
"nullable": true,
"default": null,
"description": "Group IDs to assign (null = no change, [] = remove all)",
"items": {
"type": "string"
}
},
"subadminGroups": {
"type": "array",
"nullable": true,
"default": null,
"description": "Subadmin group IDs (null = no change, [] = remove all)",
"items": {
"type": "string"
}
}
}
}
}
}
},
"parameters": [
{
"name": "userId",
"in": "path",
"description": "The user to update",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "OCS-APIRequest",
"in": "header",
"description": "Required to be true for the API request to pass",
"required": true,
"schema": {
"type": "boolean",
"default": true
}
}
],
"responses": {
"200": {
"description": "User updated successfully",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"$ref": "#/components/schemas/UserDetails"
}
}
}
}
}
}
}
},
"422": {
"description": "One or more submitted fields failed validation",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"type": "object",
"required": [
"errors"
],
"properties": {
"errors": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
}
}
}
}
}
},
"401": {
"description": "Current user is not logged in",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {}
}
}
}
}
}
}
}
}
},
"delete": {
"operationId": "users-delete-user",
"summary": "Delete a user",

View file

@ -2081,6 +2081,210 @@
}
}
},
"patch": {
"operationId": "users-edit-user-multi-field",
"summary": "Update multiple user account fields atomically. All submitted fields are validated first; if any fail, no changes are applied.",
"description": "Unlike editUser (which updates one field at a time via key/value), this method accepts named fields and applies them all in a single request.\nThis endpoint requires password confirmation",
"tags": [
"users"
],
"security": [
{
"bearer_auth": []
},
{
"basic_auth": []
}
],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"displayName": {
"type": "string",
"nullable": true,
"default": null,
"description": "New display name (null = no change)"
},
"password": {
"type": "string",
"nullable": true,
"default": null,
"description": "New password (null = no change)"
},
"email": {
"type": "string",
"nullable": true,
"default": null,
"description": "New primary email (null = no change, '' = clear)"
},
"quota": {
"type": "string",
"nullable": true,
"default": null,
"description": "New quota e.g. \"5 GB\" (null = no change)"
},
"language": {
"type": "string",
"nullable": true,
"default": null,
"description": "Language code e.g. \"de\" (null = no change)"
},
"manager": {
"type": "string",
"nullable": true,
"default": null,
"description": "Manager user ID (null = no change, '' = clear)"
},
"groups": {
"type": "array",
"nullable": true,
"default": null,
"description": "Group IDs to assign (null = no change, [] = remove all)",
"items": {
"type": "string"
}
},
"subadminGroups": {
"type": "array",
"nullable": true,
"default": null,
"description": "Subadmin group IDs (null = no change, [] = remove all)",
"items": {
"type": "string"
}
}
}
}
}
}
},
"parameters": [
{
"name": "userId",
"in": "path",
"description": "The user to update",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "OCS-APIRequest",
"in": "header",
"description": "Required to be true for the API request to pass",
"required": true,
"schema": {
"type": "boolean",
"default": true
}
}
],
"responses": {
"200": {
"description": "User updated successfully",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"$ref": "#/components/schemas/UserDetails"
}
}
}
}
}
}
}
},
"422": {
"description": "One or more submitted fields failed validation",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"type": "object",
"required": [
"errors"
],
"properties": {
"errors": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
}
}
}
}
}
},
"401": {
"description": "Current user is not logged in",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {}
}
}
}
}
}
}
}
}
},
"delete": {
"operationId": "users-delete-user",
"summary": "Delete a user",

View file

@ -2,7 +2,6 @@ SPDX-License-Identifier: MIT
SPDX-License-Identifier: ISC
SPDX-License-Identifier: GPL-3.0-or-later
SPDX-License-Identifier: BSD-3-Clause
SPDX-License-Identifier: Apache-2.0
SPDX-License-Identifier: AGPL-3.0-or-later
SPDX-License-Identifier: (MPL-2.0 OR Apache-2.0)
SPDX-FileCopyrightText: webfansplz
@ -40,7 +39,6 @@ SPDX-FileCopyrightText: Eduardo San Martin Morote
SPDX-FileCopyrightText: Dr.-Ing. Mario Heiderich, Cure53 <mario@cure53.de> (https://cure53.de/)
SPDX-FileCopyrightText: David Clark
SPDX-FileCopyrightText: Christoph Wurst
SPDX-FileCopyrightText: Austin Andrews
SPDX-FileCopyrightText: Anthony Fu <https://github.com/antfu>
SPDX-FileCopyrightText: Anthony Fu <anthonyfu117@hotmail.com>
SPDX-FileCopyrightText: @nextcloud/dialogs developers
@ -53,9 +51,6 @@ This file is generated from multiple sources. Included packages:
- @floating-ui/utils
- version: 0.2.11
- license: MIT
- @mdi/svg
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/auth
- version: 2.5.3
- license: GPL-3.0-or-later

View file

@ -96,9 +96,6 @@ This file is generated from multiple sources. Included packages:
- @mdi/js
- version: 7.4.47
- license: Apache-2.0
- @mdi/svg
- version: 7.4.47
- license: Apache-2.0
- @nextcloud/auth
- version: 2.5.3
- license: GPL-3.0-or-later

View file

@ -32016,6 +32016,210 @@
}
}
},
"patch": {
"operationId": "provisioning_api-users-edit-user-multi-field",
"summary": "Update multiple user account fields atomically. All submitted fields are validated first; if any fail, no changes are applied.",
"description": "Unlike editUser (which updates one field at a time via key/value), this method accepts named fields and applies them all in a single request.\nThis endpoint requires password confirmation",
"tags": [
"provisioning_api/users"
],
"security": [
{
"bearer_auth": []
},
{
"basic_auth": []
}
],
"requestBody": {
"required": false,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"displayName": {
"type": "string",
"nullable": true,
"default": null,
"description": "New display name (null = no change)"
},
"password": {
"type": "string",
"nullable": true,
"default": null,
"description": "New password (null = no change)"
},
"email": {
"type": "string",
"nullable": true,
"default": null,
"description": "New primary email (null = no change, '' = clear)"
},
"quota": {
"type": "string",
"nullable": true,
"default": null,
"description": "New quota e.g. \"5 GB\" (null = no change)"
},
"language": {
"type": "string",
"nullable": true,
"default": null,
"description": "Language code e.g. \"de\" (null = no change)"
},
"manager": {
"type": "string",
"nullable": true,
"default": null,
"description": "Manager user ID (null = no change, '' = clear)"
},
"groups": {
"type": "array",
"nullable": true,
"default": null,
"description": "Group IDs to assign (null = no change, [] = remove all)",
"items": {
"type": "string"
}
},
"subadminGroups": {
"type": "array",
"nullable": true,
"default": null,
"description": "Subadmin group IDs (null = no change, [] = remove all)",
"items": {
"type": "string"
}
}
}
}
}
}
},
"parameters": [
{
"name": "userId",
"in": "path",
"description": "The user to update",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "OCS-APIRequest",
"in": "header",
"description": "Required to be true for the API request to pass",
"required": true,
"schema": {
"type": "boolean",
"default": true
}
}
],
"responses": {
"200": {
"description": "User updated successfully",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"$ref": "#/components/schemas/ProvisioningApiUserDetails"
}
}
}
}
}
}
}
},
"422": {
"description": "One or more submitted fields failed validation",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {
"type": "object",
"required": [
"errors"
],
"properties": {
"errors": {
"type": "object",
"additionalProperties": {
"type": "string"
}
}
}
}
}
}
}
}
}
}
},
"401": {
"description": "Current user is not logged in",
"content": {
"application/json": {
"schema": {
"type": "object",
"required": [
"ocs"
],
"properties": {
"ocs": {
"type": "object",
"required": [
"meta",
"data"
],
"properties": {
"meta": {
"$ref": "#/components/schemas/OCSMeta"
},
"data": {}
}
}
}
}
}
}
}
}
},
"delete": {
"operationId": "provisioning_api-users-delete-user",
"summary": "Delete a user",