akkoma/lib/pleroma/web/api_spec/operations/admin/chat_operation.ex

97 lines
2.4 KiB
Elixir
Raw Normal View History

2020-08-31 18:56:05 -06:00
# Pleroma: A lightweight social networking server
# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/>
2020-08-31 18:56:05 -06:00
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ApiSpec.Admin.ChatOperation do
alias OpenApiSpex.Operation
2020-09-01 18:49:46 -06:00
alias Pleroma.Web.ApiSpec.Schemas.Chat
2020-09-01 19:40:36 -06:00
alias Pleroma.Web.ApiSpec.Schemas.ChatMessage
2020-08-31 18:56:05 -06:00
import Pleroma.Web.ApiSpec.Helpers
def open_api_operation(action) do
operation = String.to_existing_atom("#{action}_operation")
apply(__MODULE__, operation, [])
end
def delete_message_operation do
%Operation{
tags: ["Chat administration"],
2020-08-31 18:56:05 -06:00
summary: "Delete an individual chat message",
2020-09-01 19:40:36 -06:00
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")
],
2020-08-31 18:56:05 -06:00
responses: %{
2020-09-01 19:40:36 -06:00
200 =>
Operation.response(
"The deleted ChatMessage",
"application/json",
ChatMessage
)
},
security: [
%{
"oAuth" => ["admin:write:chats"]
2020-09-01 19:40:36 -06:00
}
]
2020-08-31 18:56:05 -06:00
}
end
2020-09-01 18:39:34 -06:00
def messages_operation do
%Operation{
tags: ["Chat administration"],
summary: "Get chat's messages",
2020-09-01 18:39:34 -06:00
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"]
2020-09-01 18:39:34 -06:00
}
]
}
end
2020-09-01 18:49:46 -06:00
def show_operation do
%Operation{
tags: ["Chat administration"],
2020-09-01 18:49:46 -06:00
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"]
2020-09-01 18:49:46 -06:00
}
]
}
end
2020-08-31 18:56:05 -06:00
end