aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChristopher Ng <chrng8@gmail.com>2024-08-07 20:52:29 -0700
committerChristopher Ng <chrng8@gmail.com>2024-08-08 10:52:20 -0700
commit36cf891b7fa22bffca8ae29d334a435dfed87330 (patch)
tree125d0e250eb00711beb2d555671db3f8f999ba8b
parente9083db7682cd8347dcc18ab8c4a6349136bd138 (diff)
downloadnextcloud-server-36cf891b7fa22bffca8ae29d334a435dfed87330.tar.gz
nextcloud-server-36cf891b7fa22bffca8ae29d334a435dfed87330.zip
feat(files): Update openapi
Signed-off-by: Christopher Ng <chrng8@gmail.com>
-rw-r--r--apps/files/lib/Controller/ApiController.php7
-rw-r--r--apps/files/lib/ResponseDefinitions.php9
-rw-r--r--apps/files/openapi.json105
3 files changed, 93 insertions, 28 deletions
diff --git a/apps/files/lib/Controller/ApiController.php b/apps/files/lib/Controller/ApiController.php
index 44e88c443e4..62ae4e6b0f0 100644
--- a/apps/files/lib/Controller/ApiController.php
+++ b/apps/files/lib/Controller/ApiController.php
@@ -261,10 +261,15 @@ class ApiController extends Controller {
/**
* Returns the folder tree of the user
*
- * @return JSONResponse<Http::STATUS_OK, FilesFolderTree, array{}>|JSONResponse<Http::STATUS_UNAUTHORIZED, array{message: string}, array{}>
+ * @param string $path The path relative to the user folder
+ * @param int $depth The depth of the tree
+ *
+ * @return JSONResponse<Http::STATUS_OK, FilesFolderTree, array{}>|JSONResponse<Http::STATUS_UNAUTHORIZED|Http::STATUS_BAD_REQUEST|Http::STATUS_NOT_FOUND, array{message: string}, array{}>
*
* 200: Folder tree returned successfully
+ * 400: Invalid folder path
* 401: Unauthorized
+ * 404: Folder not found
*/
#[NoAdminRequired]
#[ApiRoute(verb: 'GET', url: '/api/v1/folder-tree')]
diff --git a/apps/files/lib/ResponseDefinitions.php b/apps/files/lib/ResponseDefinitions.php
index 79f7544fdac..a05cbb75b21 100644
--- a/apps/files/lib/ResponseDefinitions.php
+++ b/apps/files/lib/ResponseDefinitions.php
@@ -39,13 +39,12 @@ namespace OCA\Files;
* type: string,
* }
*
- * @psalm-type FilesFolderTreeNode = array{
+ * @psalm-type FilesFolderTree = list<array{
* id: int,
+ * basename: string,
* displayName?: string,
- * children?: array<string, array{}>,
- * }
- *
- * @psalm-type FilesFolderTree = array<string, FilesFolderTreeNode>
+ * children: list<array{}>,
+ * }>
*
*/
class ResponseDefinitions {
diff --git a/apps/files/openapi.json b/apps/files/openapi.json
index c9da18b0cd1..97c95cc29c0 100644
--- a/apps/files/openapi.json
+++ b/apps/files/openapi.json
@@ -100,28 +100,30 @@
}
},
"FolderTree": {
- "type": "object",
- "additionalProperties": {
- "$ref": "#/components/schemas/FolderTreeNode"
- }
- },
- "FolderTreeNode": {
- "type": "object",
- "required": [
- "id"
- ],
- "properties": {
- "id": {
- "type": "integer",
- "format": "int64"
- },
- "displayName": {
- "type": "string"
- },
- "children": {
- "type": "object",
- "additionalProperties": {
- "type": "object"
+ "type": "array",
+ "items": {
+ "type": "object",
+ "required": [
+ "id",
+ "basename",
+ "children"
+ ],
+ "properties": {
+ "id": {
+ "type": "integer",
+ "format": "int64"
+ },
+ "basename": {
+ "type": "string"
+ },
+ "displayName": {
+ "type": "string"
+ },
+ "children": {
+ "type": "array",
+ "items": {
+ "type": "object"
+ }
}
}
}
@@ -1971,6 +1973,29 @@
"basic_auth": []
}
],
+ "requestBody": {
+ "required": false,
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "properties": {
+ "path": {
+ "type": "string",
+ "default": "/",
+ "description": "The path relative to the user folder"
+ },
+ "depth": {
+ "type": "integer",
+ "format": "int64",
+ "default": 1,
+ "description": "The depth of the tree"
+ }
+ }
+ }
+ }
+ }
+ },
"parameters": [
{
"name": "OCS-APIRequest",
@@ -2011,6 +2036,42 @@
}
}
}
+ },
+ "400": {
+ "description": "Invalid folder path",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "message"
+ ],
+ "properties": {
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
+ },
+ "404": {
+ "description": "Folder not found",
+ "content": {
+ "application/json": {
+ "schema": {
+ "type": "object",
+ "required": [
+ "message"
+ ],
+ "properties": {
+ "message": {
+ "type": "string"
+ }
+ }
+ }
+ }
+ }
}
}
}