lib/customers/identification.ex

defmodule Customers.Identification do
    @moduledoc false
  @derive Jason.Encoder

  @type t() :: %__MODULE__{
          issuing_country: <<_::2>>,
          number: String.t(),
          type: String.t()
        }

  defstruct [
    :issuing_country,
    :number,
    :type
  ]

  def build(params) when is_map(params) do
    %__MODULE__{
      issuing_country: params[:issuing_country],
      number: params[:number],
      type: params[:type],
    }
  end

  def build(_), do: {:error, "identification invalid"}
end