> This page is for Developer.

> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.bigcommerce.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.bigcommerce.com/_mcp/server.

# Update Products (batch)

PUT https://api.bigcommerce.com/stores/{store_hash}/v3/catalog/products
Content-Type: application/json

Updates products in batches. Batches are limited to 10 products.

**Required Fields**
* `id` - product `id` is required for batch updates to products.

**Read-Only Fields**
- `id`
- `date_created`
- `date_modified`
- `calculated_price`
- `base_variant_id`

Reference: https://docs.bigcommerce.com/developer/api-reference/rest/admin/catalog/products/update-products

## Authentication

- `X-Auth-Token` header (required) — ### OAuth scopes | UI Name | Permission | Parameter | |:--------|:-----------|:----------| | Products | modify | `store_v2_products` | | Products | read-only | `store_v2_products_read_only` | ### Authentication header | Header | Argument | Description | |:-------|:---------|:------------| | `X-Auth-Token` | `access_token` | For more about API accounts that generate `access_token`s, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts#api-accounts). | ### Further reading For example requests and more information about authenticating BigCommerce APIs, see [Authentication and Example Requests](/developer/docs/overview/api-fundamentals/api-accounts#x-auth-token-header-example-requests). For more about BigCommerce OAuth scopes, see our [Guide to API Accounts](/developer/docs/overview/api-fundamentals/api-accounts#oauth-scopes). For a list of API status codes, see [API Status Codes](/developer/api-reference/rest/overview#rest-http-status-codes).

## Request

### Path parameters

- `store_hash` (string, required) — Permanent ID of the BigCommerce store.

### Query parameters

- `include_fields` (list of enum, optional) — Fields to include, in a comma-separated list. The ID and the specified fields will be returned.
  - Allowed values: `name`, `type`, `sku`, `description`, `weight`, `width`, `depth`, `height`, `price`, `cost_price`, `retail_price`, `sale_price`, `map_price`, `tax_class_id`, `product_tax_code`, `calculated_price`, `categories`, `brand_id`, `option_set_id`, `option_set_display`, `inventory_level`, `inventory_warning_level`, `inventory_tracking`, `reviews_rating_sum`, `reviews_count`, `total_sold`, `fixed_cost_shipping_price`, `is_free_shipping`, `is_visible`, `is_featured`, `related_products`, `warranty`, `bin_picking_number`, `layout_file`, `upc`, `mpn`, `gtin`, `date_last_imported`, `search_keywords`, `availability`, `availability_description`, `condition`, `is_condition_shown`, `order_quantity_minimum`, `order_quantity_maximum`, `page_title`, `meta_keywords`, `meta_description`, `date_created`, `date_modified`, `view_count`, `preorder_release_date`, `preorder_message`, `is_preorder_only`, `is_price_hidden`, `price_hidden_label`, `custom_url`, `base_variant_id`, `open_graph_type`, `open_graph_title`, `open_graph_description`, `open_graph_use_meta_description`, `open_graph_use_product_name`, `open_graph_use_image`

### Headers

