defmodule Pleroma.Web.ApiSpec.ChatOperation do
alias OpenApiSpex.Operation
alias OpenApiSpex.Schema
- alias Pleroma.Web.ApiSpec.Helpers
alias Pleroma.Web.ApiSpec.Schemas.ChatMessageCreateRequest
- alias Pleroma.Web.ApiSpec.Schemas.ChatMessageResponse
- alias Pleroma.Web.ApiSpec.Schemas.ChatResponse
+ alias Pleroma.Web.ApiSpec.Schemas.ChatMessage
+ alias Pleroma.Web.ApiSpec.Schemas.Chat
+
+ import Pleroma.Web.ApiSpec.Helpers
@spec open_api_operation(atom) :: Operation.t()
def open_api_operation(action) do
Operation.response(
"The created or existing chat",
"application/json",
- ChatResponse
+ Chat
)
},
security: [
tags: ["chat"],
summary: "Get a list of chats that you participated in",
operationId: "ChatController.index",
- parameters: [
- Operation.parameter(:limit, :query, :integer, "How many results to return", example: 20),
- Operation.parameter(:min_id, :query, :string, "Return only chats after this id"),
- Operation.parameter(:max_id, :query, :string, "Return only chats before this id")
- ],
+ parameters: pagination_params(),
responses: %{
200 => Operation.response("The chats of the user", "application/json", chats_response())
},
tags: ["chat"],
summary: "Get the most recent messages of the chat",
operationId: "ChatController.messages",
- parameters: [
- Operation.parameter(:id, :path, :string, "The ID of the Chat"),
- Operation.parameter(:limit, :query, :integer, "How many results to return", example: 20),
- Operation.parameter(:min_id, :query, :string, "Return only messages after this id"),
- Operation.parameter(:max_id, :query, :string, "Return only messages before this id")
- ],
+ parameters:
+ [Operation.parameter(:id, :path, :string, "The ID of the Chat")] ++
+ pagination_params(),
responses: %{
200 =>
Operation.response(
parameters: [
Operation.parameter(:id, :path, :string, "The ID of the Chat")
],
- requestBody: Helpers.request_body("Parameters", ChatMessageCreateRequest, required: true),
+ requestBody: request_body("Parameters", ChatMessageCreateRequest, required: true),
responses: %{
200 =>
Operation.response(
"The newly created ChatMessage",
"application/json",
- ChatMessageResponse
+ ChatMessage
)
},
security: [
title: "ChatsResponse",
description: "Response schema for multiple Chats",
type: :array,
- items: ChatResponse,
+ items: Chat,
example: [
%{
"account" => %{
title: "ChatMessagesResponse",
description: "Response schema for multiple ChatMessages",
type: :array,
- items: ChatMessageResponse,
+ items: ChatMessage,
example: [
%{
"emojis" => [