# `Stripe.Services.ProductFeatureService`
[🔗](https://github.com/jeffhuen/tiger_stripe/blob/main/lib/stripe/services/product_feature_service.ex#L2)

ProductFeature

A product_feature represents an attachment between a feature and a product.
When a product is purchased that has a feature attached, Stripe will create an entitlement to the feature for the purchasing customer.

# `create`

```elixir
@spec create(Stripe.Client.t(), String.t(), map(), keyword()) ::
  {:ok, term()} | {:error, Stripe.Error.t()}
```

Attach a feature to a product

Creates a product_feature, which represents a feature attachment to a product

# `delete`

```elixir
@spec delete(Stripe.Client.t(), String.t(), String.t(), map(), keyword()) ::
  {:ok, term()} | {:error, Stripe.Error.t()}
```

Remove a feature from a product

Deletes the feature attachment to a product

# `list`

```elixir
@spec list(Stripe.Client.t(), String.t(), map(), keyword()) ::
  {:ok, term()} | {:error, Stripe.Error.t()}
```

List all features attached to a product

Retrieve a list of features for a product

# `retrieve`

```elixir
@spec retrieve(Stripe.Client.t(), String.t(), String.t(), map(), keyword()) ::
  {:ok, term()} | {:error, Stripe.Error.t()}
```

Retrieve a product_feature

Retrieves a product_feature, which represents a feature attachment to a product

---

*Consult [api-reference.md](api-reference.md) for complete listing*
