lib/mail_slurp_api/api/missed_email_controller.ex

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

defmodule MailSlurpAPI.Api.MissedEmailController do
  @moduledoc """
  API calls for all endpoints tagged `MissedEmailController`.
  """

  alias MailSlurpAPI.Connection
  import MailSlurpAPI.RequestBuilder


  @doc """
  Get all MissedEmails in paginated format

  ## Parameters

  - connection (MailSlurpAPI.Connection): Connection to server
  - opts (KeywordList): [optional] Optional parameters
    - :page (integer()): Optional page index in list pagination
    - :size (integer()): Optional page size in list pagination
    - :sort (String.t): Optional createdAt sort direction ASC or DESC
    - :search_filter (String.t): Optional search filter
    - :since (DateTime.t): Filter by created at after the given timestamp
    - :before (DateTime.t): Filter by created at before the given timestamp
    - :inbox_id (String.t): Optional inbox ID filter
  ## Returns

  {:ok, %MailSlurpAPI.Model.PageMissedEmailProjection{}} on success
  {:error, info} on failure
  """
  @spec get_all_missed_emails(Tesla.Env.client, keyword()) :: {:ok, MailSlurpAPI.Model.PageMissedEmailProjection.t} | {:error, Tesla.Env.t}
  def get_all_missed_emails(connection, opts \\ []) do
    optional_params = %{
      :"page" => :query,
      :"size" => :query,
      :"sort" => :query,
      :"searchFilter" => :query,
      :"since" => :query,
      :"before" => :query,
      :"inboxId" => :query
    }
    %{}
    |> method(:get)
    |> url("/missed-emails")
    |> add_optional_params(optional_params, opts)
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 200, %MailSlurpAPI.Model.PageMissedEmailProjection{}}
    ])
  end

  @doc """
  Get all unknown missed emails in paginated format
  Unknown missed emails are emails that were sent to MailSlurp but could not be assigned to an existing inbox.

  ## Parameters

  - connection (MailSlurpAPI.Connection): Connection to server
  - opts (KeywordList): [optional] Optional parameters
    - :page (integer()): Optional page index in list pagination
    - :size (integer()): Optional page size in list pagination
    - :sort (String.t): Optional createdAt sort direction ASC or DESC
    - :search_filter (String.t): Optional search filter
    - :since (DateTime.t): Filter by created at after the given timestamp
    - :before (DateTime.t): Filter by created at before the given timestamp
    - :inbox_id (String.t): Optional inbox ID filter
  ## Returns

  {:ok, %MailSlurpAPI.Model.PageUnknownMissedEmailProjection{}} on success
  {:error, info} on failure
  """
  @spec get_all_unknown_missed_emails(Tesla.Env.client, keyword()) :: {:ok, MailSlurpAPI.Model.PageUnknownMissedEmailProjection.t} | {:error, Tesla.Env.t}
  def get_all_unknown_missed_emails(connection, opts \\ []) do
    optional_params = %{
      :"page" => :query,
      :"size" => :query,
      :"sort" => :query,
      :"searchFilter" => :query,
      :"since" => :query,
      :"before" => :query,
      :"inboxId" => :query
    }
    %{}
    |> method(:get)
    |> url("/missed-emails/unknown")
    |> add_optional_params(optional_params, opts)
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 200, %MailSlurpAPI.Model.PageUnknownMissedEmailProjection{}}
    ])
  end

  @doc """
  Get MissedEmail

  ## Parameters

  - connection (MailSlurpAPI.Connection): Connection to server
  - missed_email_id (String.t): 
  - opts (KeywordList): [optional] Optional parameters
  ## Returns

  {:ok, %MailSlurpAPI.Model.MissedEmail{}} on success
  {:error, info} on failure
  """
  @spec get_missed_email(Tesla.Env.client, String.t, keyword()) :: {:ok, MailSlurpAPI.Model.MissedEmail.t} | {:error, Tesla.Env.t}
  def get_missed_email(connection, missed_email_id, _opts \\ []) do
    %{}
    |> method(:get)
    |> url("/missed-emails/#{missed_email_id}")
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 200, %MailSlurpAPI.Model.MissedEmail{}}
    ])
  end

  @doc """
  Wait for Nth missed email
  Wait for 0 based index missed email

  ## Parameters

  - connection (MailSlurpAPI.Connection): Connection to server
  - index (integer()): Zero based index of the email to wait for. If 1 missed email already and you want to wait for the 2nd email pass index=1
  - opts (KeywordList): [optional] Optional parameters
    - :inbox_id (String.t): Optional inbox ID filter
    - :timeout (integer()): Optional timeout milliseconds
    - :since (DateTime.t): Filter by created at after the given timestamp
    - :before (DateTime.t): Filter by created at before the given timestamp
  ## Returns

  {:ok, %MailSlurpAPI.Model.MissedEmail{}} on success
  {:error, info} on failure
  """
  @spec wait_for_nth_missed_email(Tesla.Env.client, integer(), keyword()) :: {:ok, MailSlurpAPI.Model.MissedEmail.t} | {:error, Tesla.Env.t}
  def wait_for_nth_missed_email(connection, index, opts \\ []) do
    optional_params = %{
      :"inboxId" => :query,
      :"timeout" => :query,
      :"since" => :query,
      :"before" => :query
    }
    %{}
    |> method(:get)
    |> url("/missed-emails/waitForNthMissedEmail")
    |> add_param(:query, :"index", index)
    |> add_optional_params(optional_params, opts)
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 200, %MailSlurpAPI.Model.MissedEmail{}}
    ])
  end
end