Packages
stripity_stripe
3.0.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/generated/product.ex
defmodule Stripe.Product do
use Stripe.Entity
@moduledoc "Products describe the specific goods or services you offer to your customers.\nFor example, you might offer a Standard and Premium version of your goods or service; each version would be a separate Product.\nThey can be used in conjunction with [Prices](https://stripe.com/docs/api#prices) to configure pricing in Payment Links, Checkout, and Subscriptions.\n\nRelated guides: [Set up a subscription](https://stripe.com/docs/billing/subscriptions/set-up-subscription),\n[share a Payment Link](https://stripe.com/docs/payment-links),\n[accept payments with Checkout](https://stripe.com/docs/payments/accept-a-payment#create-product-prices-upfront),\nand more about [Products and Prices](https://stripe.com/docs/products-prices/overview)"
(
defstruct [
:active,
:created,
:default_price,
:description,
:features,
:id,
:images,
:livemode,
:metadata,
:name,
:object,
:package_dimensions,
:shippable,
:statement_descriptor,
:tax_code,
:type,
:unit_label,
:updated,
:url
]
@typedoc "The `product` type.\n\n * `active` Whether the product is currently available for purchase.\n * `created` Time at which the object was created. Measured in seconds since the Unix epoch.\n * `default_price` The ID of the [Price](https://stripe.com/docs/api/prices) object that is the default price for this product.\n * `description` The product's description, meant to be displayable to the customer. Use this field to optionally store a long form explanation of the product being sold for your own rendering purposes.\n * `features` A list of up to 15 features for this product. These are displayed in [pricing tables](https://stripe.com/docs/payments/checkout/pricing-table).\n * `id` Unique identifier for the object.\n * `images` A list of up to 8 URLs of images for this product, meant to be displayable to the customer.\n * `livemode` Has the value `true` if the object exists in live mode or the value `false` if the object exists in test mode.\n * `metadata` Set of [key-value pairs](https://stripe.com/docs/api/metadata) that you can attach to an object. This can be useful for storing additional information about the object in a structured format.\n * `name` The product's name, meant to be displayable to the customer.\n * `object` String representing the object's type. Objects of the same type share the same value.\n * `package_dimensions` The dimensions of this product for shipping purposes.\n * `shippable` Whether this product is shipped (i.e., physical goods).\n * `statement_descriptor` Extra information about a product which will appear on your customer's credit card statement. In the case that multiple products are billed at once, the first statement descriptor will be used.\n * `tax_code` A [tax code](https://stripe.com/docs/tax/tax-categories) ID.\n * `type` The type of the product. The product is either of type `good`, which is eligible for use with Orders and SKUs, or `service`, which is eligible for use with Subscriptions and Plans.\n * `unit_label` A label that represents units of this product. When set, this will be included in customers' receipts, invoices, Checkout, and the customer portal.\n * `updated` Time at which the object was last updated. Measured in seconds since the Unix epoch.\n * `url` A URL of a publicly-accessible webpage for this product.\n"
@type t :: %__MODULE__{
active: boolean,
created: integer,
default_price: (binary | Stripe.Price.t()) | nil,
description: binary | nil,
features: term,
id: binary,
images: term,
livemode: boolean,
metadata: term,
name: binary,
object: binary,
package_dimensions: term | nil,
shippable: boolean | nil,
statement_descriptor: binary | nil,
tax_code: (binary | Stripe.TaxCode.t()) | nil,
type: binary,
unit_label: binary | nil,
updated: integer,
url: binary | nil
}
)
(
@typedoc nil
@type created :: %{
optional(:gt) => integer,
optional(:gte) => integer,
optional(:lt) => integer,
optional(:lte) => integer
}
)
(
@typedoc "Data used to generate a new [Price](https://stripe.com/docs/api/prices) object. This Price will be set as the default price for this product."
@type default_price_data :: %{
optional(:currency) => binary,
optional(:currency_options) => map(),
optional(:recurring) => recurring,
optional(:tax_behavior) => :exclusive | :inclusive | :unspecified,
optional(:unit_amount) => integer,
optional(:unit_amount_decimal) => binary
}
)
(
@typedoc nil
@type features :: %{optional(:name) => binary}
)
(
@typedoc "The dimensions of this product for shipping purposes."
@type package_dimensions :: %{
optional(:height) => number,
optional(:length) => number,
optional(:weight) => number,
optional(:width) => number
}
)
(
@typedoc "The recurring components of a price such as `interval` and `interval_count`."
@type recurring :: %{
optional(:interval) => :day | :month | :week | :year,
optional(:interval_count) => integer
}
)
(
nil
@doc "<p>Search for products you’ve previously created using Stripe’s <a href=\"/docs/search#search-query-language\">Search Query Language</a>.\nDon’t use search in read-after-write flows where strict consistency is necessary. Under normal operating\nconditions, data is searchable in less than a minute. Occasionally, propagation of new or updated data can be up\nto an hour behind during outages. Search functionality is not available to merchants in India.</p>\n\n#### Details\n\n * Method: `get`\n * Path: `/v1/products/search`\n"
(
@spec search(
params :: %{
optional(:expand) => list(binary),
optional(:limit) => integer,
optional(:page) => binary,
optional(:query) => binary
},
opts :: Keyword.t()
) ::
{:ok, Stripe.SearchResult.t(Stripe.Product.t())}
| {:error, Stripe.ApiErrors.t()}
| {:error, term()}
def search(params \\ %{}, opts \\ []) do
path = Stripe.OpenApi.Path.replace_path_params("/v1/products/search", [], [])
Stripe.Request.new_request(opts)
|> Stripe.Request.put_endpoint(path)
|> Stripe.Request.put_params(params)
|> Stripe.Request.put_method(:get)
|> Stripe.Request.make_request()
end
)
)
(
nil
@doc "<p>Creates a new product object.</p>\n\n#### Details\n\n * Method: `post`\n * Path: `/v1/products`\n"
(
@spec create(
params :: %{
optional(:active) => boolean,
optional(:default_price_data) => default_price_data,
optional(:description) => binary,
optional(:expand) => list(binary),
optional(:features) => list(features),
optional(:id) => binary,
optional(:images) => list(binary),
optional(:metadata) => %{optional(binary) => binary},
optional(:name) => binary,
optional(:package_dimensions) => package_dimensions,
optional(:shippable) => boolean,
optional(:statement_descriptor) => binary,
optional(:tax_code) => binary,
optional(:type) => :good | :service,
optional(:unit_label) => binary,
optional(:url) => binary
},
opts :: Keyword.t()
) :: {:ok, Stripe.Product.t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()}
def create(params \\ %{}, opts \\ []) do
path = Stripe.OpenApi.Path.replace_path_params("/v1/products", [], [])
Stripe.Request.new_request(opts)
|> Stripe.Request.put_endpoint(path)
|> Stripe.Request.put_params(params)
|> Stripe.Request.put_method(:post)
|> Stripe.Request.make_request()
end
)
)
(
nil
@doc "<p>Retrieves the details of an existing product. Supply the unique product ID from either a product creation request or the product list, and Stripe will return the corresponding product information.</p>\n\n#### Details\n\n * Method: `get`\n * Path: `/v1/products/{id}`\n"
(
@spec retrieve(
id :: binary(),
params :: %{optional(:expand) => list(binary)},
opts :: Keyword.t()
) :: {:ok, Stripe.Product.t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()}
def retrieve(id, params \\ %{}, opts \\ []) do
path =
Stripe.OpenApi.Path.replace_path_params(
"/v1/products/{id}",
[
%OpenApiGen.Blueprint.Parameter{
in: "path",
name: "id",
required: true,
schema: %OpenApiGen.Blueprint.Parameter.Schema{
name: "id",
title: nil,
type: "string",
items: [],
properties: [],
any_of: []
}
}
],
[id]
)
Stripe.Request.new_request(opts)
|> Stripe.Request.put_endpoint(path)
|> Stripe.Request.put_params(params)
|> Stripe.Request.put_method(:get)
|> Stripe.Request.make_request()
end
)
)
(
nil
@doc "<p>Updates the specific product by setting the values of the parameters passed. Any parameters not provided will be left unchanged.</p>\n\n#### Details\n\n * Method: `post`\n * Path: `/v1/products/{id}`\n"
(
@spec update(
id :: binary(),
params :: %{
optional(:active) => boolean,
optional(:default_price) => binary,
optional(:description) => binary | binary,
optional(:expand) => list(binary),
optional(:features) => list(features) | binary,
optional(:images) => list(binary) | binary,
optional(:metadata) => %{optional(binary) => binary} | binary,
optional(:name) => binary,
optional(:package_dimensions) => package_dimensions | binary,
optional(:shippable) => boolean,
optional(:statement_descriptor) => binary,
optional(:tax_code) => binary | binary,
optional(:unit_label) => binary | binary,
optional(:url) => binary | binary
},
opts :: Keyword.t()
) :: {:ok, Stripe.Product.t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()}
def update(id, params \\ %{}, opts \\ []) do
path =
Stripe.OpenApi.Path.replace_path_params(
"/v1/products/{id}",
[
%OpenApiGen.Blueprint.Parameter{
in: "path",
name: "id",
required: true,
schema: %OpenApiGen.Blueprint.Parameter.Schema{
name: "id",
title: nil,
type: "string",
items: [],
properties: [],
any_of: []
}
}
],
[id]
)
Stripe.Request.new_request(opts)
|> Stripe.Request.put_endpoint(path)
|> Stripe.Request.put_params(params)
|> Stripe.Request.put_method(:post)
|> Stripe.Request.make_request()
end
)
)
(
nil
@doc "<p>Returns a list of your products. The products are returned sorted by creation date, with the most recently created products appearing first.</p>\n\n#### Details\n\n * Method: `get`\n * Path: `/v1/products`\n"
(
@spec list(
params :: %{
optional(:active) => boolean,
optional(:created) => created | integer,
optional(:ending_before) => binary,
optional(:expand) => list(binary),
optional(:ids) => list(binary),
optional(:limit) => integer,
optional(:shippable) => boolean,
optional(:starting_after) => binary,
optional(:type) => :good | :service,
optional(:url) => binary
},
opts :: Keyword.t()
) ::
{:ok, Stripe.List.t(Stripe.Product.t())}
| {:error, Stripe.ApiErrors.t()}
| {:error, term()}
def list(params \\ %{}, opts \\ []) do
path = Stripe.OpenApi.Path.replace_path_params("/v1/products", [], [])
Stripe.Request.new_request(opts)
|> Stripe.Request.put_endpoint(path)
|> Stripe.Request.put_params(params)
|> Stripe.Request.put_method(:get)
|> Stripe.Request.make_request()
end
)
)
(
nil
@doc "<p>Delete a product. Deleting a product is only possible if it has no prices associated with it. Additionally, deleting a product with <code>type=good</code> is only possible if it has no SKUs associated with it.</p>\n\n#### Details\n\n * Method: `delete`\n * Path: `/v1/products/{id}`\n"
(
@spec delete(id :: binary(), opts :: Keyword.t()) ::
{:ok, Stripe.DeletedProduct.t()} | {:error, Stripe.ApiErrors.t()} | {:error, term()}
def delete(id, opts \\ []) do
path =
Stripe.OpenApi.Path.replace_path_params(
"/v1/products/{id}",
[
%OpenApiGen.Blueprint.Parameter{
in: "path",
name: "id",
required: true,
schema: %OpenApiGen.Blueprint.Parameter.Schema{
name: "id",
title: nil,
type: "string",
items: [],
properties: [],
any_of: []
}
}
],
[id]
)
Stripe.Request.new_request(opts)
|> Stripe.Request.put_endpoint(path)
|> Stripe.Request.put_method(:delete)
|> Stripe.Request.make_request()
end
)
)
end