瀏覽代碼

comments: Add OpenAPI spec

Signed-off-by: jld3103 <jld3103yt@gmail.com>
jld3103 11 月之前
父節點
當前提交
58746575dc

+ 3 - 0
apps/comments/lib/Capabilities.php

@@ -28,6 +28,9 @@ namespace OCA\Comments;
 use OCP\Capabilities\ICapability;
 
 class Capabilities implements ICapability {
+	/**
+	 * @return array{files: array{comments: bool}}
+	 */
 	public function getCapabilities(): array {
 		return [
 			'files' => [

+ 11 - 4
apps/comments/lib/Controller/NotificationsController.php

@@ -27,7 +27,7 @@ namespace OCA\Comments\Controller;
 use OCP\AppFramework\Controller;
 use OCP\AppFramework\Http\NotFoundResponse;
 use OCP\AppFramework\Http\RedirectResponse;
-use OCP\AppFramework\Http\Response;
+use OCP\AppFramework\Http;
 use OCP\Comments\IComment;
 use OCP\Comments\ICommentsManager;
 use OCP\Files\IRootFolder;
@@ -38,8 +38,6 @@ use OCP\IUserSession;
 use OCP\Notification\IManager;
 
 /**
- * Class NotificationsController
- *
  * @package OCA\Comments\Controller
  */
 class NotificationsController extends Controller {
@@ -73,8 +71,17 @@ class NotificationsController extends Controller {
 	/**
 	 * @PublicPage
 	 * @NoCSRFRequired
+	 *
+	 * View a notification
+	 *
+	 * @param string $id ID of the notification
+	 *
+	 * @return RedirectResponse<Http::STATUS_SEE_OTHER, array{}>|NotFoundResponse<Http::STATUS_NOT_FOUND, array{}>
+	 *
+	 * 303: Redirected to notification
+	 * 404: Notification not found
 	 */
-	public function view(string $id): Response {
+	public function view(string $id): RedirectResponse|NotFoundResponse {
 		$currentUser = $this->userSession->getUser();
 		if (!$currentUser instanceof IUser) {
 			return new RedirectResponse(

+ 98 - 0
apps/comments/openapi.json

@@ -0,0 +1,98 @@
+{
+    "openapi": "3.0.3",
+    "info": {
+        "title": "comments",
+        "version": "0.0.1",
+        "description": "Files app plugin to add comments to files",
+        "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": [
+                            "comments"
+                        ],
+                        "properties": {
+                            "comments": {
+                                "type": "boolean"
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "paths": {
+        "/index.php/apps/comments/notifications/view/{id}": {
+            "get": {
+                "operationId": "notifications-view",
+                "summary": "View a notification",
+                "tags": [
+                    "notifications"
+                ],
+                "security": [
+                    {},
+                    {
+                        "bearer_auth": []
+                    },
+                    {
+                        "basic_auth": []
+                    }
+                ],
+                "parameters": [
+                    {
+                        "name": "id",
+                        "in": "path",
+                        "description": "ID of the notification",
+                        "required": true,
+                        "schema": {
+                            "type": "string"
+                        }
+                    }
+                ],
+                "responses": {
+                    "303": {
+                        "description": "Redirected to notification",
+                        "headers": {
+                            "Location": {
+                                "schema": {
+                                    "type": "string"
+                                }
+                            }
+                        }
+                    },
+                    "404": {
+                        "description": "Notification not found",
+                        "content": {
+                            "text/html": {
+                                "schema": {
+                                    "type": "string"
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    },
+    "tags": []
+}