X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=lib%2Fpleroma%2Fweb%2Fapi_spec%2Foperations%2Fsearch_operation.ex;h=f90c548536c1b64a880ca2cc19c3b52a50f53b9a;hb=a079ec3a3cdfd42d2cbd51c7698c2c87828e5778;hp=0dd908d7fade1ea66f9f92df6e437093723076a6;hpb=fd2fb2bb2e2292997fbe6f70c4d12b50c56cfab9;p=akkoma diff --git a/lib/pleroma/web/api_spec/operations/search_operation.ex b/lib/pleroma/web/api_spec/operations/search_operation.ex index 0dd908d7f..f90c54853 100644 --- a/lib/pleroma/web/api_spec/operations/search_operation.ex +++ b/lib/pleroma/web/api_spec/operations/search_operation.ex @@ -1,5 +1,5 @@ # Pleroma: A lightweight social networking server -# Copyright © 2017-2020 Pleroma Authors +# Copyright © 2017-2021 Pleroma Authors # SPDX-License-Identifier: AGPL-3.0-only defmodule Pleroma.Web.ApiSpec.SearchOperation do @@ -19,35 +19,35 @@ 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"], 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" - ) - ] ++ [embed_relationships_param()], + 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" + ) + ], responses: %{ 200 => Operation.response( @@ -59,55 +59,6 @@ defmodule Pleroma.Web.ApiSpec.SearchOperation do } 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() ++ [embed_relationships_param()], - responses: %{ - 200 => Operation.response("Results", "application/json", results()) - } - } - end - def search2_operation do %Operation{ tags: ["Search"], @@ -141,8 +92,8 @@ defmodule Pleroma.Web.ApiSpec.SearchOperation do :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()) @@ -178,33 +129,4 @@ defmodule Pleroma.Web.ApiSpec.SearchOperation do } } 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