# NOTE: This file is auto generated by OpenAPI Generator
# https://openapi-generator.tech
# Do not edit this file manually.
defmodule DocuSign.Model.BillingPlans do
@moduledoc """
Billing plans
"""
alias DocuSign.Deserializer
alias DocuSign.Model.AccountAddress
alias DocuSign.Model.AccountBillingPlan
alias DocuSign.Model.BillingEntityInformationResponse
alias DocuSign.Model.BillingPlan
alias DocuSign.Model.CreditCardInformation
alias DocuSign.Model.DirectDebitProcessorInformation
alias DocuSign.Model.DowngradePlanUpdateResponse
alias DocuSign.Model.DowngradeRequestInformation
alias DocuSign.Model.PaymentProcessorInformation
alias DocuSign.Model.ReferralInformation
defstruct [
:billingAddress,
:billingAddressIsCreditCardAddress,
:billingPlan,
:creditCardInformation,
:directDebitProcessorInformation,
:downgradePlanInformation,
:downgradeRequestInformation,
:entityInformation,
:paymentMethod,
:paymentProcessorInformation,
:referralInformation,
:successorPlans,
:taxExemptId
]
@doc false
defimpl Jason.Encoder, for: __MODULE__ do
def encode(struct, opts) do
struct
|> Map.from_struct()
|> Enum.reject(fn {_k, v} -> is_nil(v) end)
|> Map.new()
|> Jason.Encode.map(opts)
end
end
@type t :: %__MODULE__{
:billingAddress => AccountAddress.t() | nil,
:billingAddressIsCreditCardAddress => String.t() | nil,
:billingPlan => AccountBillingPlan.t() | nil,
:creditCardInformation => CreditCardInformation.t() | nil,
:directDebitProcessorInformation => DirectDebitProcessorInformation.t() | nil,
:downgradePlanInformation => DowngradePlanUpdateResponse.t() | nil,
:downgradeRequestInformation => DowngradeRequestInformation.t() | nil,
:entityInformation => BillingEntityInformationResponse.t() | nil,
:paymentMethod => String.t() | nil,
:paymentProcessorInformation => PaymentProcessorInformation.t() | nil,
:referralInformation => ReferralInformation.t() | nil,
:successorPlans => [BillingPlan.t()] | nil,
:taxExemptId => String.t() | nil
}
def decode(value) do
value
|> Deserializer.deserialize(
:billingAddress,
:struct,
AccountAddress
)
|> Deserializer.deserialize(
:billingPlan,
:struct,
AccountBillingPlan
)
|> Deserializer.deserialize(
:creditCardInformation,
:struct,
CreditCardInformation
)
|> Deserializer.deserialize(
:directDebitProcessorInformation,
:struct,
DirectDebitProcessorInformation
)
|> Deserializer.deserialize(
:downgradePlanInformation,
:struct,
DowngradePlanUpdateResponse
)
|> Deserializer.deserialize(
:downgradeRequestInformation,
:struct,
DowngradeRequestInformation
)
|> Deserializer.deserialize(
:entityInformation,
:struct,
BillingEntityInformationResponse
)
|> Deserializer.deserialize(
:paymentProcessorInformation,
:struct,
PaymentProcessorInformation
)
|> Deserializer.deserialize(
:referralInformation,
:struct,
ReferralInformation
)
|> Deserializer.deserialize(
:successorPlans,
:list,
BillingPlan
)
|> then(&struct(__MODULE__, &1))
end
end