---
name: products-routes
description: Handle 10 OpenAPI operation(s) under /v1/products for the products route group.
---

# products API Routes

Handle 10 OpenAPI operation(s) under /v1/products for the products route group.

Use the generated operation tools to make real API calls. Do not invent API responses.
If a tool reports missing setup, return the exact setup field name to the caller.
For write, update, or delete operations, state the intended action before calling the tool.

## Operations

### get_products

- Operation ID: `get_products`
- Route: `GET /v1/products`
- Mode: READ
- Summary: List all products
- Parameters:
  - `active` in `query`
  - `created` in `query`
  - `ending_before` in `query`
  - `expand` in `query`
  - `ids` in `query`
  - `limit` in `query`
  - `shippable` in `query`
  - `starting_after` in `query`
  - `url` in `query`
- Body: JSON request body accepted.

### post_products

- Operation ID: `post_products`
- Route: `POST /v1/products`
- Mode: WRITE
- Summary: Create a product
- Body: JSON request body accepted.

### get_products_search

- Operation ID: `get_products_search`
- Route: `GET /v1/products/search`
- Mode: READ
- Summary: Search products
- Parameters:
  - `expand` in `query`
  - `limit` in `query`
  - `page` in `query`
  - `query` in `query` required
- Body: JSON request body accepted.

### delete_products_id

- Operation ID: `delete_products_id`
- Route: `DELETE /v1/products/{id}`
- Mode: WRITE
- Summary: Delete a product
- Parameters:
  - `id` in `path` required
- Body: JSON request body accepted.

### get_products_id

- Operation ID: `get_products_id`
- Route: `GET /v1/products/{id}`
- Mode: READ
- Summary: Retrieve a product
- Parameters:
  - `expand` in `query`
  - `id` in `path` required
- Body: JSON request body accepted.

### post_products_id

- Operation ID: `post_products_id`
- Route: `POST /v1/products/{id}`
- Mode: WRITE
- Summary: Update a product
- Parameters:
  - `id` in `path` required
- Body: JSON request body accepted.

### get_products_product_features

- Operation ID: `get_products_product_features`
- Route: `GET /v1/products/{product}/features`
- Mode: READ
- Summary: List all features attached to a product
- Parameters:
  - `ending_before` in `query`
  - `expand` in `query`
  - `limit` in `query`
  - `product` in `path` required
  - `starting_after` in `query`
- Body: JSON request body accepted.

### post_products_product_features

- Operation ID: `post_products_product_features`
- Route: `POST /v1/products/{product}/features`
- Mode: WRITE
- Summary: Attach a feature to a product
- Parameters:
  - `product` in `path` required
- Body: JSON request body accepted.

### delete_products_product_features_id

- Operation ID: `delete_products_product_features_id`
- Route: `DELETE /v1/products/{product}/features/{id}`
- Mode: WRITE
- Summary: Remove a feature from a product
- Parameters:
  - `id` in `path` required
  - `product` in `path` required
- Body: JSON request body accepted.

### get_products_product_features_id

- Operation ID: `get_products_product_features_id`
- Route: `GET /v1/products/{product}/features/{id}`
- Mode: READ
- Summary: Retrieve a product_feature
- Parameters:
  - `expand` in `query`
  - `id` in `path` required
  - `product` in `path` required
- Body: JSON request body accepted.
