lib/docusign/api/account_signatures.ex

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

defmodule DocuSign.Api.AccountSignatures do
  @moduledoc """
  API calls for all endpoints tagged `AccountSignatures`.
  """

  alias DocuSign.Connection
  import DocuSign.RequestBuilder

  @doc """
  Deletes an account stamp.
  Deletes a stamp specified by `signatureId`.

  ### Parameters

  - `connection` (DocuSign.Connection): Connection to server
  - `account_id` (String.t): The external account number (int) or account ID GUID.
  - `signature_id` (String.t): The ID of the account stamp.
  - `opts` (keyword): Optional parameters

  ### Returns

  - `{:ok, nil}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec account_signatures_delete_account_signature(
          Tesla.Env.client(),
          String.t(),
          String.t(),
          keyword()
        ) :: {:ok, nil} | {:ok, DocuSign.Model.ErrorDetails.t()} | {:error, Tesla.Env.t()}
  def account_signatures_delete_account_signature(
        connection,
        account_id,
        signature_id,
        _opts \\ []
      ) do
    request =
      %{}
      |> method(:delete)
      |> url("/v2.1/accounts/#{account_id}/signatures/#{signature_id}")
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {200, false},
      {400, %DocuSign.Model.ErrorDetails{}}
    ])
  end

  @doc """
  Deletes the image for a stamp.
  Deletes the image for a stamp specified by `signatureId`.

  ### Parameters

  - `connection` (DocuSign.Connection): Connection to server
  - `account_id` (String.t): The external account number (int) or account ID GUID.
  - `image_type` (String.t): Specificies the type of image. Valid values:  - `stamp_image` - `signature_image` - `initials_image`
  - `signature_id` (String.t): The ID of the account stamp.
  - `opts` (keyword): Optional parameters

  ### Returns

  - `{:ok, DocuSign.Model.AccountSignature.t}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec account_signatures_delete_account_signature_image(
          Tesla.Env.client(),
          String.t(),
          String.t(),
          String.t(),
          keyword()
        ) ::
          {:ok, DocuSign.Model.ErrorDetails.t()}
          | {:ok, DocuSign.Model.AccountSignature.t()}
          | {:error, Tesla.Env.t()}
  def account_signatures_delete_account_signature_image(
        connection,
        account_id,
        image_type,
        signature_id,
        _opts \\ []
      ) do
    request =
      %{}
      |> method(:delete)
      |> url("/v2.1/accounts/#{account_id}/signatures/#{signature_id}/#{image_type}")
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {200, %DocuSign.Model.AccountSignature{}},
      {400, %DocuSign.Model.ErrorDetails{}}
    ])
  end

  @doc """
  Returns information about the specified stamp.
  Returns information about the specified stamp.

  ### Parameters

  - `connection` (DocuSign.Connection): Connection to server
  - `account_id` (String.t): The external account number (int) or account ID GUID.
  - `signature_id` (String.t): The ID of the account stamp.
  - `opts` (keyword): Optional parameters

  ### Returns

  - `{:ok, DocuSign.Model.AccountSignature.t}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec account_signatures_get_account_signature(
          Tesla.Env.client(),
          String.t(),
          String.t(),
          keyword()
        ) ::
          {:ok, DocuSign.Model.ErrorDetails.t()}
          | {:ok, DocuSign.Model.AccountSignature.t()}
          | {:error, Tesla.Env.t()}
  def account_signatures_get_account_signature(connection, account_id, signature_id, _opts \\ []) do
    request =
      %{}
      |> method(:get)
      |> url("/v2.1/accounts/#{account_id}/signatures/#{signature_id}")
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {200, %DocuSign.Model.AccountSignature{}},
      {400, %DocuSign.Model.ErrorDetails{}}
    ])
  end

  @doc """
  Returns the image for an account stamp.
  Returns the image for an account stamp.

  ### Parameters

  - `connection` (DocuSign.Connection): Connection to server
  - `account_id` (String.t): The external account number (int) or account ID GUID.
  - `image_type` (String.t): Specificies the type of image. Valid values:  - `stamp_image` - `signature_image` - `initials_image`
  - `signature_id` (String.t): The ID of the account stamp.
  - `opts` (keyword): Optional parameters
    - `:include_chrome` (String.t): When **true,** the chrome (or frame containing the added line and identifier) is included with the signature image.

  ### Returns

  - `{:ok, String.t}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec account_signatures_get_account_signature_image(
          Tesla.Env.client(),
          String.t(),
          String.t(),
          String.t(),
          keyword()
        ) :: {:ok, DocuSign.Model.ErrorDetails.t()} | {:ok, String.t()} | {:error, Tesla.Env.t()}
  def account_signatures_get_account_signature_image(
        connection,
        account_id,
        image_type,
        signature_id,
        opts \\ []
      ) do
    optional_params = %{
      :include_chrome => :query
    }

    request =
      %{}
      |> method(:get)
      |> url("/v2.1/accounts/#{account_id}/signatures/#{signature_id}/#{image_type}")
      |> add_optional_params(optional_params, opts)
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {200, false},
      {400, %DocuSign.Model.ErrorDetails{}}
    ])
  end

  @doc """
  Returns a list of stamps available in the account.
  Returns a list of stamps available in the account.

  ### Parameters

  - `connection` (DocuSign.Connection): Connection to server
  - `account_id` (String.t): The external account number (int) or account ID GUID.
  - `opts` (keyword): Optional parameters
    - `:stamp_format` (String.t): The format of the stamp to return. Valid values: - `NameDateHanko` - `NameHanko` - `PlaceholderHanko`
    - `:stamp_name` (String.t): The name associated with the stamps to return. This value can be a Japanese surname (up to 5 characters) or a purchase order ID.
    - `:stamp_type` (String.t): The type of the stamps to return. Valid values: - `name_stamp` - `stamp` - `signature`

  ### Returns

  - `{:ok, DocuSign.Model.AccountSignaturesInformation.t}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec account_signatures_get_account_signatures(Tesla.Env.client(), String.t(), keyword()) ::
          {:ok, DocuSign.Model.ErrorDetails.t()}
          | {:ok, DocuSign.Model.AccountSignaturesInformation.t()}
          | {:error, Tesla.Env.t()}
  def account_signatures_get_account_signatures(connection, account_id, opts \\ []) do
    optional_params = %{
      :stamp_format => :query,
      :stamp_name => :query,
      :stamp_type => :query
    }

    request =
      %{}
      |> method(:get)
      |> url("/v2.1/accounts/#{account_id}/signatures")
      |> add_optional_params(optional_params, opts)
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {200, %DocuSign.Model.AccountSignaturesInformation{}},
      {400, %DocuSign.Model.ErrorDetails{}}
    ])
  end

  @doc """
  Adds or updates one or more account stamps.
  Adds or updates one or more account stamps.

  ### Parameters

  - `connection` (DocuSign.Connection): Connection to server
  - `account_id` (String.t): The external account number (int) or account ID GUID.
  - `opts` (keyword): Optional parameters
    - `:decode_only` (String.t):
    - `:body` (AccountSignaturesInformation):

  ### Returns

  - `{:ok, DocuSign.Model.AccountSignaturesInformation.t}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec account_signatures_post_account_signatures(Tesla.Env.client(), String.t(), keyword()) ::
          {:ok, DocuSign.Model.ErrorDetails.t()}
          | {:ok, DocuSign.Model.AccountSignaturesInformation.t()}
          | {:error, Tesla.Env.t()}
  def account_signatures_post_account_signatures(connection, account_id, opts \\ []) do
    optional_params = %{
      :decode_only => :query,
      :body => :body
    }

    request =
      %{}
      |> method(:post)
      |> url("/v2.1/accounts/#{account_id}/signatures")
      |> add_optional_params(optional_params, opts)
      |> ensure_body()
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {201, %DocuSign.Model.AccountSignaturesInformation{}},
      {400, %DocuSign.Model.ErrorDetails{}}
    ])
  end

  @doc """
  Updates an account stamp.
  Adds or updates one or more account stamps. This request may include images in multi-part format.

  ### Parameters

  - `connection` (DocuSign.Connection): Connection to server
  - `account_id` (String.t): The external account number (int) or account ID GUID.
  - `opts` (keyword): Optional parameters
    - `:body` (AccountSignaturesInformation):

  ### Returns

  - `{:ok, DocuSign.Model.AccountSignaturesInformation.t}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec account_signatures_put_account_signature(Tesla.Env.client(), String.t(), keyword()) ::
          {:ok, DocuSign.Model.ErrorDetails.t()}
          | {:ok, DocuSign.Model.AccountSignaturesInformation.t()}
          | {:error, Tesla.Env.t()}
  def account_signatures_put_account_signature(connection, account_id, opts \\ []) do
    optional_params = %{
      :body => :body
    }

    request =
      %{}
      |> method(:put)
      |> url("/v2.1/accounts/#{account_id}/signatures")
      |> add_optional_params(optional_params, opts)
      |> ensure_body()
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {200, %DocuSign.Model.AccountSignaturesInformation{}},
      {400, %DocuSign.Model.ErrorDetails{}}
    ])
  end

  @doc """
  Updates an account stamp by ID.
  Updates an account stamp specified by the `signatureId` query parameter.

  ### Parameters

  - `connection` (DocuSign.Connection): Connection to server
  - `account_id` (String.t): The external account number (int) or account ID GUID.
  - `signature_id` (String.t): The ID of the account stamp.
  - `opts` (keyword): Optional parameters
    - `:close_existing_signature` (String.t): When **true,** closes the current signature.
    - `:body` (AccountSignatureDefinition):

  ### Returns

  - `{:ok, DocuSign.Model.AccountSignature.t}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec account_signatures_put_account_signature_by_id(
          Tesla.Env.client(),
          String.t(),
          String.t(),
          keyword()
        ) ::
          {:ok, DocuSign.Model.ErrorDetails.t()}
          | {:ok, DocuSign.Model.AccountSignature.t()}
          | {:error, Tesla.Env.t()}
  def account_signatures_put_account_signature_by_id(
        connection,
        account_id,
        signature_id,
        opts \\ []
      ) do
    optional_params = %{
      :close_existing_signature => :query,
      :body => :body
    }

    request =
      %{}
      |> method(:put)
      |> url("/v2.1/accounts/#{account_id}/signatures/#{signature_id}")
      |> add_optional_params(optional_params, opts)
      |> ensure_body()
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {200, %DocuSign.Model.AccountSignature{}},
      {400, %DocuSign.Model.ErrorDetails{}}
    ])
  end

  @doc """
  Sets a signature image, initials, or stamp.
  Sets a signature image, initials, or stamp.

  ### Parameters

  - `connection` (DocuSign.Connection): Connection to server
  - `account_id` (String.t): The external account number (int) or account ID GUID.
  - `image_type` (String.t): Specificies the type of image. Valid values:  - `stamp_image` - `signature_image` - `initials_image`
  - `signature_id` (String.t): The ID of the account stamp.
  - `opts` (keyword): Optional parameters
    - `:transparent_png` (String.t):

  ### Returns

  - `{:ok, DocuSign.Model.AccountSignature.t}` on success
  - `{:error, Tesla.Env.t}` on failure
  """
  @spec account_signatures_put_account_signature_image(
          Tesla.Env.client(),
          String.t(),
          String.t(),
          String.t(),
          keyword()
        ) ::
          {:ok, DocuSign.Model.ErrorDetails.t()}
          | {:ok, DocuSign.Model.AccountSignature.t()}
          | {:error, Tesla.Env.t()}
  def account_signatures_put_account_signature_image(
        connection,
        account_id,
        image_type,
        signature_id,
        opts \\ []
      ) do
    optional_params = %{
      :transparent_png => :query
    }

    request =
      %{}
      |> method(:put)
      |> url("/v2.1/accounts/#{account_id}/signatures/#{signature_id}/#{image_type}")
      |> add_optional_params(optional_params, opts)
      |> ensure_body()
      |> Enum.into([])

    connection
    |> Connection.request(request)
    |> evaluate_response([
      {200, %DocuSign.Model.AccountSignature{}},
      {400, %DocuSign.Model.ErrorDetails{}}
    ])
  end
end