]> source.dussan.org Git - nextcloud-server.git/commitdiff
files_trashbin: Add OpenAPI spec 39320/head
authorjld3103 <jld3103yt@gmail.com>
Wed, 14 Jun 2023 14:36:05 +0000 (16:36 +0200)
committerjld3103 <jld3103yt@gmail.com>
Thu, 13 Jul 2023 04:26:58 +0000 (06:26 +0200)
Signed-off-by: jld3103 <jld3103yt@gmail.com>
apps/files_trashbin/lib/Capabilities.php
apps/files_trashbin/lib/Controller/PreviewController.php
apps/files_trashbin/openapi.json [new file with mode: 0644]

index c0788ff7308a73fe20f9beeadd4727c944a4e835..b53881daa29bc2eeddfd275a5afb8ebcfb4b287c 100644 (file)
@@ -33,6 +33,8 @@ class Capabilities implements ICapability {
 
        /**
         * Return this classes capabilities
+        *
+        * @return array{files: array{undelete: bool}}
         */
        public function getCapabilities() {
                return [
index 9f60cc8b0b2ed016126f165af7694812d2c07d4f..e62a793a98fd0382868fc6533e59e70866c72788 100644 (file)
@@ -85,7 +85,18 @@ class PreviewController extends Controller {
         * @NoAdminRequired
         * @NoCSRFRequired
         *
-        * @return DataResponse|Http\FileDisplayResponse
+        * Get the preview for a file
+        *
+        * @param int $fileId ID of the file
+        * @param int $x Width of the preview
+        * @param int $y Height of the preview
+        * @param bool $a Whether to not crop the preview
+        *
+        * @return Http\FileDisplayResponse<Http::STATUS_OK, array{Content-Type: string}>|DataResponse<Http::STATUS_BAD_REQUEST|Http::STATUS_NOT_FOUND, array<empty>, array{}>
+        *
+        * 200: Preview returned
+        * 400: Getting preview is not possible
+        * 404: Preview not found
         */
        public function getPreview(
                int $fileId = -1,
diff --git a/apps/files_trashbin/openapi.json b/apps/files_trashbin/openapi.json
new file mode 100644 (file)
index 0000000..a96cf5f
--- /dev/null
@@ -0,0 +1,134 @@
+{
+    "openapi": "3.0.3",
+    "info": {
+        "title": "files_trashbin",
+        "version": "0.0.1",
+        "description": "This application enables users to restore files that were deleted from the system.",
+        "license": {
+            "name": "agpl"
+        }
+    },
+    "components": {
+        "securitySchemes": {
+            "basic_auth": {
+                "type": "http",
+                "scheme": "basic"
+            },
+            "bearer_auth": {
+                "type": "http",
+                "scheme": "bearer"
+            }
+        },
+        "schemas": {
+            "Capabilities": {
+                "type": "object",
+                "required": [
+                    "files"
+                ],
+                "properties": {
+                    "files": {
+                        "type": "object",
+                        "required": [
+                            "undelete"
+                        ],
+                        "properties": {
+                            "undelete": {
+                                "type": "boolean"
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "paths": {
+        "/index.php/apps/files_trashbin/preview": {
+            "get": {
+                "operationId": "preview-get-preview",
+                "summary": "Get the preview for a file",
+                "tags": [
+                    "preview"
+                ],
+                "security": [
+                    {
+                        "bearer_auth": []
+                    },
+                    {
+                        "basic_auth": []
+                    }
+                ],
+                "parameters": [
+                    {
+                        "name": "fileId",
+                        "in": "query",
+                        "description": "ID of the file",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64",
+                            "default": -1
+                        }
+                    },
+                    {
+                        "name": "x",
+                        "in": "query",
+                        "description": "Width of the preview",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64",
+                            "default": 32
+                        }
+                    },
+                    {
+                        "name": "y",
+                        "in": "query",
+                        "description": "Height of the preview",
+                        "schema": {
+                            "type": "integer",
+                            "format": "int64",
+                            "default": 32
+                        }
+                    },
+                    {
+                        "name": "a",
+                        "in": "query",
+                        "description": "Whether to not crop the preview",
+                        "schema": {
+                            "type": "integer",
+                            "default": 0
+                        }
+                    }
+                ],
+                "responses": {
+                    "200": {
+                        "description": "Preview returned",
+                        "content": {
+                            "*/*": {
+                                "schema": {
+                                    "type": "string",
+                                    "format": "binary"
+                                }
+                            }
+                        }
+                    },
+                    "400": {
+                        "description": "Getting preview is not possible",
+                        "content": {
+                            "application/json": {
+                                "schema": {}
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Preview not found",
+                        "content": {
+                            "application/json": {
+                                "schema": {}
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "tags": []
+}
\ No newline at end of file