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

  alias MailSlurpAPI.Connection
  import MailSlurpAPI.RequestBuilder


  @doc """
  Delete SMS message.
  Delete an SMS message

  ## Parameters

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

  {:ok, %{}} on success
  {:error, info} on failure
  """
  @spec delete_sms_message(Tesla.Env.client, String.t, keyword()) :: {:ok, nil} | {:error, Tesla.Env.t}
  def delete_sms_message(connection, sms_id, _opts \\ []) do
    %{}
    |> method(:delete)
    |> url("/sms/#{sms_id}")
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 204, false}
    ])
  end

  @doc """
  Delete all SMS messages
  Delete all SMS messages or all messages for a given phone number

  ## Parameters

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

  {:ok, %{}} on success
  {:error, info} on failure
  """
  @spec delete_sms_messages(Tesla.Env.client, keyword()) :: {:ok, nil} | {:error, Tesla.Env.t}
  def delete_sms_messages(connection, opts \\ []) do
    optional_params = %{
      :"phoneNumberId" => :query
    }
    %{}
    |> method(:delete)
    |> url("/sms")
    |> add_optional_params(optional_params, opts)
    |> Enum.into([])
    |> (&Connection.request(connection, &1)).()
    |> evaluate_response([
      { 204, false}
    ])
  end

  @doc """
  Get SMS content including body. Expects SMS to exist by ID. For SMS that may not have arrived yet use the WaitForController.
  Returns a SMS summary object with content.

  ## Parameters

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

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

  @doc """
  Get all SMS messages in all phone numbers in paginated form. .
  By default returns all SMS messages across all phone numbers sorted by ascending created at date. Responses are paginated. You can restrict results to a list of phone number IDs. You can also filter out read messages

  ## Parameters

  - connection (MailSlurpAPI.Connection): Connection to server
  - opts (KeywordList): [optional] Optional parameters
    - :phone_number (String.t): Optional receiving phone number to filter SMS messages for
    - :page (integer()): Optional page index in SMS list pagination
    - :size (integer()): Optional page size in SMS list pagination. Maximum size is 100. Use page index and sort to page through larger results
    - :sort (String.t): Optional createdAt sort direction ASC or DESC
    - :unread_only (boolean()): Optional filter for unread SMS only. All SMS are considered unread until they are viewed in the dashboard or requested directly
    - :since (DateTime.t): Optional filter SMSs received after given date time
    - :before (DateTime.t): Optional filter SMSs received before given date time
  ## Returns

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