# `PolarExpress.Schemas.ProductUpdate`
[🔗](https://github.com/jeffhuen/polar_express/blob/main/lib/polar_express/schemas/product_update.ex#L2)

ProductUpdate

Schema to update a product.

# `t`

```elixir
@type t() :: %PolarExpress.Schemas.ProductUpdate{
  attached_custom_fields: term(),
  description: term(),
  is_archived: term(),
  medias: term(),
  metadata: term(),
  name: term(),
  prices: term(),
  recurring_interval: term(),
  recurring_interval_count: term(),
  trial_interval: term(),
  trial_interval_count: term(),
  visibility: term()
}
```

* `attached_custom_fields` - Nullable.
* `description` - The description of the product. Nullable.
* `is_archived` - Whether the product is archived. If `true`, the product won't be available for purchase anymore. Existing customers will still have access to their benefits, and subscriptions will continue normally. Nullable.
* `medias` - List of file IDs. Each one must be on the same organization as the product, of type `product_media` and correctly uploaded. Nullable.
* `metadata` - Key-value object allowing you to store additional information.

The key must be a string with a maximum length of **40 characters**.
The value must be either:

* A string with a maximum length of **500 characters**
* An integer
* A floating-point number
* A boolean

You can store up to **50 key-value pairs**.
* `name` - Nullable.
* `prices` - List of available prices for this product. If you want to keep existing prices, include them in the list as an `ExistingProductPrice` object. Nullable.
* `recurring_interval` - The recurring interval of the product. If `None`, the product is a one-time purchase. **Can only be set on legacy recurring products. Once set, it can't be changed.** Nullable.
* `recurring_interval_count` - Number of interval units of the subscription. If this is set to 1 the charge will happen every interval (e.g. every month), if set to 2 it will be every other month, and so on. Once set, it can't be changed.** Nullable.
* `trial_interval` - The interval unit for the trial period. Nullable.
* `trial_interval_count` - The number of interval units for the trial period. Nullable.
* `visibility` - The visibility of the product. Nullable.

# `schema_name`

---

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