Add ability to set a default post expiry (#321)
[akkoma] / lib / pleroma / web / api_spec / operations / search_operation.ex
index 0dd908d7fade1ea66f9f92df6e437093723076a6..f90c548536c1b64a880ca2cc19c3b52a50f53b9a 100644 (file)
@@ -1,5 +1,5 @@
 # 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
@@ -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