# Pleroma: A lightweight social networking server
-# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
+# Copyright © 2017-2021 Pleroma Authors <https://pleroma.social/>
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Pleroma.Web.ApiSpec.SearchOperation do
apply(__MODULE__, operation, [])
end
+ # Note: `with_relationships` param is not supported (PleromaFE uses this op for autocomplete)
def account_search_operation do
%Operation{
tags: ["Search"],
}
end
- def search_operation do
- %Operation{
- tags: ["Search"],
- summary: "Search results",
- 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()
- ],
- responses: %{
- 200 => Operation.response("Results", "application/json", results())
- }
- }
- end
-
def search2_operation do
%Operation{
tags: ["Search"],
:query,
%Schema{allOf: [BooleanLike], default: false},
"Only include accounts that the user is following"
- )
- | pagination_params()
+ ),
+ with_relationships_param() | pagination_params()
],
responses: %{
200 => Operation.response("Results", "application/json", results2())
}
}
end
-
- defp results do
- %Schema{
- title: "SearchResults",
- type: :object,
- properties: %{
- accounts: %Schema{
- type: :array,
- items: Account,
- description: "Accounts which match the given query"
- },
- statuses: %Schema{
- type: :array,
- items: Status,
- description: "Statuses which match the given query"
- },
- hashtags: %Schema{
- type: :array,
- items: %Schema{type: :string},
- description: "Hashtags which match the given query"
- }
- },
- example: %{
- "accounts" => [Account.schema().example],
- "statuses" => [Status.schema().example],
- "hashtags" => ["cofe"]
- }
- }
- end
end