defmodule Braintree.Plan do
@moduledoc """
Plans represent recurring billing plans in a Braintree merchant account.
The API for plans is read only.
For additional reference see:
https://developers.braintreepayments.com/reference/request/plan/all/ruby
"""
use Braintree.Construction
alias Braintree.ErrorResponse, as: Error
alias Braintree.HTTP
@type t :: %__MODULE__{
id: String.t(),
add_ons: [any],
balance: String.t(),
billing_day_of_month: String.t(),
billing_frequency: String.t(),
created_at: String.t(),
currency_iso_code: String.t(),
description: String.t(),
discounts: [any],
name: String.t(),
number_of_billing_cycles: String.t(),
price: String.t(),
trial_duration: String.t(),
trial_duration_unit: String.t(),
trial_period: String.t(),
updated_at: String.t()
}
defstruct id: nil,
add_ons: [],
balance: nil,
billing_day_of_month: nil,
billing_frequency: nil,
created_at: nil,
currency_iso_code: nil,
description: nil,
discounts: [],
name: nil,
number_of_billing_cycles: nil,
price: nil,
trial_duration: nil,
trial_duration_unit: nil,
trial_period: nil,
updated_at: nil
@doc """
Get a list of all the plans defined in the merchant account. If there are
no plans an empty list is returned.
## Example
{:ok, plans} = Braintree.Plan.all()
"""
@spec all(Keyword.t()) :: {:ok, [t]} | {:error, Error.t()}
def all(opts \\ []) do
with {:ok, %{"plans" => plans}} <- HTTP.get("plans", opts) do
{:ok, new(plans)}
end
end
end