lib/mail_slurp_api/api/bounce_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.BounceController do
  @moduledoc """
  API calls for all endpoints tagged `BounceController`.
  """

  alias MailSlurpAPI.Connection
  import MailSlurpAPI.RequestBuilder


  @doc """
  Get a bounced email.
  Bounced emails are email you have sent that were rejected by a recipient

  ## Parameters

  - connection (MailSlurpAPI.Connection): Connection to server
  - id (String.t): ID of the bounced email to fetch
  - opts (KeywordList): [optional] Optional parameters
  ## Returns

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

  @doc """
  Get paginated list of bounced emails.
  Bounced emails are email you have sent that were rejected by a recipient

  ## Parameters

  - connection (MailSlurpAPI.Connection): Connection to server
  - opts (KeywordList): [optional] Optional parameters
    - :page (integer()): Optional page index
    - :size (integer()): Optional page size 
    - :sort (String.t): Optional createdAt sort direction ASC or DESC
    - :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.PageBouncedEmail{}} on success
  {:error, info} on failure
  """
  @spec get_bounced_emails(Tesla.Env.client, keyword()) :: {:ok, MailSlurpAPI.Model.PageBouncedEmail.t} | {:error, Tesla.Env.t}
  def get_bounced_emails(connection, opts \\ []) do
    optional_params = %{
      :"page" => :query,
      :"size" => :query,
      :"sort" => :query,
      :"since" => :query,
      :"before" => :query
    }
    %{}
    |> method(:get)
    |> url("/bounce/emails")
    |> add_optional_params(optional_params, opts)
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 200, %MailSlurpAPI.Model.PageBouncedEmail{}}
    ])
  end

  @doc """
  Get a bounced email.
  Bounced emails are email you have sent that were rejected by a recipient

  ## Parameters

  - connection (MailSlurpAPI.Connection): Connection to server
  - id (String.t): ID of the bounced recipient
  - opts (KeywordList): [optional] Optional parameters
  ## Returns

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

  @doc """
  Get paginated list of bounced recipients.
  Bounced recipients are email addresses that you have sent emails to that did not accept the sent email. Once a recipient is bounced you cannot send emails to that address.

  ## Parameters

  - connection (MailSlurpAPI.Connection): Connection to server
  - opts (KeywordList): [optional] Optional parameters
    - :page (integer()): Optional page index 
    - :size (integer()): Optional page size 
    - :sort (String.t): Optional createdAt sort direction ASC or DESC
    - :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.PageBouncedRecipients{}} on success
  {:error, info} on failure
  """
  @spec get_bounced_recipients(Tesla.Env.client, keyword()) :: {:ok, MailSlurpAPI.Model.PageBouncedRecipients.t} | {:error, Tesla.Env.t}
  def get_bounced_recipients(connection, opts \\ []) do
    optional_params = %{
      :"page" => :query,
      :"size" => :query,
      :"sort" => :query,
      :"since" => :query,
      :"before" => :query
    }
    %{}
    |> method(:get)
    |> url("/bounce/recipients")
    |> add_optional_params(optional_params, opts)
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 200, %MailSlurpAPI.Model.PageBouncedRecipients{}}
    ])
  end
end