# `PolarExpress.Services.ProductsService`
[🔗](https://github.com/jeffhuen/polar_express/blob/main/lib/polar_express/services/products_service.ex#L2)

Products

Products API operations.

# `create_product`

```elixir
@spec create_product(PolarExpress.Client.t(), map(), keyword()) ::
  {:ok, PolarExpress.Schemas.Product.t()} | {:error, PolarExpress.Error.t()}
```

Create Product

Create a product.

**Scopes**: `products:write`

See `PolarExpress.Params.ProductsCreateProductParams` for parameter details.

# `get_product`

```elixir
@spec get_product(PolarExpress.Client.t(), String.t(), map(), keyword()) ::
  {:ok, PolarExpress.Schemas.Product.t()} | {:error, PolarExpress.Error.t()}
```

Get Product

Get a product by ID.

**Scopes**: `products:read` `products:write`

See `PolarExpress.Params.ProductsGetProductParams` for parameter details.

# `list_products`

```elixir
@spec list_products(PolarExpress.Client.t(), map(), keyword()) ::
  {:ok, PolarExpress.ListObject.t()} | {:error, PolarExpress.Error.t()}
```

List Products

List products.

**Scopes**: `products:read` `products:write`

See `PolarExpress.Params.ProductsListProductsParams` for parameter details.

# `update_product`

```elixir
@spec update_product(PolarExpress.Client.t(), String.t(), map(), keyword()) ::
  {:ok, PolarExpress.Schemas.Product.t()} | {:error, PolarExpress.Error.t()}
```

Update Product

Update a product.

**Scopes**: `products:write`

See `PolarExpress.Params.ProductsUpdateProductParams` for parameter details.

# `update_product_benefits`

```elixir
@spec update_product_benefits(PolarExpress.Client.t(), String.t(), map(), keyword()) ::
  {:ok, PolarExpress.Schemas.Product.t()} | {:error, PolarExpress.Error.t()}
```

Update Product Benefits

Update benefits granted by a product.

**Scopes**: `products:write`

See `PolarExpress.Params.ProductsUpdateProductBenefitsParams` for parameter details.

---

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