lib/spatio/api/search.ex

# NOTE: This file is auto generated by OpenAPI Generator 7.22.0 (https://openapi-generator.tech).
# Do not edit this file manually.

defmodule Spatio.Api.Search do
  @moduledoc """
  API calls for all endpoints tagged `Search`.
  """

  alias Spatio.Connection
  import Spatio.RequestBuilder

  @doc """
  Cross-platform federated search.
  Fans out to every platform's per-platform search method in parallel, merges + dedupes results, and returns them in a relevance-then-recency ranking with per-platform cursors for pagination. 

  ### Parameters

  - `connection` (Spatio.Connection): Connection to server
  - `federated_search_request` (FederatedSearchRequest): 
  - `opts` (keyword): Optional parameters

  ### Returns

  - `{:ok, Spatio.Model.FederatedSearch200Response.t}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec federated_search(Tesla.Env.client, Spatio.Model.FederatedSearchRequest.t, keyword()) :: {:ok, nil} | {:ok, Spatio.Model.FederatedSearch200Response.t} | {:error, Tesla.Env.t}
  def federated_search(connection, federated_search_request, _opts \\ []) do
    request =
      %{}
      |> method(:post)
      |> url("/v1/search")
      |> add_param(:body, :body, federated_search_request)
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {200, Spatio.Model.FederatedSearch200Response},
      {400, false},
      {401, false}
    ])
  end
end