Packages
stripity_stripe
2.7.0
3.3.2
3.3.1
3.2.0
3.1.1
3.1.0
3.0.0
2.17.3
2.17.2
2.17.1
2.17.0
2.16.0
2.15.1
2.15.0
2.14.1
2.14.0
2.13.0
2.12.1
2.12.0
2.11.0
2.10.0
2.9.0
2.8.0
2.7.2
2.7.1
2.7.0
2.6.0
2.5.0
2.4.0
2.3.0
2.2.3
2.2.2
2.2.1
2.2.0
2.1.0
2.0.1
2.0.0
2.0.0-alpha.11
2.0.0-alpha.10
2.0.0-alpha.9
2.0.0-alpha.8
2.0.0-alpha.7
2.0.0-alpha.6
2.0.0-alpha.5
2.0.0-alpha.4
2.0.0-alpha.3
2.0.0-alpha.2
2.0.0-alpha.1
1.6.2
1.6.1
1.6.0
1.4.0
1.3.0
1.2.0
1.1.0
0.5.0
0.4.0
0.3.0
0.2.0
A Stripe client for Elixir.
Current section
Files
Jump to
Current section
Files
lib/stripe/subscriptions/subscription_item.ex
defmodule Stripe.SubscriptionItem do
@moduledoc """
Work with Stripe subscription item objects.
Stripe API reference: https://stripe.com/docs/api#subscription_items
"""
use Stripe.Entity
import Stripe.Request
@type t :: %__MODULE__{
id: Stripe.id(),
object: String.t(),
billing_thresholds: Stripe.Types.subscription_billing_thresholds() | nil,
created: Stripe.timestamp(),
deleted: boolean | nil,
metadata: Stripe.Types.metadata(),
plan: Stripe.Plan.t(),
quantity: non_neg_integer,
subscription: Stripe.id() | Stripe.Subscription.t() | nil,
tax_rates: list(Stripe.TaxRate.t())
}
defstruct [
:id,
:object,
:billing_thresholds,
:created,
:deleted,
:metadata,
:plan,
:quantity,
:subscription,
:tax_rates
]
@plural_endpoint "subscription_items"
@doc """
Create a subscription item.
"""
@spec create(params, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
when params: %{
:plan => Stripe.id() | Stripe.Plan.t(),
:subscription => Stripe.id() | Stripe.Subscription.t(),
optional(:metadata) => Stripe.Types.metadata(),
optional(:prorate) => boolean,
optional(:proration_date) => Stripe.timestamp(),
optional(:quantity) => float,
optional(:tax_rates) => list(String.t())
}
def create(%{plan: _, subscription: _} = params, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint)
|> put_params(params)
|> put_method(:post)
|> cast_to_id([:plan, :subscription])
|> make_request()
end
@doc """
Retrieve a subscription.
"""
@spec retrieve(Stripe.id() | t, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
def retrieve(id, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(id)}")
|> put_method(:get)
|> make_request()
end
@doc """
Update a subscription item.
Takes the `id` and a map of changes.
"""
@spec update(Stripe.id() | t, params, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
when params: %{
optional(:metadata) => Stripe.Types.metadata(),
optional(:plan) => Stripe.id() | Stripe.Plan.t(),
optional(:prorate) => boolean,
optional(:proration_date) => Stripe.timestamp(),
optional(:quantity) => float,
optional(:tax_rates) => list(String.t())
}
def update(id, params, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(id)}")
|> put_method(:post)
|> put_params(params)
|> cast_to_id([:plan])
|> make_request()
end
@doc """
Delete a subscription.
Takes the `id` and an optional map of `params`.
"""
@spec delete(Stripe.id() | t, params, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
when params: %{
optional(:clear_usage) => boolean,
optional(:prorate) => boolean,
optional(:proration_date) => Stripe.timestamp()
}
def delete(id, params \\ %{}, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(id)}")
|> put_method(:delete)
|> put_params(params)
|> make_request()
end
@doc """
List all subscriptions.
"""
@spec list(Stripe.id(), params, Stripe.options()) ::
{:ok, Stripe.List.t(t)} | {:error, Stripe.Error.t()}
when params: %{
optional(:ending_before) => t | Stripe.id(),
optional(:limit) => 1..100,
optional(:starting_after) => t | Stripe.id()
}
def list(id, params \\ %{}, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "?subscription=" <> id)
|> put_method(:get)
|> put_params(params)
|> cast_to_id([:ending_before, :starting_after])
|> make_request()
end
end