update mastofe paths (#95)
[akkoma] / lib / pleroma / web / api_spec / operations / admin / chat_operation.ex
index 7045fd7cec25a958fc7146f084742267292b188c..57906445e7227a952effc46cbbfafffb5cb7ce75 100644 (file)
@@ -1,11 +1,11 @@
 # Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
 # SPDX-License-Identifier: AGPL-3.0-only
 
 defmodule Pleroma.Web.ApiSpec.Admin.ChatOperation do
   alias OpenApiSpex.Operation
-  alias Pleroma.Web.ApiSpec.Schemas.ApiError
-  alias Pleroma.Web.ApiSpec.Schemas.FlakeID
+  alias Pleroma.Web.ApiSpec.Schemas.Chat
+  alias Pleroma.Web.ApiSpec.Schemas.ChatMessage
 
   import Pleroma.Web.ApiSpec.Helpers
 
@@ -16,29 +16,81 @@ defmodule Pleroma.Web.ApiSpec.Admin.ChatOperation do
 
   def delete_message_operation do
     %Operation{
-      tags: ["Admin", "Chats"],
+      tags: ["Chat administration"],
       summary: "Delete an individual chat message",
-      operationId: "AdminAPI.ChatController.delete",
-      parameters: [id_param(), message_id_param()] ++ admin_api_params(),
-      security: [%{"oAuth" => ["write:chats"]}],
+      operationId: "AdminAPI.ChatController.delete_message",
+      parameters: [
+        Operation.parameter(:id, :path, :string, "The ID of the Chat"),
+        Operation.parameter(:message_id, :path, :string, "The ID of the message")
+      ],
       responses: %{
-        200 => empty_object_response(),
-        404 => Operation.response("Not Found", "application/json", ApiError)
-      }
+        200 =>
+          Operation.response(
+            "The deleted ChatMessage",
+            "application/json",
+            ChatMessage
+          )
+      },
+      security: [
+        %{
+          "oAuth" => ["admin:write:chats"]
+        }
+      ]
     }
   end
 
-  def id_param do
-    Operation.parameter(:id, :path, FlakeID, "Chat ID",
-      example: "9umDrYheeY451cQnEe",
-      required: true
-    )
+  def messages_operation do
+    %Operation{
+      tags: ["Chat administration"],
+      summary: "Get chat's messages",
+      operationId: "AdminAPI.ChatController.messages",
+      parameters:
+        [Operation.parameter(:id, :path, :string, "The ID of the Chat")] ++
+          pagination_params(),
+      responses: %{
+        200 =>
+          Operation.response(
+            "The messages in the chat",
+            "application/json",
+            Pleroma.Web.ApiSpec.ChatOperation.chat_messages_response()
+          )
+      },
+      security: [
+        %{
+          "oAuth" => ["admin:read:chats"]
+        }
+      ]
+    }
   end
 
-  def message_id_param do
-    Operation.parameter(:message_id, :path, FlakeID, "Chat message ID",
-      example: "9umDrYheeY451cQnEe",
-      required: true
-    )
+  def show_operation do
+    %Operation{
+      tags: ["Chat administration"],
+      summary: "Create a chat",
+      operationId: "AdminAPI.ChatController.show",
+      parameters: [
+        Operation.parameter(
+          :id,
+          :path,
+          :string,
+          "The id of the chat",
+          required: true,
+          example: "1234"
+        )
+      ],
+      responses: %{
+        200 =>
+          Operation.response(
+            "The existing chat",
+            "application/json",
+            Chat
+          )
+      },
+      security: [
+        %{
+          "oAuth" => ["admin:read"]
+        }
+      ]
+    }
   end
 end