defmodule Pleroma.Web.ApiSpec.AccountOperation do
alias OpenApiSpex.Operation
+ alias OpenApiSpex.Reference
alias OpenApiSpex.Schema
alias Pleroma.Web.ApiSpec.Helpers
alias Pleroma.Web.ApiSpec.Schemas.Account
alias Pleroma.Web.ApiSpec.Schemas.AccountCreateRequest
alias Pleroma.Web.ApiSpec.Schemas.AccountCreateResponse
alias Pleroma.Web.ApiSpec.Schemas.AccountRelationshipsResponse
+ alias Pleroma.Web.ApiSpec.Schemas.AccountsResponse
alias Pleroma.Web.ApiSpec.Schemas.AccountUpdateCredentialsRequest
+ alias Pleroma.Web.ApiSpec.Schemas.BooleanLike
+ alias Pleroma.Web.ApiSpec.Schemas.ListsResponse
+ alias Pleroma.Web.ApiSpec.Schemas.StatusesResponse
+ alias Pleroma.Web.ApiSpec.Schemas.VisibilityScope
@spec open_api_operation(atom) :: Operation.t()
def open_api_operation(action) do
summary: "Account",
operationId: "AccountController.show",
description: "View information about a profile.",
- parameters: [
- Operation.parameter(:id, :path, :string, "Account ID or nickname",
- example: "123",
- required: true
- )
- ],
+ parameters: [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}],
responses: %{
200 => Operation.response("Account", "application/json", Account)
}
end
def statuses_operation do
- :ok
+ %Operation{
+ tags: ["accounts"],
+ summary: "Statuses",
+ operationId: "AccountController.statuses",
+ description:
+ "Statuses posted to the given account. Public (for public statuses only), or user token + `read:statuses` (for private statuses the user is authorized to see)",
+ parameters: [
+ %Reference{"$ref": "#/components/parameters/accountIdOrNickname"},
+ Operation.parameter(:pinned, :query, BooleanLike, "Pinned"),
+ Operation.parameter(:tagged, :query, :string, "With tag"),
+ Operation.parameter(:only_media, :query, BooleanLike, "Only meadia"),
+ Operation.parameter(:with_muted, :query, BooleanLike, "With muted"),
+ Operation.parameter(:exclude_reblogs, :query, BooleanLike, "Exclude reblobs"),
+ Operation.parameter(
+ :exclude_visibilities,
+ :query,
+ %Schema{type: :array, items: VisibilityScope},
+ "Exclude visibilities"
+ ),
+ Operation.parameter(:max_id, :query, :string, "Max ID"),
+ Operation.parameter(:min_id, :query, :string, "Mix ID"),
+ Operation.parameter(:since_id, :query, :string, "Since ID"),
+ Operation.parameter(
+ :limit,
+ :query,
+ %Schema{type: :integer, default: 20, maximum: 40},
+ "Limit"
+ )
+ ],
+ responses: %{
+ 200 => Operation.response("Statuses", "application/json", StatusesResponse)
+ }
+ }
end
def followers_operation do
- :ok
+ %Operation{
+ tags: ["accounts"],
+ summary: "Followers",
+ operationId: "AccountController.followers",
+ security: [%{"oAuth" => ["read:accounts"]}],
+ description:
+ "Accounts which follow the given account, if network is not hidden by the account owner.",
+ parameters: [
+ %Reference{"$ref": "#/components/parameters/accountIdOrNickname"},
+ Operation.parameter(:max_id, :query, :string, "Max ID"),
+ Operation.parameter(:min_id, :query, :string, "Mix ID"),
+ Operation.parameter(:since_id, :query, :string, "Since ID"),
+ Operation.parameter(
+ :limit,
+ :query,
+ %Schema{type: :integer, default: 20, maximum: 40},
+ "Limit"
+ )
+ ],
+ responses: %{
+ 200 => Operation.response("Accounts", "application/json", AccountsResponse)
+ }
+ }
+ end
+
+ def following_operation do
+ %Operation{
+ tags: ["accounts"],
+ summary: "Following",
+ operationId: "AccountController.following",
+ security: [%{"oAuth" => ["read:accounts"]}],
+ description:
+ "Accounts which the given account is following, if network is not hidden by the account owner.",
+ parameters: [
+ %Reference{"$ref": "#/components/parameters/accountIdOrNickname"},
+ Operation.parameter(:max_id, :query, :string, "Max ID"),
+ Operation.parameter(:min_id, :query, :string, "Mix ID"),
+ Operation.parameter(:since_id, :query, :string, "Since ID"),
+ Operation.parameter(
+ :limit,
+ :query,
+ %Schema{type: :integer, default: 20, maximum: 40},
+ "Limit"
+ )
+ ],
+ responses: %{
+ 200 => Operation.response("Accounts", "application/json", AccountsResponse)
+ }
+ }
+ end
+
+ def lists_operation do
+ %Operation{
+ tags: ["accounts"],
+ summary: "Lists containing this account",
+ operationId: "AccountController.lists",
+ security: [%{"oAuth" => ["read:lists"]}],
+ description: "User lists that you have added this account to.",
+ parameters: [
+ %Reference{"$ref": "#/components/parameters/accountIdOrNickname"}
+ ],
+ responses: %{
+ 200 => Operation.response("Lists", "application/json", ListsResponse)
+ }
+ }
end
- def following_operation, do: :ok
- def lists_operation, do: :ok
def follow_operation, do: :ok
def unfollow_operation, do: :ok
def mute_operation, do: :ok