diff options
Diffstat (limited to 'lib/pleroma')
| -rw-r--r-- | lib/pleroma/web/api_spec/helpers.ex | 9 | ||||
| -rw-r--r-- | lib/pleroma/web/api_spec/operations/account_operation.ex | 6 | ||||
| -rw-r--r-- | lib/pleroma/web/api_spec/operations/search_operation.ex | 117 | 
3 files changed, 73 insertions, 59 deletions
| diff --git a/lib/pleroma/web/api_spec/helpers.ex b/lib/pleroma/web/api_spec/helpers.ex index 183df43ee..ee077a3f9 100644 --- a/lib/pleroma/web/api_spec/helpers.ex +++ b/lib/pleroma/web/api_spec/helpers.ex @@ -47,6 +47,15 @@ defmodule Pleroma.Web.ApiSpec.Helpers do      ]    end +  def embed_relationships_param do +    Operation.parameter( +      :embed_relationships, +      :query, +      :boolean, +      "Embed relationships into accounts (Pleroma extension)" +    ) +  end +    def empty_object_response do      Operation.response("Empty object", "application/json", %Schema{type: :object, example: %{}})    end diff --git a/lib/pleroma/web/api_spec/operations/account_operation.ex b/lib/pleroma/web/api_spec/operations/account_operation.ex index 70069d6f9..c2a56b786 100644 --- a/lib/pleroma/web/api_spec/operations/account_operation.ex +++ b/lib/pleroma/web/api_spec/operations/account_operation.ex @@ -156,7 +156,8 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do        description:          "Accounts which follow the given account, if network is not hidden by the account owner.",        parameters: -        [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}] ++ pagination_params(), +        [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}] ++ +          pagination_params() ++ [embed_relationships_param()],        responses: %{          200 => Operation.response("Accounts", "application/json", array_of_accounts())        } @@ -172,7 +173,8 @@ defmodule Pleroma.Web.ApiSpec.AccountOperation do        description:          "Accounts which the given account is following, if network is not hidden by the account owner.",        parameters: -        [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}] ++ pagination_params(), +        [%Reference{"$ref": "#/components/parameters/accountIdOrNickname"}] ++ +          pagination_params() ++ [embed_relationships_param()],        responses: %{200 => Operation.response("Accounts", "application/json", array_of_accounts())}      }    end diff --git a/lib/pleroma/web/api_spec/operations/search_operation.ex b/lib/pleroma/web/api_spec/operations/search_operation.ex index 6ea00a9a8..0dd908d7f 100644 --- a/lib/pleroma/web/api_spec/operations/search_operation.ex +++ b/lib/pleroma/web/api_spec/operations/search_operation.ex @@ -24,29 +24,30 @@ defmodule Pleroma.Web.ApiSpec.SearchOperation do        tags: ["Search"],        summary: "Search for matching accounts by username or display name",        operationId: "SearchController.account_search", -      parameters: [ -        Operation.parameter(:q, :query, %Schema{type: :string}, "What to search for", -          required: true -        ), -        Operation.parameter( -          :limit, -          :query, -          %Schema{type: :integer, default: 40}, -          "Maximum number of results" -        ), -        Operation.parameter( -          :resolve, -          :query, -          %Schema{allOf: [BooleanLike], default: false}, -          "Attempt WebFinger lookup. Use this when `q` is an exact address." -        ), -        Operation.parameter( -          :following, -          :query, -          %Schema{allOf: [BooleanLike], default: false}, -          "Only include accounts that the user is following" -        ) -      ], +      parameters: +        [ +          Operation.parameter(:q, :query, %Schema{type: :string}, "What to search for", +            required: true +          ), +          Operation.parameter( +            :limit, +            :query, +            %Schema{type: :integer, default: 40}, +            "Maximum number of results" +          ), +          Operation.parameter( +            :resolve, +            :query, +            %Schema{allOf: [BooleanLike], default: false}, +            "Attempt WebFinger lookup. Use this when `q` is an exact address." +          ), +          Operation.parameter( +            :following, +            :query, +            %Schema{allOf: [BooleanLike], default: false}, +            "Only include accounts that the user is following" +          ) +        ] ++ [embed_relationships_param()],        responses: %{          200 =>            Operation.response( @@ -65,40 +66,42 @@ defmodule Pleroma.Web.ApiSpec.SearchOperation do        security: [%{"oAuth" => ["read:search"]}],        operationId: "SearchController.search",        deprecated: true, -      parameters: [ -        Operation.parameter( -          :account_id, -          :query, -          FlakeID, -          "If provided, statuses returned will be authored only by this account" -        ), -        Operation.parameter( -          :type, -          :query, -          %Schema{type: :string, enum: ["accounts", "hashtags", "statuses"]}, -          "Search type" -        ), -        Operation.parameter(:q, :query, %Schema{type: :string}, "The search query", required: true), -        Operation.parameter( -          :resolve, -          :query, -          %Schema{allOf: [BooleanLike], default: false}, -          "Attempt WebFinger lookup" -        ), -        Operation.parameter( -          :following, -          :query, -          %Schema{allOf: [BooleanLike], default: false}, -          "Only include accounts that the user is following" -        ), -        Operation.parameter( -          :offset, -          :query, -          %Schema{type: :integer}, -          "Offset" -        ) -        | pagination_params() -      ], +      parameters: +        [ +          Operation.parameter( +            :account_id, +            :query, +            FlakeID, +            "If provided, statuses returned will be authored only by this account" +          ), +          Operation.parameter( +            :type, +            :query, +            %Schema{type: :string, enum: ["accounts", "hashtags", "statuses"]}, +            "Search type" +          ), +          Operation.parameter(:q, :query, %Schema{type: :string}, "The search query", +            required: true +          ), +          Operation.parameter( +            :resolve, +            :query, +            %Schema{allOf: [BooleanLike], default: false}, +            "Attempt WebFinger lookup" +          ), +          Operation.parameter( +            :following, +            :query, +            %Schema{allOf: [BooleanLike], default: false}, +            "Only include accounts that the user is following" +          ), +          Operation.parameter( +            :offset, +            :query, +            %Schema{type: :integer}, +            "Offset" +          ) +        ] ++ pagination_params() ++ [embed_relationships_param()],        responses: %{          200 => Operation.response("Results", "application/json", results())        } | 