- `Accept` (string, required, default: application/json) — The [MIME type](https://developer.mozilla.org/en-US/docs/Web/HTTP/Basics_of_HTTP/MIME_types) of the response body.

### Body (application/json)

This endpoint expects a list of ProductPutCollectionItems.

- `list of ProductPutCollectionItems`

## Response

### 200

OK

- `data` (list of product_Full, optional)
- `meta` (any, optional)

### 207

Multi-status. Typically indicates that a partial failure has occurred, such as when a POST or PUT request is successful, but saving one of the attributes has failed. For example, the product information was updated successfully, but the inventory data failed to update or saving the URL failed. If inventory data failed to update, verify that the inventory-related updates are well-formed and correct; for example, that they donʼt result in negative stock levels. Then consider updating the inventory data again. If the URL failed to update, check that the URL uses Latin letters, is no more than 255 characters, and is not taken by any other entity.

- `data` (list of product_Full, optional)
- `errors` (errorMultiStatus, optional)
- `meta` (metaCollection_Full, optional) — Data about the response, including pagination and collection totals.

## Errors

### 404 Not Found Error

The resource was not found.

- `status` (integer, optional) — 404 HTTP status code.
- `title` (string, optional) — The error title describing the particular error.
- `type` (string, optional)
- `instance` (string, optional)

### 409 Conflict Error

`Product` was in conflict with another product. This is the result of duplicate unique values such as name or SKU; a missing or invalid `category_id`, `brand_id`, or `tax_class id`; or a conflicting `bulk_pricing_rule`.

- `code` (integer, optional)
- `status` (integer, optional)
- `title` (string, optional) — The error title describing the particular error.
- `type` (string, optional)
- `errors` (DetailedErrors, optional) — Each key-value pair describes a failure or partial success case.

### 413 Content Too Large Error

413 Request Entity Too Large

- `status` (integer, optional) — The HTTP status code.
- `title` (string, optional) — The error title describing the particular error.
- `type` (string, optional)
- `instance` (string, optional)

### 422 Unprocessable Entity Error

`Product` was not valid. This is the result of missing required fields or invalid data. See the response for more details.

- `code` (integer, optional)
- `status` (integer, optional)
- `title` (string, optional) — The error title describing the particular error.
- `type` (string, optional)
- `errors` (DetailedErrors, optional) — Each key-value pair describes a failure or partial success case.

## Types

### ProductPutCollectionItems

`Product` properties used in: * `PUT`

- `id` (integer, required) — Unique ID of the *Product*. Read-Only.
- `name` (string, optional) — A unique product name.
- `type` (enum, optional) — The product type. One of: `physical` - a physical stock unit, `digital` - a digital download.
  - Allowed values: `physical`, `digital`
- `sku` (string, optional) — A unique user-defined alphanumeric product code/stock keeping unit (SKU). The SKU is always unique regardless of the letter case for both products and variants.
- `description` (string, optional) — The product description, which can include HTML formatting.
- `weight` (float, optional) — Weight of the product, which can be used when calculating shipping costs. This is based on the unit set on the store.
- `width` (float, optional) — Width of the product, which can be used when calculating shipping costs.
- `depth` (float, optional) — Depth of the product, which can be used when calculating shipping costs.
- `height` (float, optional) — Height of the product, which can be used when calculating shipping costs.
- `price` (float, optional) — The price of the product. The price should include or exclude tax, based on the store settings.
- `cost_price` (float, optional) — The cost price of the product. Stored for reference only; it is not used or displayed anywhere on the store.
- `retail_price` (float, optional) — The retail cost of the product. If entered, the retail cost price will be shown on the product page.
- `sale_price` (float, optional) — If entered, the sale price will be used instead of value in the price field when calculating the productʼs cost.
- `map_price` (double, optional) — Minimum Advertised Price
- `tax_class_id` (double, optional) — The ID of the tax class applied to the product. (NOTE: Value ignored if automatic tax is enabled.)
- `product_tax_code` (string, optional) — Tax Codes, such as AvaTax System Tax Codes, identify products and services that fall into special sales-tax categories. By using these codes, merchants who subscribe to a tax provider integration, such as BigCommerceʼs Avalara Premium, can calculate sales taxes more accurately. Stores without a tax provider will ignore the code when calculating sales tax. Do not pass more than one code. The codes are case-sensitive. For details, please see the tax providerʼs documentation.
- `categories` (list of double, optional) — An array of IDs for the categories to which this product belongs. When updating a product, if an array of categories is supplied, all product categories will be overwritten. Does not accept more than 1,000 ID values.
- `brand_id` (integer, optional) — You can add a product to an existing brand during a product /PUT or /POST. Use either the `brand_id` or the `brand_name` field. The response body can include `brand_id`.
- `brand_name` (string, optional) — You can create the brand during a product PUT or POST request. If the brand already exists, the product /PUT or /POST request adds the product to the brand. If not, the product /PUT or /POST request creates the brand and then adds the product to the brand. Brand name is not case-sensitive; "Common Good" and "Common good" are the same. Use either the `brand_id` or the `brand_name` field. The response body does not include `brand_name`.
- `inventory_level` (integer, optional) — Current inventory level of the product. You must track inventory by _product_ for this to take effect (see the `inventory_tracking` field). The Catalog API returns the inventory for only the default location. The inventory for a product cannot exceed 2,147,483,647 in the catalog. If you exceed the limit, the store sets the inventory level to the limit. The Catalog API handles limits in a different way than the Inventory API. For more information, see [Limit handling](/developer/docs/admin/catalog-and-inventory/inventory-adjustments#limit-handling-in-inventory-versus-catalog-api).
- `inventory_warning_level` (integer, optional) — Inventory warning level for the product. When the productʼs inventory level drops below the warning level, the store owner will be informed. Simple inventory tracking must be enabled (see the `inventory_tracking` field) for this to take any effect.
- `inventory_tracking` (enum, optional) — The type of inventory tracking for the product. Values are: `none` - inventory levels will not be tracked; `product` - inventory levels will be tracked using the `inventory_level` and `inventory_warning_level` fields; `variant` - inventory levels will be tracked based on variants, which maintain their own warning levels and inventory levels. Setting `variant` also enables storefront option-availability filtering: when the store's out-of-stock option behavior (**Settings** > **Inventory**) is set to label or hide unavailable options, the storefront offers only the option combinations that map to a variant with stock greater than zero. With `none` or `product`, every option combination stays selectable regardless of which variants exist. Because the availability list is built only from combinations with stock greater than zero, enabling `variant` tracking to hide non-existent combinations also hides or labels real variants once they sell out.
  - Allowed values: `none`, `product`, `variant`
- `fixed_cost_shipping_price` (float, optional) — A fixed shipping cost for the product. If defined, this value will be used during checkout instead of normal shipping-cost calculation.
- `is_free_shipping` (boolean, optional) — Flag used to indicate whether the product has free shipping. If `true`, the shipping cost for the product will be zero.
- `is_visible` (boolean, optional) — Flag to determine whether the product should be displayed to customers browsing the store. If `true`, the product will be displayed. If `false`, the product will be hidden from view.
- `is_featured` (boolean, optional) — Flag to determine whether the product should be included in the `featured products` panel when viewing the store.
- `related_products` (list of integer, optional) — An array of IDs for the related products.
- `warranty` (string, optional) — Warranty information displayed on the product page. Can include HTML formatting.
- `bin_picking_number` (string, optional) — The BIN picking number for the product.
- `layout_file` (string, optional) — The layout template file used to render this product. This field is writable only for stores with a Blueprint theme applied, and its value must be a template file from the store's Blueprint theme. For stores with a Stencil theme applied, custom templates are managed through [Custom Template Associations](/developer/api-reference/rest/admin/content/custom-template-associations).
- `upc` (string, optional) — The product UPC code, which is used in feeds for shopping comparison sites and external channel integrations.
- `search_keywords` (string, optional) — A comma-separated list of keywords that can be used to locate the product when searching the store.
- `availability_description` (string, optional) — Availability text displayed on the checkout page, under the product title. Tells the customer how long it will normally take to ship this product, such as: 'Usually ships in 24 hours.'
- `availability` (enum, optional) — Availability of the product. (Corresponds to the productʼs [Purchasability](https://support.bigcommerce.com/s/article/Adding-Products-v3?language=en_US#sections) section in the control panel.) Supported values: `available` - the product is available for purchase; `disabled` - the product is listed on the storefront, but cannot be purchased; `preorder` - the product is listed for pre-orders.
  - Allowed values: `available`, `disabled`, `preorder`
- `gift_wrapping_options_type` (enum, optional) — Type of gift-wrapping options. Values: `any` - allow any gift-wrapping options in the store; `none` - disallow gift-wrapping on the product; `list` – provide a list of IDs in the `gift_wrapping_options_list` field. Always included in the response body; not applicable for the `include_fields` and `exclude_fields` query parameters.
  - Allowed values: `any`, `none`, `list`
- `gift_wrapping_options_list` (list of integer, optional) — A list of gift-wrapping option IDs. Always included in the response body; not applicable for the `include_fields` and `exclude_fields` query parameters.
- `sort_order` (integer, optional) — Priority to give this product when included in product lists on category pages and in search results. Lower integers will place the product closer to the top of the results.
- `condition` (enum, optional) — The product condition. Will be shown on the product page if the `is_condition_shown` fieldʼs value is `true`. Possible values: `New`, `Used`, `Refurbished`.
  - Allowed values: `New`, `Used`, `Refurbished`
- `is_condition_shown` (boolean, optional) — Flag used to determine whether the product condition is shown to the customer on the product page.
- `order_quantity_minimum` (integer, optional) — The minimum quantity an order must contain, to be eligible to purchase this product.
- `order_quantity_maximum` (integer, optional) — The maximum quantity an order can contain when purchasing the product.
- `page_title` (string, optional) — Custom title for the product page. If not defined, the product name will be used as the meta title.
- `meta_keywords` (list of string, optional) — Custom meta keywords for the product page. If not defined, the storeʼs default keywords will be used.
- `meta_description` (string, optional) — Custom meta description for the product page. If not defined, the storeʼs default meta description will be used.
- `preorder_release_date` (datetime, optional, nullable) — Pre-order release date. See the `availability` field for details on setting a productʼs availability to accept pre-orders.
- `preorder_message` (string, optional) — Custom expected-date message to display on the product page. If undefined, the message defaults to the storewide setting. Can contain the `%%DATE%%` placeholder, which will be substituted for the release date.
- `is_preorder_only` (boolean, optional) — If set to true then on the preorder release date the preorder status will automatically be removed. If set to false, then on the release date the preorder status **will not** be removed. It will need to be changed manually either in the control panel or using the API. Using the API set `availability` to `available`.
- `is_price_hidden` (boolean, optional) — False by default, indicating that this productʼs price should be shown on the product page. If set to `true`, the price is hidden. (NOTE: To successfully set `is_price_hidden` to `true`, the `availability` value must be `disabled`.)
- `price_hidden_label` (string, optional) — By default, an empty string. If `is_price_hidden` is `true`, the value of `price_hidden_label` is displayed instead of the price. (NOTE: To successfully set a non-empty string value with `is_price_hidden` set to `true`, the `availability` value must be `disabled`.)
- `custom_url` (customUrl_Full, optional) — The custom URL for the product on the storefront. If not provided in the POST request, the URL will be autogenerated from the product name.
- `open_graph_type` (enum, optional) — Type of product, defaults to `product`.
  - Allowed values: `product`, `album`, `book`, `drink`, `food`, `game`, `movie`, `song`, `tv_show`
- `open_graph_title` (string, optional) — Title of the product, if not specified the product name will be used instead.
- `open_graph_description` (string, optional) — Description to use for the product, if not specified then the meta_description will be used instead.
- `open_graph_use_meta_description` (boolean, optional) — Flag to determine if product description or open graph description is used.
- `open_graph_use_product_name` (boolean, optional) — Flag to determine if product name or open graph name is used.
- `open_graph_use_image` (boolean, optional) — Flag to determine if product image or open graph image is used.
- `gtin` (string, optional) — Global Trade Item Number
- `mpn` (string, optional) — Manufacturer Part Number
- `date_last_imported` (string, optional) — the date when the Product had been imported
- `reviews_rating_sum` (integer, optional) — The total (cumulative) rating for the product.
- `reviews_count` (integer, optional) — The number of times the product has been rated.
- `total_sold` (integer, optional) — The total quantity of this product sold.
- `custom_fields` (list of productCustomField_Put, optional) — 200 maximum custom fields per product. 255 maximum characters per custom field.
- `bulk_pricing_rules` (list of ProductPutCollectionItemsBulkPricingRulesItems, optional)
- `images` (list of productImage_Full, optional)
- `videos` (list of productVideo_Full, optional) — The Catalog API integrates with third-party YouTube. The [YouTube Terms of Service](https://www.youtube.com/t/terms) and [Google Privacy Policy](https://policies.google.com/privacy) apply, as indicated in our [Privacy Policy](https://www.bigcommerce.com/privacy/) and [Terms of Service](https://www.bigcommerce.com/terms/).
- `view_count` (integer, optional, deprecated) — The number of times the product has been viewed.

### product_Full

- `availability` (enum, optional) — Availability of the product. (Corresponds to the productʼs [Purchasability](https://support.bigcommerce.com/s/article/Adding-Products-v3?language=en_US#sections) section in the control panel.) Supported values: `available` - the product is available for purchase; `disabled` - the product is listed on the storefront, but cannot be purchased; `preorder` - the product is listed for pre-orders.
  - Allowed values: `available`, `disabled`, `preorder`
- `availability_description` (string, optional) — Availability text displayed on the checkout page, under the product title. Tells the customer how long it will normally take to ship this product, such as: 'Usually ships in 24 hours.'
- `base_variant_id` (integer, optional) — The unique identifier of the base variant associated with a simple product. This value is `null` for complex products.
- `bin_picking_number` (string, optional) — The BIN picking number for the product.
- `brand_id` (integer, optional) — You can add a product to an existing brand during a product /PUT or /POST use the `brand_id` field. The response body can include `brand_id'.
- `bulk_pricing_rules` (list of ProductBaseResponseBulkPricingRulesItems, optional)
- `calculated_price` (float, optional) — The calculated_price is derived from the default price and sale price of the product. It is equal to the sale price if set or the default price if there is not a sale price present. Depending on your store settings and customer group, or channel-specific pricing, this value may or may not be equal to the price seen on the storefront.
- `categories` (list of double, optional) — An array of IDs for the categories to which this product belongs. When updating a product, if an array of categories is supplied, all product categories will be overwritten. Does not accept more than 1,000 ID values.
- `condition` (enum, optional) — The product condition. Will be shown on the product page if the `is_condition_shown` fieldʼs value is `true`. Possible values: `New`, `Used`, `Refurbished`.
  - Allowed values: `New`, `Used`, `Refurbished`
- `cost_price` (float, optional) — The cost price of the product. Stored for reference only; it is not used or displayed anywhere on the store.
- `custom_fields` (list of productCustomField_Put, optional) — 200 maximum custom fields per product. 255 maximum characters per custom field.
- `custom_url` (customUrl_Full, optional) — The custom URL for the product on the storefront. If not provided in the POST request, the URL will be autogenerated from the product name.
- `date_created` (datetime, optional) — The date on which the product was created.
- `date_last_imported` (string, optional) — the date when the Product had been imported
- `date_modified` (datetime, optional) — The date on which the product was last modified. This value changes when the product record itself changes, for example when you update a product using the Catalog API or edit the product in the control panel. Changes to fields such as the product's name, description, pricing, categories, custom fields, images, options, modifiers, and variants update this value. Inventory is a separate entity from the product, so a stock change does not always update `date_modified`. Inventory updates that the [Inventory API](/developer/docs/admin/catalog-and-inventory/inventory-adjustments) processes, including stock edits made from the control panel **Products** list, leave `date_modified` unchanged. Inventory updates that the Catalog API processes, such as a `PUT` request that sets `inventory_level`, update it. To track when a product or its stock changes, use the `store/product/updated` and `store/product/inventory/updated` [webhooks](/developer/docs/integrations/webhooks/event-reference/events#products) rather than polling `date_modified`.
- `depth` (float, optional) — Depth of the product, which can be used when calculating shipping costs.
- `description` (string, optional) — The product description, which can include HTML formatting.
- `fixed_cost_shipping_price` (float, optional) — A fixed shipping cost for the product. If defined, this value will be used during checkout instead of normal shipping-cost calculation.
- `gift_wrapping_options_list` (list of integer, optional) — A list of gift-wrapping option IDs. Always included in the response body; not applicable for the `include_fields` and `exclude_fields` query parameters.
- `gift_wrapping_options_type` (enum, optional) — Type of gift-wrapping options. Values: `any` - allow any gift-wrapping options in the store; `none` - disallow gift-wrapping on the product; `list` – provide a list of IDs in the `gift_wrapping_options_list` field. Always included in the response body; not applicable for the `include_fields` and `exclude_fields` query parameters.
  - Allowed values: `any`, `none`, `list`
- `gtin` (string, optional) — Global Trade Item Number
- `height` (float, optional) — Height of the product, which can be used when calculating shipping costs.
- `id` (integer, optional) — ID of the product. Read-Only.
- `images` (list of productImage_Full, optional)
- `inventory_level` (integer, optional) — Current inventory level of the product. You must track inventory by _product_ for this to take effect (see the `inventory_tracking` field). The Catalog API returns the inventory for only the default location. The inventory for a product cannot exceed 2,147,483,647 in the catalog. If you exceed the limit, the store sets the inventory level to the limit. The Catalog API handles limits in a different way than the Inventory API. For more information, see [Limit handling](/developer/docs/admin/catalog-and-inventory/inventory-adjustments#limit-handling-in-inventory-versus-catalog-api).
- `inventory_tracking` (enum, optional) — The type of inventory tracking for the product. Values are: `none` - inventory levels will not be tracked; `product` - inventory levels will be tracked using the `inventory_level` and `inventory_warning_level` fields; `variant` - inventory levels will be tracked based on variants, which maintain their own warning levels and inventory levels. Setting `variant` also enables storefront option-availability filtering: when the store's out-of-stock option behavior (**Settings** > **Inventory**) is set to label or hide unavailable options, the storefront offers only the option combinations that map to a variant with stock greater than zero. With `none` or `product`, every option combination stays selectable regardless of which variants exist. Because the availability list is built only from combinations with stock greater than zero, enabling `variant` tracking to hide non-existent combinations also hides or labels real variants once they sell out.
  - Allowed values: `none`, `product`, `variant`
- `inventory_warning_level` (integer, optional) — Inventory warning level for the product. When the productʼs inventory level drops below the warning level, the store owner will be informed. Simple inventory tracking must be enabled (see the `inventory_tracking` field) for this to take any effect.
- `is_condition_shown` (boolean, optional) — Flag used to determine whether the product condition is shown to the customer on the product page.
- `is_featured` (boolean, optional) — Flag to determine whether the product should be included in the `featured products` panel when viewing the store.
- `is_free_shipping` (boolean, optional) — Flag used to indicate whether the product has free shipping. If `true`, the shipping cost for the product will be zero.
- `is_preorder_only` (boolean, optional) — If set to true then on the preorder release date the preorder status will automatically be removed. If set to false, then on the release date the preorder status **will not** be removed. It will need to be changed manually either in the control panel or using the API. Using the API set `availability` to `available`.
- `is_price_hidden` (boolean, optional) — False by default, indicating that this productʼs price should be shown on the product page. If set to `true`, the price is hidden. (NOTE: To successfully set `is_price_hidden` to `true`, the `availability` value must be `disabled`.)
- `is_visible` (boolean, optional) — Flag to determine whether the product should be displayed to customers browsing the store. If `true`, the product will be displayed. If `false`, the product will be hidden from view.
- `layout_file` (string, optional) — The layout template file used to render this product. This field applies only to stores with a Blueprint theme applied, and the returned value is a template file from the store's Blueprint theme. Custom Stencil template associations are not returned in this field. For stores with a Stencil theme applied, see [Custom Template Associations](/developer/api-reference/rest/admin/content/custom-template-associations).
- `map_price` (double, optional) — Minimum Advertised Price.
- `meta_description` (string, optional) — Custom meta description for the product page. If not defined, the storeʼs default meta description will be used.
- `meta_keywords` (list of string, optional) — Custom meta keywords for the product page. If not defined, the storeʼs default keywords will be used.
- `modifiers` (list of productModifier_Full, optional)
- `mpn` (string, optional) — Manufacturer Part Number
- `name` (string, optional) — A unique product name.
- `open_graph_description` (string, optional) — Description to use for the product, if not specified then the meta_description will be used instead.
- `open_graph_title` (string, optional) — Title of the product, if not specified the product name will be used instead.
- `open_graph_type` (enum, optional) — Type of product, defaults to `product`.
  - Allowed values: `product`, `album`, `book`, `drink`, `food`, `game`, `movie`, `song`, `tv_show`
- `open_graph_use_image` (boolean, optional) — Flag to determine if product image or open graph image is used.
- `open_graph_use_meta_description` (boolean, optional) — Flag to determine if product description or open graph description is used.
- `open_graph_use_product_name` (boolean, optional) — Flag to determine if product name or open graph name is used.
- `option_set_display` (string, optional) — Legacy template setting which controls if the option set shows up to the side of or below the product image and description.
- `option_set_id` (integer, optional) — Indicates that the product is in an Option Set (legacy V2 concept).
- `options` (list of productOption_Base, optional)
- `order_quantity_maximum` (integer, optional) — The maximum quantity an order can contain when purchasing the product.
- `order_quantity_minimum` (integer, optional) — The minimum quantity an order must contain, to be eligible to purchase this product.
- `page_title` (string, optional) — Custom title for the product page. If not defined, the product name will be used as the meta title.
- `preorder_message` (string, optional) — Custom expected-date message to display on the product page. If undefined, the message defaults to the storewide setting. Can contain the `%%DATE%%` placeholder, which will be substituted for the release date.
- `preorder_release_date` (datetime, optional, nullable) — Pre-order release date. See the `availability` field for details on setting a productʼs availability to accept pre-orders.
- `price` (float, optional) — The price of the product. The price should include or exclude tax, based on the store settings.
- `price_hidden_label` (string, optional) — By default, an empty string. If `is_price_hidden` is `true`, the value of `price_hidden_label` is displayed instead of the price. (NOTE: To successfully set a non-empty string value with `is_price_hidden` set to `true`, the `availability` value must be `disabled`.)
- `primary_image` (primaryImage_Full, optional) — Common PrimaryImage properties.
- `product_tax_code` (string, optional) — Tax Codes, such as AvaTax System Tax Codes, identify products and services that fall into special sales-tax categories. By using these codes, merchants who subscribe to a tax provider integration, such as BigCommerceʼs Avalara Premium, can calculate sales taxes more accurately. Stores without a tax provider will ignore the code when calculating sales tax. Do not pass more than one code. The codes are case-sensitive. For details, please see the tax providerʼs documentation.
- `related_products` (list of integer, optional) — An array of IDs for the related products.
- `retail_price` (float, optional) — The retail cost of the product. If entered, the retail cost price will be shown on the product page.
- `reviews_count` (integer, optional) — The number of times the product has been rated.
- `reviews_rating_sum` (integer, optional) — The total (cumulative) rating for the product.
- `sale_price` (float, optional) — If entered, the sale price will be used instead of value in the price field when calculating the productʼs cost.
- `search_keywords` (string, optional) — A comma-separated list of keywords that can be used to locate the product when searching the store.
- `sku` (string, optional) — A unique user-defined alphanumeric product code/stock keeping unit (SKU).
- `sort_order` (integer, optional) — Priority to give this product when included in product lists on category pages and in search results. Lower integers will place the product closer to the top of the results.
- `tax_class_id` (double, optional) — The ID of the tax class applied to the product. (NOTE: Value ignored if automatic tax is enabled.)
- `total_sold` (integer, optional) — The total quantity of this product sold.
- `type` (enum, optional) — The product type. One of: `physical` - a physical stock unit, `digital` - a digital download.
  - Allowed values: `physical`, `digital`
- `upc` (string, optional) — The product UPC code, which is used in feeds for shopping comparison sites and external channel integrations.
- `videos` (list of productVideo_Full, optional) — The Catalog API integrates with third-party YouTube. The [YouTube Terms of Service](https://www.youtube.com/t/terms) and [Google Privacy Policy](https://policies.google.com/privacy) apply, as indicated in our [Privacy Policy](https://www.bigcommerce.com/privacy/) and [Terms of Service](https://www.bigcommerce.com/terms/).
- `warranty` (string, optional) — Warranty information displayed on the product page. Can include HTML formatting.
- `weight` (float, optional) — Weight of the product, which can be used when calculating shipping costs. This is based on the unit set on the store
- `width` (float, optional) — Width of the product, which can be used when calculating shipping costs.
- `view_count` (integer, optional, deprecated) — The number of times the product has been viewed.

### errorMultiStatus

- `status` (integer, optional) — The [HTTP status code](https://developer.mozilla.org/en-US/docs/Web/HTTP/Status) of the failure or partial success.
- `title` (string, optional) — A summary of the failure or partial success.
- `type` (string, optional) — A BigCommerce-defined error signifier.
- `errors` (DetailedErrors, optional) — Each key-value pair describes a failure or partial success case.

### metaCollection_Full

Data about the response, including pagination and collection totals.

- `pagination` (pagination_Full, optional) — Data about the response, including pagination and collection totals.

### DetailedErrors

Each key-value pair describes a failure or partial success case.

### customUrl_Full

The custom URL for the product on the storefront. If not provided in the POST request, the URL will be autogenerated from the product name.

- `url` (string, optional) — Product URL on the storefront.
- `is_customized` (boolean, optional) — Returns `true` if the URL has been changed from its default state (the auto-assigned URL that BigCommerce provides).
- `create_redirect` (boolean, optional) — Optional field. This field automatically creates a dynamic 301 redirect when a product URL change occurs with a PUT request. Existing dynamic redirects will automatically update to a new URL to avoid a loop.

### productCustomField_Put

The model for a PUT to update a custom field on a product.

- `name` (string, required) — The name of the field, shown on the storefront, orders, etc. Required for /POST
- `value` (string, required) — The name of the field, shown on the storefront, orders, etc. Required for /POST
- `id` (integer, optional) — The unique numeric ID of the custom field; increments sequentially. Required to update existing custom field in /PUT request. Read-Only

### ProductPutCollectionItemsBulkPricingRulesItems

- `quantity_min` (integer, required) — The minimum inclusive quantity of a product to satisfy this rule. Must be greater than or equal to zero. For `fixed` rules, the minimum quantity canʼt be less than two. Required in /POST.
- `quantity_max` (integer, required) — The maximum inclusive quantity of a product to satisfy this rule. Must be greater than the `quantity_min` value – unless this field has a value of 0 (zero), in which case there will be no maximum bound for this rule. Required in /POST.
- `type` (enum, required) — The type of adjustment that is made. Values: `price` - the adjustment amount per product; `percent` - the adjustment as a percentage of the original price; `fixed` - the adjusted absolute price of the product. Required in /POST.
  - Allowed values: `price`, `percent`, `fixed`
- `amount` (ProductPutCollectionItemsBulkPricingRulesItemsAmount, required) — You can express the adjustment type as either a fixed dollar amount or a percentage. Send a number; the response will return a number for `price` and `fixed` adjustments. Divide the adjustment percentage by 100 and send the result in string format. For example, represent 10% as “.10”. The response will return a float value for both `price` and `percentage` adjustments. Required in /POST.
- `id` (integer, optional) — Unique ID of the *Bulk Pricing Rule*. Read-Only.

### productImage_Full

Common ProductImage properties.

- `date_modified` (datetime, optional) — The date on which the product image was modified.
- `description` (string, optional) — The description for the image.
- `id` (integer, optional) — The unique numeric ID of the image; increments sequentially.
- `image_url` (string, optional) — The URL for an image displayed on the storefront when the conditions are applied. Limit of 8MB per file. Cannot be used with `image_file`.
- `is_thumbnail` (boolean, optional) — Flag for identifying whether the image is used as the productʼs thumbnail.
- `product_id` (integer, optional) — The unique numeric identifier for the product with which the image is associated.
- `sort_order` (integer, optional) — The order in which the image will be displayed on the product page. Higher integers give the image a lower priority. When updating, if the image is given a lower priority, all images with a `sort_order` the same as or greater than the imageʼs new `sort_order` value will have their `sort_order`s reordered.
- `url_standard` (string, optional) — The standard URL for this image. By default, this is used for product-page images.
- `url_thumbnail` (string, optional) — The thumbnail URL for this image. By default, this is the image size used on the category page and in side panels.
- `url_tiny` (string, optional) — The tiny URL for this image. By default, this is the image size used for thumbnails beneath the product image on a product page.
- `url_zoom` (string, optional) — The zoom URL for this image. By default, this is used as the zoom image on product pages when zoom images are enabled. You should provide an image smaller than 1280x1280; otherwise, the API returns a resized image.

### productVideo_Full

A product video model.

- `description` (string, optional) — The description for the video. If left blank, this will be filled in according to data on a host site.
- `id` (integer, optional) — The unique numeric ID of the product video; increments sequentially.
- `length` (string, optional) — Length of the video. This will be filled in according to data on a host site.
- `product_id` (integer, optional) — The unique numeric identifier for the product with which the image is associated.
- `sort_order` (integer, optional) — The order in which the video will be displayed on the product page. Higher integers give the video a lower priority. When updating, if the video is given a lower priority, all videos with a `sort_order` the same as or greater than the videoʼs new `sort_order` value will have their `sort_order`s reordered.
- `title` (string, optional) — The title for the video. If left blank, this will be filled in according to data on a host site.
- `type` (enum, optional) — The video type (a short name of a host site).
  - Allowed values: `youtube`
- `video_id` (string, optional) — The ID of the video on a host site.

### ProductBaseResponseBulkPricingRulesItems

- `id` (integer, required) — Unique ID of the *Bulk Pricing Rule*. Read-Only.
- `quantity_min` (integer, required) — The minimum inclusive quantity of a product to satisfy this rule. Must be greater than or equal to zero. For `fixed` rules, the minimum quantity canʼt be less than two. Required in /POST.
- `quantity_max` (integer, required) — The maximum inclusive quantity of a product to satisfy this rule. Must be greater than the `quantity_min` value – unless this field has a value of 0 (zero), in which case there will be no maximum bound for this rule. Required in /POST.
- `type` (enum, required) — The type of adjustment that is made. Values: `price` - the adjustment amount per product; `percent` - the adjustment as a percentage of the original price; `fixed` - the adjusted absolute price of the product. Required in /POST.
  - Allowed values: `price`, `percent`, `fixed`
- `amount` (ProductBaseResponseBulkPricingRulesItemsAmount, required) — You can express the adjustment type as either a fixed dollar amount or a percentage. Send a number; the response will return a number for `price` and `fixed` adjustments. Divide the adjustment percentage by 100 and send the result in string format. For example, represent 10% as “.10”. The response will return a float value for both `price` and `percentage` adjustments. Required in /POST.

### productModifier_Full

Product Modifier

- `required` (boolean, required) — Whether or not this modifer is required or not at checkout. Required in a /POST.
- `type` (enum, required) — BigCommerce API, which determines how it will display on the storefront. Acceptable values: `date`, `checkbox`, `file`, `text`, `multi_line_text`, `numbers_only_text`, `radio_buttons`, `rectangles`, `dropdown`, `product_list`, `product_list_with_images`, `swatch`. Required in a /POST.
  - Allowed values: `date`, `checkbox`, `file`, `text`, `multi_line_text`, `numbers_only_text`, `radio_buttons`, `rectangles`, `dropdown`, `product_list`, `product_list_with_images`, `swatch`
- `config` (config_Full, optional) — The values for option config can vary based on the Modifier created.
- `display_name` (string, optional) — The name of the option shown on the storefront.
- `id` (integer, optional) — The unique numeric ID of the modifier; increments sequentially.
- `name` (string, optional) — The unique option name. Auto-generated from the display name, a timestamp, and the product ID.
- `option_values` (list of productModifierOptionValue_Full, optional)
- `product_id` (integer, optional) — The unique numeric ID of the product to which the option belongs.
- `sort_order` (integer, optional) — The order the modifiers display on the product detail page.

### productOption_Base

Common Option properties.

- `id` (integer, optional, nullable) — The unique numerical ID of the option, increments sequentially.
- `product_id` (integer, optional) — The unique numerical ID of the product to which the option belongs.
- `display_name` (string, optional) — The name of the option shown on the storefront.
- `type` (enum, optional) — The type of option, which determines how it will display on the storefront. Acceptable values: `radio_buttons`, `rectangles`, `dropdown`, `product_list`, `product_list_with_images`, `swatch`. For reference, the former v2 API values are: RB = radio_buttons, RT = rectangles, S = dropdown, P = product_list, PI = product_list_with_images, CS = swatch.
  - Allowed values: `radio_buttons`, `rectangles`, `dropdown`, `product_list`, `product_list_with_images`, `swatch`
- `config` (productOptionConfig_Full, optional) — The values for option config can vary based on the Modifier created.
- `sort_order` (integer, optional) — Order in which the option is displayed on the storefront.
- `option_values` (list of productOptionOptionValue_Full, optional)

### primaryImage_Full

Common PrimaryImage properties.

- `id` (integer, optional) — The unique numeric ID of the image; increments sequentially.
- `product_id` (integer, optional) — The unique numeric identifier for the product with which the image is associated.
- `is_thumbnail` (boolean, optional) — Flag for identifying whether the image is used as the productʼs thumbnail.
- `sort_order` (integer, optional) — The order in which the image will be displayed on the product page. Higher integers give the image a lower priority. When updating, if the image is given a lower priority, all images with a `sort_order` the same as or greater than the imageʼs new `sort_order` value will have their `sort_order`s reordered.
- `description` (string, optional) — The description for the image.
- `image_file` (string, optional) — The local path to the original image file uploaded to BigCommerce. Use image_url when creating a product. Must be sent as a `multipart/form-data` field in the request body. Limit of 8 MB per file.
- `url_zoom` (string, optional) — The zoom URL for this image. By default, this is used as the zoom image on product pages when zoom images are enabled. You should provide an image smaller than 1280x1280; otherwise, the API returns a resized image.
- `url_standard` (string, optional) — The standard URL for this image. By default, this is used for product-page images.
- `url_thumbnail` (string, optional) — The thumbnail URL for this image. By default, this is the image size used on the category page and in side panels.
- `url_tiny` (string, optional) — The tiny URL for this image. By default, this is the image size used for thumbnails beneath the product image on a product page.
- `date_modified` (datetime, optional) — The date on which the product image was modified.

### pagination_Full

Data about the response, including pagination and collection totals.

- `total` (integer, optional) — Total number of items in the result set.
- `count` (integer, optional) — Total number of items in the collection response.
- `per_page` (integer, optional) — The amount of items returned in the collection per page, controlled by the limit parameter.
- `current_page` (integer, optional) — The page you are currently on within the collection.
- `total_pages` (integer, optional) — The total number of pages in the collection.
- `links` (PaginationFullLinks, optional) — Pagination links for the previous and next parts of the whole collection.

### ProductPutCollectionItemsBulkPricingRulesItemsAmount

You can express the adjustment type as either a fixed dollar amount or a percentage. Send a number; the response will return a number for `price` and `fixed` adjustments. Divide the adjustment percentage by 100 and send the result in string format. For example, represent 10% as “.10”. The response will return a float value for both `price` and `percentage` adjustments. Required in /POST.

### ProductBaseResponseBulkPricingRulesItemsAmount

You can express the adjustment type as either a fixed dollar amount or a percentage. Send a number; the response will return a number for `price` and `fixed` adjustments. Divide the adjustment percentage by 100 and send the result in string format. For example, represent 10% as “.10”. The response will return a float value for both `price` and `percentage` adjustments. Required in /POST.

### config_Full

The values for option config can vary based on the Modifier created.

- `default_value` (string, optional) — (date, text, multi_line_text, numbers_only_text) The default value. Shown on a date option as an ISO-8601–formatted string, or on a text option as a string.
- `checked_by_default` (boolean, optional) — (checkbox) Flag for setting the checkbox to be checked by default.
- `checkbox_label` (string, optional) — (checkbox) Label displayed for the checkbox option.
- `date_limited` (boolean, optional) — (date) Flag to limit the dates allowed to be entered on a date option.
- `date_limit_mode` (enum, optional) — (date) The type of limit that is allowed to be entered on a date option.
  - Allowed values: `earliest`, `range`, `latest`
- `date_earliest_value` (date, optional) — (date) The earliest date allowed to be entered on the date option, as an ISO-8601 formatted string.
- `date_latest_value` (date, optional) — (date) The latest date allowed to be entered on the date option, as an ISO-8601 formatted string.
- `file_types_mode` (enum, optional) — (file) The kind of restriction on the file types that can be uploaded with a file upload option. Values: `specific` - restricts uploads to particular file types; `all` - allows all file types.
  - Allowed values: `specific`, `all`
- `file_types_supported` (list of string, optional) — (file) The type of files allowed to be uploaded if the `file_type_option` is set to `specific`. Values: `images` - Allows upload of image MIME types (`bmp`, `gif`, `jpg`, `jpeg`, `jpe`, `jif`, `jfif`, `jfi`, `png`, `wbmp`, `xbm`, `tiff`). `documents` - Allows upload of document MIME types (`txt`, `pdf`, `rtf`, `doc`, `docx`, `xls`, `xlsx`, `accdb`, `mdb`, `one`, `pps`, `ppsx`, `ppt`, `pptx`, `pub`, `odt`, `ods`, `odp`, `odg`, `odf`). `other` - Allows file types defined in the `file_types_other` array.
- `file_types_other` (list of string, optional) — (file) A list of other file types allowed with the file upload option.
- `file_max_size` (integer, optional) — (file) The maximum size for a file that can be used with the file upload option. This will still be limited by the server.
- `text_characters_limited` (boolean, optional) — (text, multi_line_text) Flag to validate the length of a text or multi-line text input.
- `text_min_length` (integer, optional) — (text, multi_line_text) The minimum length allowed for a text or multi-line text option.
- `text_max_length` (integer, optional) — (text, multi_line_text) The maximum length allowed for a text or multi line text option.
- `text_lines_limited` (boolean, optional) — (multi_line_text) Flag to validate the maximum number of lines allowed on a multi-line text input.
- `text_max_lines` (integer, optional) — (multi_line_text) The maximum number of lines allowed on a multi-line text input.
- `number_limited` (boolean, optional) — (numbers_only_text) Flag to limit the value of a number option.
- `number_limit_mode` (enum, optional) — (numbers_only_text) The type of limit on values entered for a number option.
  - Allowed values: `lowest`, `highest`, `range`
- `number_lowest_value` (double, optional) — (numbers_only_text) The lowest allowed value for a number option if `number_limited` is true.
- `number_highest_value` (double, optional) — (numbers_only_text) The highest allowed value for a number option if `number_limited` is true.
- `number_integers_only` (boolean, optional) — (numbers_only_text) Flag to limit the input on a number option to whole numbers only.
- `product_list_adjusts_inventory` (boolean, optional) — (product_list, product_list_with_images) Flag for automatically adjusting inventory on a product included in the list.
- `product_list_adjusts_pricing` (boolean, optional) — (product_list, product_list_with_images) Flag to add the optional productʼs price to the main productʼs price.
- `product_list_shipping_calc` (enum, optional) — (product_list, product_list_with_images) How to factor the optional productʼs weight and package dimensions into the shipping quote. Values: `none` - donʼt adjust; `weight` - use shipping weight only; `package` - use weight and dimensions.
  - Allowed values: `none`, `weight`, `package`

### productModifierOptionValue_Full

Product Modifer `option_value`.

- `label` (string, required) — The text display identifying the value on the storefront. Required in a /POST.
- `sort_order` (integer, required) — The order in which the value will be displayed on the product page. Required in a /POST.
- `adjusters` (adjusters_Full, optional)
- `id` (integer, optional) — The unique numeric ID of the value; increments sequentially.
- `is_default` (boolean, optional) — The flag for preselecting a value as the default on the storefront. This field is not supported for swatch options/modifiers.
- `option_id` (integer, optional)
- `value_data` (ProductModifierOptionValueBaseValueData, optional, nullable) — Extra data describing the value, based on the type of option or modifier with which the value is associated. The `swatch` type option can accept an array of `colors`, with up to three hexidecimal color keys; or an `image_url`, which is a full image URL path including protocol. The `product list` type option requires a `product_id`. The `checkbox` type option requires a boolean flag, called `checked_value`, to determine which value is considered to be the checked state. If no data is available, returns `null`.

### productOptionConfig_Full

The values for option config can vary based on the Modifier created.

- `default_value` (string, optional) — (date, text, multi_line_text, numbers_only_text) The default value. Shown on a date option as an ISO-8601–formatted string, or on a text option as a string.
- `checked_by_default` (boolean, optional) — (checkbox) Flag for setting the checkbox to be checked by default.
- `checkbox_label` (string, optional) — (checkbox) Label displayed for the checkbox option.
- `date_limited` (boolean, optional) — (date) Flag to limit the dates allowed to be entered on a date option.
- `date_limit_mode` (enum, optional) — (date) The type of limit that is allowed to be entered on a date option.
  - Allowed values: `earliest`, `range`, `latest`
- `date_earliest_value` (date, optional) — (date) The earliest date allowed to be entered on the date option, as an ISO-8601 formatted string.
- `date_latest_value` (date, optional) — (date) The latest date allowed to be entered on the date option, as an ISO-8601 formatted string.
- `file_types_mode` (enum, optional) — (file) The kind of restriction on the file types that can be uploaded with a file upload option. Values: `specific` - restricts uploads to particular file types; `all` - allows all file types.
  - Allowed values: `specific`, `all`
- `file_types_supported` (list of string, optional) — (file) The type of files allowed to be uploaded if the `file_type_option` is set to `specific`. Values: `images` - Allows upload of image MIME types (`bmp`, `gif`, `jpg`, `jpeg`, `jpe`, `jif`, `jfif`, `jfi`, `png`, `wbmp`, `xbm`, `tiff`). `documents` - Allows upload of document MIME types (`txt`, `pdf`, `rtf`, `doc`, `docx`, `xls`, `xlsx`, `accdb`, `mdb`, `one`, `pps`, `ppsx`, `ppt`, `pptx`, `pub`, `odt`, `ods`, `odp`, `odg`, `odf`). `other` - Allows file types defined in the `file_types_other` array.
- `file_types_other` (list of string, optional) — (file) A list of other file types allowed with the file upload option.
- `file_max_size` (integer, optional) — (file) The maximum size for a file that can be used with the file upload option. This will still be limited by the server.
- `text_characters_limited` (boolean, optional) — (text, multi_line_text) Flag to validate the length of a text or multi-line text input.
- `text_min_length` (integer, optional) — (text, multi_line_text) The minimum length allowed for a text or multi-line text option.
- `text_max_length` (integer, optional) — (text, multi_line_text) The maximum length allowed for a text or multi line text option.
- `text_lines_limited` (boolean, optional) — (multi_line_text) Flag to validate the maximum number of lines allowed on a multi-line text input.
- `text_max_lines` (integer, optional) — (multi_line_text) The maximum number of lines allowed on a multi-line text input.
- `number_limited` (boolean, optional) — (numbers_only_text) Flag to limit the value of a number option.
- `number_limit_mode` (enum, optional) — (numbers_only_text) The type of limit on values entered for a number option.
  - Allowed values: `lowest`, `highest`, `range`
- `number_lowest_value` (double, optional) — (numbers_only_text) The lowest allowed value for a number option if `number_limited` is true.
- `number_highest_value` (double, optional) — (numbers_only_text) The highest allowed value for a number option if `number_limited` is true.
- `number_integers_only` (boolean, optional) — (numbers_only_text) Flag to limit the input on a number option to whole numbers only.
- `product_list_adjusts_inventory` (boolean, optional) — (product_list, product_list_with_images) Flag for automatically adjusting inventory on a product included in the list.
- `product_list_adjusts_pricing` (boolean, optional) — (product_list, product_list_with_images) Flag to add the optional productʼs price to the main productʼs price.
- `product_list_shipping_calc` (enum, optional) — (product_list, product_list_with_images) How to factor the optional productʼs weight and package dimensions into the shipping quote. Values: `none` - donʼt adjust; `weight` - use shipping weight only; `package` - use weight and dimensions.
  - Allowed values: `none`, `weight`, `package`

### productOptionOptionValue_Full

Product Option `option_value`.

- `label` (string, required) — The text display identifying the value on the storefront. Required in a /POST.
- `sort_order` (integer, required) — The order in which the value will be displayed on the product page. Required in a /POST.
- `id` (integer, optional) — The unique numeric ID of the value; increments sequentially.
- `is_default` (boolean, optional) — The flag for preselecting a value as the default on the storefront. This field is not supported for swatch options/modifiers.
- `value_data` (ProductOptionOptionValueBaseValueData, optional, nullable) — Extra data describing the value, based on the type of option or modifier with which the value is associated. The `swatch` type option can accept an array of `colors`, with up to three hexidecimal color keys; or an `image_url`, which is a full image URL path including protocol. The `product list` type option requires a `product_id`. The `checkbox` type option requires a boolean flag, called `checked_value`, to determine which value is considered to be the checked state. If no data is available, returns `null`.

### PaginationFullLinks

Pagination links for the previous and next parts of the whole collection.

- `previous` (string, optional) — Link to the previous page returned in the response.
- `current` (string, optional) — Link to the current page returned in the response.
- `next` (string, optional) — Link to the next page returned in the response.

### adjusters_Full

- `price` (adjuster_Full, optional) — Adjuster for Complex Rules.
- `weight` (adjuster_Full, optional) — Adjuster for Complex Rules.
- `image_url` (string, optional) — The URL for an image displayed on the storefront when the modifier value is selected.Limit of 8MB per file.
- `purchasing_disabled` (AdjustersFullPurchasingDisabled, optional)

### ProductModifierOptionValueBaseValueData

Extra data describing the value, based on the type of option or modifier with which the value is associated. The `swatch` type option can accept an array of `colors`, with up to three hexidecimal color keys; or an `image_url`, which is a full image URL path including protocol. The `product list` type option requires a `product_id`. The `checkbox` type option requires a boolean flag, called `checked_value`, to determine which value is considered to be the checked state. If no data is available, returns `null`.

### ProductOptionOptionValueBaseValueData

Extra data describing the value, based on the type of option or modifier with which the value is associated. The `swatch` type option can accept an array of `colors`, with up to three hexidecimal color keys; or an `image_url`, which is a full image URL path including protocol. The `product list` type option requires a `product_id`. The `checkbox` type option requires a boolean flag, called `checked_value`, to determine which value is considered to be the checked state. If no data is available, returns `null`.

### adjuster_Full

Adjuster for Complex Rules.

- `adjuster` (enum, optional, nullable) — The type of adjuster for either the price or the weight of the variant, when the modifier value is selected on the storefront.
  - Allowed values: `relative`, `percentage`
- `adjuster_value` (double, optional) — The numeric amount by which the adjuster will change either the price or the weight of the variant, when the modifier value is selected on the storefront.

### AdjustersFullPurchasingDisabled

- `status` (boolean, optional) — Flag for whether the modifier value disables purchasing when selected on the storefront. This can be used for temporarily disabling a particular modifier value.
- `message` (string, optional) — The message displayed on the storefront when the purchasing disabled status is `true`.

## Examples

### Example 1

**Request**

```json
[
  {}
]
```

**Response**

```json
{
  "data": [
    {
      "availability": "available",
      "availability_description": "string",
      "base_variant_id": 1,
      "bin_picking_number": "string",
      "brand_id": 1,
      "bulk_pricing_rules": [
        {
          "id": 1,
          "quantity_min": 10,
          "quantity_max": 50,
          "type": "price",
          "amount": 10
        }
      ],
      "calculated_price": 1.1,
      "categories": [
        1.1
      ],
      "condition": "New",
      "cost_price": 1.1,
      "custom_fields": [
        {
          "name": "ISBN",
          "value": "1234567890123",
          "id": 6
        }
      ],
      "custom_url": {
        "url": "string",
        "is_customized": true,
        "create_redirect": true
      },
      "date_created": "2018-08-15T14:49:05+00:00",
      "date_last_imported": "string",
      "date_modified": "2018-08-24T14:41:00+00:00",
      "depth": 1.1,
      "description": "<p><span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi vel metus ac est egestas porta sed quis erat. Integer id nulla massa. Proin vitae enim nisi. Praesent non dignissim nulla. Nulla mattis id massa ac pharetra. Mauris et nisi in dolor aliquam sodales. Aliquam dui nisl, dictum quis leo sit amet, rutrum volutpat metus. Curabitur libero nunc, interdum ac libero non, tristique porttitor metus. Ut non dignissim lorem, in vestibulum leo. Vivamus sodales quis turpis eget.</span></p>",
      "fixed_cost_shipping_price": 1.1,
      "gift_wrapping_options_list": [
        1
      ],
      "gift_wrapping_options_type": "any",
      "gtin": "string",
      "height": 1.1,
      "id": 1,
      "images": [
        {
          "date_modified": "2024-01-15T09:30:00Z",
          "description": "string",
          "id": 1,
          "image_url": "string",
          "is_thumbnail": true,
          "product_id": 1,
          "sort_order": 1,
          "url_standard": "string",
          "url_thumbnail": "string",
          "url_tiny": "string",
          "url_zoom": "string"
        }
      ],
      "inventory_level": 1,
      "inventory_tracking": "none",
      "inventory_warning_level": 1,
      "is_condition_shown": true,
      "is_featured": true,
      "is_free_shipping": true,
      "is_preorder_only": true,
      "is_price_hidden": true,
      "is_visible": true,
      "layout_file": "string",
      "map_price": 1.1,
      "meta_description": "string",
      "meta_keywords": [
        "string"
      ],
      "modifiers": [
        {
          "required": true,
          "type": "date",
          "config": {
            "default_value": "string",
            "checked_by_default": true,
            "checkbox_label": "string",
            "date_limited": true,
            "date_limit_mode": "range",
            "date_earliest_value": "2023-01-15",
            "date_latest_value": "2023-01-15",
            "file_types_mode": "specific",
            "file_types_supported": [
              "images, documents, other"
            ],
            "file_types_other": [
              "pdf"
            ],
            "file_max_size": 5,
            "text_characters_limited": true,
            "text_min_length": 1,
            "text_max_length": 55,
            "text_lines_limited": true,
            "text_max_lines": 4,
            "number_limited": true,
            "number_limit_mode": "lowest",
            "number_lowest_value": 100,
            "number_highest_value": 1.1,
            "number_integers_only": false,
            "product_list_adjusts_inventory": true,
            "product_list_adjusts_pricing": true,
            "product_list_shipping_calc": "weight"
          },
          "display_name": "string",
          "id": 12,
          "name": "Add-a-$5-Donation1535039590-191",
          "option_values": [
            {
              "label": "Green",
              "sort_order": 0,
              "adjusters": {
                "price": {
                  "adjuster": "relative",
                  "adjuster_value": 5
                },
                "weight": {
                  "adjuster": "relative",
                  "adjuster_value": 5
                },
                "image_url": "https://cdn8.bigcommerce.com/s-{{store_hash}}/products/184/images/445/naturalcanvascart2_1024x1024__92347__29648.1534344533.1280.1280.jpg?c=2",
                "purchasing_disabled": {
                  "status": true,
                  "message": "string"
                }
              },
              "id": 1,
              "is_default": false,
              "option_id": 1,
              "value_data": {}
            }
          ],
          "product_id": 77,
          "sort_order": 1
        }
      ],
      "mpn": "string",
      "name": "Smith Journal 13",
      "open_graph_description": "string",
      "open_graph_title": "string",
      "open_graph_type": "product",
      "open_graph_use_image": true,
      "open_graph_use_meta_description": true,
      "open_graph_use_product_name": true,
      "option_set_display": "string",
      "option_set_id": 1,
      "options": [
        {
          "id": 55,
          "product_id": 4,
          "display_name": "Add-a-$5-Donation1535042499-187",
          "type": "radio_buttons",
          "config": {
            "default_value": "string",
            "checked_by_default": true,
            "checkbox_label": "string",
            "date_limited": true,
            "date_limit_mode": "range",
            "date_earliest_value": "2023-01-15",
            "date_latest_value": "2023-01-15",
            "file_types_mode": "specific",
            "file_types_supported": [
              "images, documents, other"
            ],
            "file_types_other": [
              "pdf"
            ],
            "file_max_size": 5,
            "text_characters_limited": true,
            "text_min_length": 1,
            "text_max_length": 55,
            "text_lines_limited": true,
            "text_max_lines": 4,
            "number_limited": true,
            "number_limit_mode": "lowest",
            "number_lowest_value": 100,
            "number_highest_value": 1.1,
            "number_integers_only": false,
            "product_list_adjusts_inventory": true,
            "product_list_adjusts_pricing": true,
            "product_list_shipping_calc": "weight"
          },
          "sort_order": 1,
          "option_values": [
            {
              "label": "Green",
              "sort_order": 0,
              "id": 1,
              "is_default": false,
              "value_data": {}
            }
          ]
        }
      ],
      "order_quantity_maximum": 1,
      "order_quantity_minimum": 1,
      "page_title": "string",
      "preorder_message": "string",
      "preorder_release_date": "2024-01-15T09:30:00Z",
      "price": 1.1,
      "price_hidden_label": "string",
      "primary_image": {
        "id": 1,
        "product_id": 1,
        "is_thumbnail": true,
        "sort_order": 1,
        "description": "string",
        "image_file": "string",
        "url_zoom": "string",
        "url_standard": "string",
        "url_thumbnail": "string",
        "url_tiny": "string",
        "date_modified": "2024-01-15T09:30:00Z"
      },
      "product_tax_code": "string",
      "related_products": [
        1
      ],
      "retail_price": 1.1,
      "reviews_count": 4,
      "reviews_rating_sum": 3,
      "sale_price": 1.1,
      "search_keywords": "string",
      "sku": "SM-13",
      "sort_order": 1,
      "tax_class_id": 1.1,
      "total_sold": 80,
      "type": "physical",
      "upc": "string",
      "videos": [
        {
          "description": "A video about documenation",
          "id": 1,
          "length": "string",
          "product_id": 1,
          "sort_order": 1,
          "title": "Writing Great Documentation",
          "type": "youtube",
          "video_id": "z3fRu9pkuXE"
        }
      ],
      "warranty": "string",
      "weight": 1.1,
      "width": 1.1,
      "view_count": 1
    }
  ]
}
```

**SDK Code**

```python
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v3/catalog/products"

payload = [{}]
headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.bigcommerce.com/stores/store_hash/v3/catalog/products';
const options = {
  method: 'PUT',
  headers: {
    Accept: 'application/json',
    'X-Auth-Token': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '[{}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v3/catalog/products"

	payload := strings.NewReader("[\n  {}\n]")

	req, _ := http.NewRequest("PUT", url, payload)

	req.Header.Add("Accept", "application/json")
	req.Header.Add("X-Auth-Token", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.bigcommerce.com/stores/store_hash/v3/catalog/products")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Accept"] = 'application/json'
request["X-Auth-Token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "[\n  {}\n]"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.put("https://api.bigcommerce.com/stores/store_hash/v3/catalog/products")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("[\n  {}\n]")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://api.bigcommerce.com/stores/store_hash/v3/catalog/products', [
  'body' => '[
  {}
]',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v3/catalog/products");
var request = new RestRequest(Method.PUT);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {}\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [[]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v3/catalog/products")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```

### Example 2

**Request**

```json
[
  {}
]
```

**Response**

```json
{
  "data": [
    {
      "availability": "available",
      "availability_description": "string",
      "base_variant_id": 1,
      "bin_picking_number": "string",
      "brand_id": 1,
      "bulk_pricing_rules": [
        {
          "id": 1,
          "quantity_min": 10,
          "quantity_max": 50,
          "type": "price",
          "amount": 10
        }
      ],
      "calculated_price": 1.1,
      "categories": [
        1.1
      ],
      "condition": "New",
      "cost_price": 1.1,
      "custom_fields": [
        {
          "name": "ISBN",
          "value": "1234567890123",
          "id": 6
        }
      ],
      "custom_url": {
        "url": "string",
        "is_customized": true,
        "create_redirect": true
      },
      "date_created": "2018-08-15T14:49:05+00:00",
      "date_last_imported": "string",
      "date_modified": "2018-08-24T14:41:00+00:00",
      "depth": 1.1,
      "description": "<p><span>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Morbi vel metus ac est egestas porta sed quis erat. Integer id nulla massa. Proin vitae enim nisi. Praesent non dignissim nulla. Nulla mattis id massa ac pharetra. Mauris et nisi in dolor aliquam sodales. Aliquam dui nisl, dictum quis leo sit amet, rutrum volutpat metus. Curabitur libero nunc, interdum ac libero non, tristique porttitor metus. Ut non dignissim lorem, in vestibulum leo. Vivamus sodales quis turpis eget.</span></p>",
      "fixed_cost_shipping_price": 1.1,
      "gift_wrapping_options_list": [
        1
      ],
      "gift_wrapping_options_type": "any",
      "gtin": "string",
      "height": 1.1,
      "id": 1,
      "images": [
        {
          "date_modified": "2024-01-15T09:30:00Z",
          "description": "string",
          "id": 1,
          "image_url": "string",
          "is_thumbnail": true,
          "product_id": 1,
          "sort_order": 1,
          "url_standard": "string",
          "url_thumbnail": "string",
          "url_tiny": "string",
          "url_zoom": "string"
        }
      ],
      "inventory_level": 1,
      "inventory_tracking": "none",
      "inventory_warning_level": 1,
      "is_condition_shown": true,
      "is_featured": true,
      "is_free_shipping": true,
      "is_preorder_only": true,
      "is_price_hidden": true,
      "is_visible": true,
      "layout_file": "string",
      "map_price": 1.1,
      "meta_description": "string",
      "meta_keywords": [
        "string"
      ],
      "modifiers": [
        {
          "required": true,
          "type": "date",
          "config": {
            "default_value": "string",
            "checked_by_default": true,
            "checkbox_label": "string",
            "date_limited": true,
            "date_limit_mode": "range",
            "date_earliest_value": "2023-01-15",
            "date_latest_value": "2023-01-15",
            "file_types_mode": "specific",
            "file_types_supported": [
              "images, documents, other"
            ],
            "file_types_other": [
              "pdf"
            ],
            "file_max_size": 5,
            "text_characters_limited": true,
            "text_min_length": 1,
            "text_max_length": 55,
            "text_lines_limited": true,
            "text_max_lines": 4,
            "number_limited": true,
            "number_limit_mode": "lowest",
            "number_lowest_value": 100,
            "number_highest_value": 1.1,
            "number_integers_only": false,
            "product_list_adjusts_inventory": true,
            "product_list_adjusts_pricing": true,
            "product_list_shipping_calc": "weight"
          },
          "display_name": "string",
          "id": 12,
          "name": "Add-a-$5-Donation1535039590-191",
          "option_values": [
            {
              "label": "Green",
              "sort_order": 0,
              "adjusters": {
                "price": {
                  "adjuster": "relative",
                  "adjuster_value": 5
                },
                "weight": {
                  "adjuster": "relative",
                  "adjuster_value": 5
                },
                "image_url": "https://cdn8.bigcommerce.com/s-{{store_hash}}/products/184/images/445/naturalcanvascart2_1024x1024__92347__29648.1534344533.1280.1280.jpg?c=2",
                "purchasing_disabled": {
                  "status": true,
                  "message": "string"
                }
              },
              "id": 1,
              "is_default": false,
              "option_id": 1,
              "value_data": {}
            }
          ],
          "product_id": 77,
          "sort_order": 1
        }
      ],
      "mpn": "string",
      "name": "Smith Journal 13",
      "open_graph_description": "string",
      "open_graph_title": "string",
      "open_graph_type": "product",
      "open_graph_use_image": true,
      "open_graph_use_meta_description": true,
      "open_graph_use_product_name": true,
      "option_set_display": "string",
      "option_set_id": 1,
      "options": [
        {
          "id": 55,
          "product_id": 4,
          "display_name": "Add-a-$5-Donation1535042499-187",
          "type": "radio_buttons",
          "config": {
            "default_value": "string",
            "checked_by_default": true,
            "checkbox_label": "string",
            "date_limited": true,
            "date_limit_mode": "range",
            "date_earliest_value": "2023-01-15",
            "date_latest_value": "2023-01-15",
            "file_types_mode": "specific",
            "file_types_supported": [
              "images, documents, other"
            ],
            "file_types_other": [
              "pdf"
            ],
            "file_max_size": 5,
            "text_characters_limited": true,
            "text_min_length": 1,
            "text_max_length": 55,
            "text_lines_limited": true,
            "text_max_lines": 4,
            "number_limited": true,
            "number_limit_mode": "lowest",
            "number_lowest_value": 100,
            "number_highest_value": 1.1,
            "number_integers_only": false,
            "product_list_adjusts_inventory": true,
            "product_list_adjusts_pricing": true,
            "product_list_shipping_calc": "weight"
          },
          "sort_order": 1,
          "option_values": [
            {
              "label": "Green",
              "sort_order": 0,
              "id": 1,
              "is_default": false,
              "value_data": {}
            }
          ]
        }
      ],
      "order_quantity_maximum": 1,
      "order_quantity_minimum": 1,
      "page_title": "string",
      "preorder_message": "string",
      "preorder_release_date": "2024-01-15T09:30:00Z",
      "price": 1.1,
      "price_hidden_label": "string",
      "primary_image": {
        "id": 1,
        "product_id": 1,
        "is_thumbnail": true,
        "sort_order": 1,
        "description": "string",
        "image_file": "string",
        "url_zoom": "string",
        "url_standard": "string",
        "url_thumbnail": "string",
        "url_tiny": "string",
        "date_modified": "2024-01-15T09:30:00Z"
      },
      "product_tax_code": "string",
      "related_products": [
        1
      ],
      "retail_price": 1.1,
      "reviews_count": 4,
      "reviews_rating_sum": 3,
      "sale_price": 1.1,
      "search_keywords": "string",
      "sku": "SM-13",
      "sort_order": 1,
      "tax_class_id": 1.1,
      "total_sold": 80,
      "type": "physical",
      "upc": "string",
      "videos": [
        {
          "description": "A video about documenation",
          "id": 1,
          "length": "string",
          "product_id": 1,
          "sort_order": 1,
          "title": "Writing Great Documentation",
          "type": "youtube",
          "video_id": "z3fRu9pkuXE"
        }
      ],
      "warranty": "string",
      "weight": 1.1,
      "width": 1.1,
      "view_count": 1
    }
  ],
  "meta": {
    "pagination": {
      "count": 36,
      "current_page": 1,
      "links": {
        "current": "?page=1&limit=50",
        "next": "string",
        "previous": "string"
      },
      "per_page": 50,
      "total": 36,
      "total_pages": 1
    }
  },
  "errors": {
    "errors": {},
    "status": 1,
    "title": "string",
    "type": "string"
  }
}
```

**SDK Code**

```python
import requests

url = "https://api.bigcommerce.com/stores/store_hash/v3/catalog/products"

payload = [{}]
headers = {
    "Accept": "application/json",
    "X-Auth-Token": "<apiKey>",
    "Content-Type": "application/json"
}

response = requests.put(url, json=payload, headers=headers)

print(response.json())
```

```javascript
const url = 'https://api.bigcommerce.com/stores/store_hash/v3/catalog/products';
const options = {
  method: 'PUT',
  headers: {
    Accept: 'application/json',
    'X-Auth-Token': '<apiKey>',
    'Content-Type': 'application/json'
  },
  body: '[{}]'
};

try {
  const response = await fetch(url, options);
  const data = await response.json();
  console.log(data);
} catch (error) {
  console.error(error);
}
```

```go
package main

import (
	"fmt"
	"strings"
	"net/http"
	"io"
)

func main() {

	url := "https://api.bigcommerce.com/stores/store_hash/v3/catalog/products"

	payload := strings.NewReader("[\n  {}\n]")

	req, _ := http.NewRequest("PUT", url, payload)

	req.Header.Add("Accept", "application/json")
	req.Header.Add("X-Auth-Token", "<apiKey>")
	req.Header.Add("Content-Type", "application/json")

	res, _ := http.DefaultClient.Do(req)

	defer res.Body.Close()
	body, _ := io.ReadAll(res.Body)

	fmt.Println(res)
	fmt.Println(string(body))

}
```

```ruby
require 'uri'
require 'net/http'

url = URI("https://api.bigcommerce.com/stores/store_hash/v3/catalog/products")

http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true

request = Net::HTTP::Put.new(url)
request["Accept"] = 'application/json'
request["X-Auth-Token"] = '<apiKey>'
request["Content-Type"] = 'application/json'
request.body = "[\n  {}\n]"

response = http.request(request)
puts response.read_body
```

```java
import com.mashape.unirest.http.HttpResponse;
import com.mashape.unirest.http.Unirest;

HttpResponse<String> response = Unirest.put("https://api.bigcommerce.com/stores/store_hash/v3/catalog/products")
  .header("Accept", "application/json")
  .header("X-Auth-Token", "<apiKey>")
  .header("Content-Type", "application/json")
  .body("[\n  {}\n]")
  .asString();
```

```php
<?php
require_once('vendor/autoload.php');

$client = new \GuzzleHttp\Client();

$response = $client->request('PUT', 'https://api.bigcommerce.com/stores/store_hash/v3/catalog/products', [
  'body' => '[
  {}
]',
  'headers' => [
    'Accept' => 'application/json',
    'Content-Type' => 'application/json',
    'X-Auth-Token' => '<apiKey>',
  ],
]);

echo $response->getBody();
```

```csharp
using RestSharp;

var client = new RestClient("https://api.bigcommerce.com/stores/store_hash/v3/catalog/products");
var request = new RestRequest(Method.PUT);
request.AddHeader("Accept", "application/json");
request.AddHeader("X-Auth-Token", "<apiKey>");
request.AddHeader("Content-Type", "application/json");
request.AddParameter("application/json", "[\n  {}\n]", ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
```

```swift
import Foundation

let headers = [
  "Accept": "application/json",
  "X-Auth-Token": "<apiKey>",
  "Content-Type": "application/json"
]
let parameters = [[]] as [String : Any]

let postData = JSONSerialization.data(withJSONObject: parameters, options: [])

let request = NSMutableURLRequest(url: NSURL(string: "https://api.bigcommerce.com/stores/store_hash/v3/catalog/products")! as URL,
                                        cachePolicy: .useProtocolCachePolicy,
                                    timeoutInterval: 10.0)
request.httpMethod = "PUT"
request.allHTTPHeaderFields = headers
request.httpBody = postData as Data

let session = URLSession.shared
let dataTask = session.dataTask(with: request as URLRequest, completionHandler: { (data, response, error) -> Void in
  if (error != nil) {
    print(error as Any)
  } else {
    let httpResponse = response as? HTTPURLResponse
    print(httpResponse)
  }
})

dataTask.resume()
```