forked from AkkomaGang/akkoma
9fcff7851f
Too many changes in OpenAPI spec to describe each one, but basically it is tag fixes, bringing consitency to operation summaries and fixing some incorrect information.
167 lines
4.6 KiB
Elixir
167 lines
4.6 KiB
Elixir
# Pleroma: A lightweight social networking server
|
|
# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
defmodule Pleroma.Web.ApiSpec.Admin.StatusOperation do
|
|
alias OpenApiSpex.Operation
|
|
alias OpenApiSpex.Schema
|
|
alias Pleroma.Web.ApiSpec.Schemas.Account
|
|
alias Pleroma.Web.ApiSpec.Schemas.ApiError
|
|
alias Pleroma.Web.ApiSpec.Schemas.FlakeID
|
|
alias Pleroma.Web.ApiSpec.Schemas.Status
|
|
alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope
|
|
|
|
import Pleroma.Web.ApiSpec.Helpers
|
|
import Pleroma.Web.ApiSpec.StatusOperation, only: [id_param: 0]
|
|
|
|
def open_api_operation(action) do
|
|
operation = String.to_existing_atom("#{action}_operation")
|
|
apply(__MODULE__, operation, [])
|
|
end
|
|
|
|
def index_operation do
|
|
%Operation{
|
|
tags: ["Status administration"],
|
|
operationId: "AdminAPI.StatusController.index",
|
|
summary: "Get all statuses",
|
|
security: [%{"oAuth" => ["read:statuses"]}],
|
|
parameters: [
|
|
Operation.parameter(
|
|
:godmode,
|
|
:query,
|
|
%Schema{type: :boolean, default: false},
|
|
"Allows to see private statuses"
|
|
),
|
|
Operation.parameter(
|
|
:local_only,
|
|
:query,
|
|
%Schema{type: :boolean, default: false},
|
|
"Excludes remote statuses"
|
|
),
|
|
Operation.parameter(
|
|
:with_reblogs,
|
|
:query,
|
|
%Schema{type: :boolean, default: false},
|
|
"Allows to see reblogs"
|
|
),
|
|
Operation.parameter(
|
|
:page,
|
|
:query,
|
|
%Schema{type: :integer, default: 1},
|
|
"Page"
|
|
),
|
|
Operation.parameter(
|
|
:page_size,
|
|
:query,
|
|
%Schema{type: :integer, default: 50},
|
|
"Number of statuses to return"
|
|
)
|
|
| admin_api_params()
|
|
],
|
|
responses: %{
|
|
200 =>
|
|
Operation.response("Array of statuses", "application/json", %Schema{
|
|
type: :array,
|
|
items: status()
|
|
})
|
|
}
|
|
}
|
|
end
|
|
|
|
def show_operation do
|
|
%Operation{
|
|
tags: ["Status adminitration)"],
|
|
summary: "Get status",
|
|
operationId: "AdminAPI.StatusController.show",
|
|
parameters: [id_param() | admin_api_params()],
|
|
security: [%{"oAuth" => ["read:statuses"]}],
|
|
responses: %{
|
|
200 => Operation.response("Status", "application/json", status()),
|
|
404 => Operation.response("Not Found", "application/json", ApiError)
|
|
}
|
|
}
|
|
end
|
|
|
|
def update_operation do
|
|
%Operation{
|
|
tags: ["Status adminitration)"],
|
|
summary: "Change the scope of a status",
|
|
operationId: "AdminAPI.StatusController.update",
|
|
parameters: [id_param() | admin_api_params()],
|
|
security: [%{"oAuth" => ["write:statuses"]}],
|
|
requestBody: request_body("Parameters", update_request(), required: true),
|
|
responses: %{
|
|
200 => Operation.response("Status", "application/json", Status),
|
|
400 => Operation.response("Error", "application/json", ApiError)
|
|
}
|
|
}
|
|
end
|
|
|
|
def delete_operation do
|
|
%Operation{
|
|
tags: ["Status adminitration)"],
|
|
summary: "Delete status",
|
|
operationId: "AdminAPI.StatusController.delete",
|
|
parameters: [id_param() | admin_api_params()],
|
|
security: [%{"oAuth" => ["write:statuses"]}],
|
|
responses: %{
|
|
200 => empty_object_response(),
|
|
404 => Operation.response("Not Found", "application/json", ApiError)
|
|
}
|
|
}
|
|
end
|
|
|
|
defp status do
|
|
%Schema{
|
|
anyOf: [
|
|
Status,
|
|
%Schema{
|
|
type: :object,
|
|
properties: %{
|
|
account: %Schema{allOf: [Account, admin_account()]}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
end
|
|
|
|
def admin_account do
|
|
%Schema{
|
|
type: :object,
|
|
properties: %{
|
|
id: FlakeID,
|
|
avatar: %Schema{type: :string},
|
|
nickname: %Schema{type: :string},
|
|
display_name: %Schema{type: :string},
|
|
deactivated: %Schema{type: :boolean},
|
|
local: %Schema{type: :boolean},
|
|
roles: %Schema{
|
|
type: :object,
|
|
properties: %{
|
|
admin: %Schema{type: :boolean},
|
|
moderator: %Schema{type: :boolean}
|
|
}
|
|
},
|
|
tags: %Schema{type: :string},
|
|
is_confirmed: %Schema{type: :string}
|
|
}
|
|
}
|
|
end
|
|
|
|
defp update_request do
|
|
%Schema{
|
|
type: :object,
|
|
properties: %{
|
|
sensitive: %Schema{
|
|
type: :boolean,
|
|
description: "Mark status and attached media as sensitive?"
|
|
},
|
|
visibility: VisibilityScope
|
|
},
|
|
example: %{
|
|
"visibility" => "private",
|
|
"sensitive" => "false"
|
|
}
|
|
}
|
|
end
|
|
end
|