Packages
stripity_stripe
2.15.1
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/promotion_code.ex
defmodule Stripe.PromotionCode do
@moduledoc """
Work with Stripe promotion code objects.
You can:
- Create a promotion code
- Retrieve a promotion code
- Update a promotion code
- list all promotion codes
Stripe API reference: https://stripe.com/docs/api/promotion_codes
"""
use Stripe.Entity
import Stripe.Request
@type t :: %__MODULE__{
id: Stripe.id(),
object: String.t(),
active: boolean,
code: String.t() | nil,
coupon: Stripe.Coupon.t(),
customer: String.t() | nil,
created: Stripe.timestamp(),
deleted: boolean | nil,
expires_at: Stripe.timestamp() | nil,
livemode: boolean,
max_redemptions: pos_integer | nil,
metadata: Stripe.Types.metadata(),
restrictions: restrictions(),
times_redeemed: non_neg_integer,
valid: boolean
}
@type restrictions :: %{
optional(:first_time_transaction) => boolean,
optional(:minimum_amount) => pos_integer,
optional(:minimum_amount_currency) => String.t()
}
defstruct [
:id,
:object,
:active,
:code,
:coupon,
:customer,
:created,
:deleted,
:expires_at,
:livemode,
:max_redemptions,
:metadata,
:restrictions,
:times_redeemed,
:valid
]
@plural_endpoint "promotion_codes"
@doc """
Create a promotion code.
"""
@spec create(params, Stripe.options()) :: {:ok, t} | {:error, Stripe.Error.t()}
when params: %{
:coupon => Stripe.id(),
optional(:code) => String.t(),
optional(:active) => boolean,
optional(:customer) => Stripe.id(),
optional(:expires_at) => Stripe.timestamp(),
optional(:max_redemptions) => pos_integer,
optional(:metadata) => Stripe.Types.metadata(),
optional(:restrictions) => restrictions()
}
def create(params, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint)
|> put_params(params)
|> put_method(:post)
|> make_request()
end
@doc """
Retrieve a promotion code.
"""
@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 """
Updates the metadata of a promotion code. Other promotion code details (coupon, customer,
expires_at, max_redemptions, restrictions) are, by design, not editable.
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(:active) => boolean
}
| %{}
def update(id, params, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint <> "/#{get_id!(id)}")
|> put_method(:post)
|> put_params(params)
|> make_request()
end
@doc """
List all promotion codes.
"""
@spec list(params, Stripe.options()) :: {:ok, Stripe.List.t(t)} | {:error, Stripe.Error.t()}
when params: %{
optional(:active) => boolean,
optional(:created) => Stripe.date_query(),
optional(:code) => String.t(),
optional(:coupon) => Stripe.id(),
optional(:customer) => Stripe.id(),
optional(:ending_before) => t | Stripe.id(),
optional(:limit) => 1..100,
optional(:starting_after) => t | Stripe.id()
}
def list(params \\ %{}, opts \\ []) do
new_request(opts)
|> put_endpoint(@plural_endpoint)
|> put_method(:get)
|> put_params(params)
|> cast_to_id([:ending_before, :starting_after])
|> make_request()
end
end