Merge branch 'develop' into activation-meta
[akkoma] / lib / pleroma / web / api_spec / operations / chat_operation.ex
index a1c5db5dcd283569592d62a23da78069d9e30470..cf299bfc264a39cbe05ed9fc554095bf1b7a45ad 100644 (file)
@@ -23,6 +23,7 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
       summary: "Mark all messages in the chat as read",
       operationId: "ChatController.mark_as_read",
       parameters: [Operation.parameter(:id, :path, :string, "The ID of the Chat")],
+      requestBody: request_body("Parameters", mark_as_read()),
       responses: %{
         200 =>
           Operation.response(
@@ -33,7 +34,32 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
       },
       security: [
         %{
-          "oAuth" => ["write"]
+          "oAuth" => ["write:chats"]
+        }
+      ]
+    }
+  end
+
+  def mark_message_as_read_operation do
+    %Operation{
+      tags: ["chat"],
+      summary: "Mark one message in the chat as read",
+      operationId: "ChatController.mark_message_as_read",
+      parameters: [
+        Operation.parameter(:id, :path, :string, "The ID of the Chat"),
+        Operation.parameter(:message_id, :path, :string, "The ID of the message")
+      ],
+      responses: %{
+        200 =>
+          Operation.response(
+            "The read ChatMessage",
+            "application/json",
+            ChatMessage
+          )
+      },
+      security: [
+        %{
+          "oAuth" => ["write:chats"]
         }
       ]
     }
@@ -95,7 +121,7 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
       },
       security: [
         %{
-          "oAuth" => ["write"]
+          "oAuth" => ["write:chats"]
         }
       ]
     }
@@ -112,7 +138,7 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
       },
       security: [
         %{
-          "oAuth" => ["read"]
+          "oAuth" => ["read:chats"]
         }
       ]
     }
@@ -136,7 +162,7 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
       },
       security: [
         %{
-          "oAuth" => ["read"]
+          "oAuth" => ["read:chats"]
         }
       ]
     }
@@ -162,7 +188,7 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
       },
       security: [
         %{
-          "oAuth" => ["write"]
+          "oAuth" => ["write:chats"]
         }
       ]
     }
@@ -187,7 +213,7 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
       },
       security: [
         %{
-          "oAuth" => ["write"]
+          "oAuth" => ["write:chats"]
         }
       ]
     }
@@ -274,7 +300,8 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
           "content" => "Check this out :firefox:",
           "id" => "13",
           "chat_id" => "1",
-          "actor_id" => "someflakeid"
+          "actor_id" => "someflakeid",
+          "unread" => false
         },
         %{
           "actor_id" => "someflakeid",
@@ -282,7 +309,8 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
           "id" => "12",
           "chat_id" => "1",
           "emojis" => [],
-          "created_at" => "2020-04-21T15:06:45.000Z"
+          "created_at" => "2020-04-21T15:06:45.000Z",
+          "unread" => false
         }
       ]
     }
@@ -306,4 +334,22 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
       }
     }
   end
+
+  def mark_as_read do
+    %Schema{
+      title: "MarkAsReadRequest",
+      description: "POST body for marking a number of chat messages as read",
+      type: :object,
+      required: [:last_read_id],
+      properties: %{
+        last_read_id: %Schema{
+          type: :string,
+          description: "The content of your message."
+        }
+      },
+      example: %{
+        "last_read_id" => "abcdef12456"
+      }
+    }
+  end
 end