X-Git-Url: https://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Fapi_spec%2Foperations%2Fchat_operation.ex;h=a90bc4cc913701e4142002773ea6493d6553f976;hb=1b79dce7bc53f0aa6ce07fdc178bb72b5caabe98;hp=a1c5db5dcd283569592d62a23da78069d9e30470;hpb=814c3e51714b2a7de30ed751a6aef361fc712807;p=akkoma
diff --git a/lib/pleroma/web/api_spec/operations/chat_operation.ex b/lib/pleroma/web/api_spec/operations/chat_operation.ex
index a1c5db5dc..a90bc4cc9 100644
--- a/lib/pleroma/web/api_spec/operations/chat_operation.ex
+++ b/lib/pleroma/web/api_spec/operations/chat_operation.ex
@@ -1,11 +1,12 @@
# Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors
+# Copyright © 2017-2021 Pleroma Authors
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ApiSpec.ChatOperation do
alias OpenApiSpex.Operation
alias OpenApiSpex.Schema
alias Pleroma.Web.ApiSpec.Schemas.ApiError
+ alias Pleroma.Web.ApiSpec.Schemas.BooleanLike
alias Pleroma.Web.ApiSpec.Schemas.Chat
alias Pleroma.Web.ApiSpec.Schemas.ChatMessage
@@ -23,6 +24,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 +35,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 +122,7 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
},
security: [
%{
- "oAuth" => ["write"]
+ "oAuth" => ["write:chats"]
}
]
}
@@ -106,13 +133,16 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
tags: ["chat"],
summary: "Get a list of chats that you participated in",
operationId: "ChatController.index",
- parameters: pagination_params(),
+ parameters: [
+ Operation.parameter(:with_muted, :query, BooleanLike, "Include chats from muted users")
+ | pagination_params()
+ ],
responses: %{
200 => Operation.response("The chats of the user", "application/json", chats_response())
},
security: [
%{
- "oAuth" => ["read"]
+ "oAuth" => ["read:chats"]
}
]
}
@@ -132,11 +162,12 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
"The messages in the chat",
"application/json",
chat_messages_response()
- )
+ ),
+ 404 => Operation.response("Not Found", "application/json", ApiError)
},
security: [
%{
- "oAuth" => ["read"]
+ "oAuth" => ["read:chats"]
}
]
}
@@ -158,11 +189,12 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
"application/json",
ChatMessage
),
- 400 => Operation.response("Bad Request", "application/json", ApiError)
+ 400 => Operation.response("Bad Request", "application/json", ApiError),
+ 422 => Operation.response("MRF Rejection", "application/json", ApiError)
},
security: [
%{
- "oAuth" => ["write"]
+ "oAuth" => ["write:chats"]
}
]
}
@@ -187,7 +219,7 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
},
security: [
%{
- "oAuth" => ["write"]
+ "oAuth" => ["write:chats"]
}
]
}
@@ -274,15 +306,17 @@ defmodule Pleroma.Web.ApiSpec.ChatOperation do
"content" => "Check this out :firefox:",
"id" => "13",
"chat_id" => "1",
- "actor_id" => "someflakeid"
+ "account_id" => "someflakeid",
+ "unread" => false
},
%{
- "actor_id" => "someflakeid",
+ "account_id" => "someflakeid",
"content" => "Whats' up?",
"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 +340,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