lib/docusign/model/new_account_definition.ex

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

defmodule DocuSign.Model.NewAccountDefinition do
  @moduledoc """

  """

  alias DocuSign.Deserializer
  alias DocuSign.Model.AccountAddress
  alias DocuSign.Model.AccountSettingsInformation
  alias DocuSign.Model.CreditCardInformation
  alias DocuSign.Model.DirectDebitProcessorInformation
  alias DocuSign.Model.PaymentProcessorInformation
  alias DocuSign.Model.PlanInformation
  alias DocuSign.Model.ReferralInformation
  alias DocuSign.Model.SocialAccountInformation
  alias DocuSign.Model.UserInformation

  @derive Jason.Encoder
  defstruct [
    :accountName,
    :accountSettings,
    :addressInformation,
    :creditCardInformation,
    :directDebitProcessorInformation,
    :distributorCode,
    :distributorPassword,
    :enablePreAuth,
    :envelopePartitionId,
    :initialUser,
    :paymentMethod,
    :paymentProcessor,
    :paymentProcessorInformation,
    :planInformation,
    :processPayment,
    :referralInformation,
    :socialAccountInformation,
    :taxExemptId
  ]

  @type t :: %__MODULE__{
          :accountName => String.t() | nil,
          :accountSettings => AccountSettingsInformation.t() | nil,
          :addressInformation => AccountAddress.t() | nil,
          :creditCardInformation => CreditCardInformation.t() | nil,
          :directDebitProcessorInformation => DirectDebitProcessorInformation.t() | nil,
          :distributorCode => String.t() | nil,
          :distributorPassword => String.t() | nil,
          :enablePreAuth => String.t() | nil,
          :envelopePartitionId => String.t() | nil,
          :initialUser => UserInformation.t() | nil,
          :paymentMethod => String.t() | nil,
          :paymentProcessor => String.t() | nil,
          :paymentProcessorInformation => PaymentProcessorInformation.t() | nil,
          :planInformation => PlanInformation.t() | nil,
          :processPayment => String.t() | nil,
          :referralInformation => ReferralInformation.t() | nil,
          :socialAccountInformation => SocialAccountInformation.t() | nil,
          :taxExemptId => String.t() | nil
        }

  def decode(value) do
    value
    |> Deserializer.deserialize(
      :accountSettings,
      :struct,
      AccountSettingsInformation
    )
    |> Deserializer.deserialize(:addressInformation, :struct, AccountAddress)
    |> Deserializer.deserialize(
      :creditCardInformation,
      :struct,
      CreditCardInformation
    )
    |> Deserializer.deserialize(
      :directDebitProcessorInformation,
      :struct,
      DirectDebitProcessorInformation
    )
    |> Deserializer.deserialize(:initialUser, :struct, UserInformation)
    |> Deserializer.deserialize(
      :paymentProcessorInformation,
      :struct,
      PaymentProcessorInformation
    )
    |> Deserializer.deserialize(:planInformation, :struct, PlanInformation)
    |> Deserializer.deserialize(:referralInformation, :struct, ReferralInformation)
    |> Deserializer.deserialize(
      :socialAccountInformation,
      :struct,
      SocialAccountInformation
    )
  end
end