openapi: 3.0.3
info:
title: BigCommerce Catalog - Product Modifiers
description: >-
> The Catalog API manages products, categories, brands, bulk pricing rules,
and more. To learn more about catalog resources, see the [Catalog
Overview](/docs/store-operations/catalog).
Product Modifiers represent choices that the shopper can make to change how
the merchant customizes or adds on to the product. Examples include shipping
insurance, monograms, custom inseam length, and a color selection for an
unfinished product.
Modifier values do not change which item is picked in a warehouse, but they
change what happens to that item between the warehouse shelf and the shopper
taking possession of their order.
Critically, Modifier values do not change which Product Variant is
fulfilled. You cannot track inventory for combinations of Modifier values.
You can add an adjuster to a Modifier value to override the underlying
Product Variant's properties, such as price, weight, and shipping rules. Not all Modifier types are compatible with adjusters.
> To learn more about authenticating Catalog endpoints, locate the
**Authentication** section at the top of each endpoint, then click **Show
Details**.
## Resources
### Webhooks
Learn more about [Product webhook
events](/docs/integrations/webhooks/events#products).
### Additional Catalog endpoints
* [Brands](/docs/rest-catalog/brands)
* [Categories](/docs/rest-catalog/categories)
* [Category Trees](/docs/rest-catalog/category-trees)
* [Products](/docs/rest-catalog/products)
* [Product Variants](/docs/rest-catalog/product-variants)
* [Product Variant Options](/docs/rest-catalog/product-variant-options)
termsOfService: https://www.bigcommerce.com/terms
contact:
name: BigCommerce
url: https://www.bigcommerce.com
email: [email protected]
version: ''
servers:
- url: https://api.bigcommerce.com/stores/{store_hash}/v3
variables:
store_hash:
default: store_hash
description: Permanent ID of the BigCommerce store.
description: BigCommerce API Gateway
security:
- X-Auth-Token: []
tags:
- name: Images
- name: Product Modifiers
- name: Values
paths:
/catalog/products/{product_id}/modifiers:
get:
tags:
- Product Modifiers
summary: BigCommerce Get All Product Modifiers
description: >-
Returns a list of all *Product Modifiers*. Optional parameters can be
passed in.
operationId: getProductModifiers
parameters:
- name: page
in: query
description: Specifies the page number in a limited (paginated) list of products.
schema:
type: integer
- name: limit
in: query
description: >-
Controls the number of items per page in a limited (paginated) list
of products.
schema:
type: integer
- name: include_fields
in: query
description: >-
Fields to include, in a comma-separated list. The ID and the
specified fields will be returned.
schema:
type: string
- name: exclude_fields
in: query
description: >-
Fields to exclude, in a comma-separated list. The specified fields
will be excluded from a response. The ID cannot be excluded.
schema:
type: string
responses:
'200':
description: ''
content:
application/json:
schema:
title: Modifier Collection Response
type: object
properties:
data:
type: array
items:
$ref: '#/components/schemas/productModifier_Full'
meta:
$ref: '#/components/schemas/metaCollection_Full'
description: Modifier Collection Response return for /GET All Modifiers.
example:
data:
- id: 206
product_id: 158
name: Insurance
display_name: Insurace
type: checkbox
required: true
config:
checkbox_label: $5 for insurance
checked_by_default: false
option_values:
- id: 183
option_id: 206
label: 'Yes'
sort_order: 0
value_data:
checked_value: true
is_default: false
adjusters:
price: {}
weight: {}
image_url: ''
purchasing_disabled:
status: false
message: ''
- id: 184
option_id: 206
label: 'No'
sort_order: 1
value_data:
checked_value: false
is_default: true
adjusters:
price: {}
weight: {}
image_url: ''
purchasing_disabled:
status: false
message: ''
meta:
pagination:
total: 1
count: 1
per_page: 50
current_page: 1
total_pages: 1
links:
current: '?page=1&limit=50'
post:
tags:
- Product Modifiers
summary: BigCommerce Create a Product Modifier
description: >-
Creates a *Product Modifier*.
**Required Fields**
* `required`
* `display_name`
* `type`
**Read-Only Fields**
* `id`
**Notes**
It takes two separate requests to create a new checkbox modifier with
option values. Perform a request to create a modifier, then perform a
second request to update option values.
operationId: createProductModifier
parameters:
- $ref: '#/components/parameters/ContentType'
requestBody:
content:
application/json:
schema:
title: Modifier Post
description: The model for a POST to create a modifier on a product.
allOf:
- title: Modifier Base
required:
- required
- type
type: object
properties:
type:
type: string
description: >
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.
enum:
- date
- checkbox
- file
- text
- multi_line_text
- numbers_only_text
- radio_buttons
- rectangles
- dropdown
- product_list
- product_list_with_images
- swatch
x-required:
- post
required:
type: boolean
description: >
Whether or not this modifer is required or not at
checkout. Required in a /POST.
x-required:
- post
sort_order:
type: integer
description: >-
The order the modifiers display on the product detail
page.
config:
title: Option Config
type: object
properties:
default_value:
type: string
description: >
(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:
type: boolean
description: >
(checkbox) Flag for setting the checkbox to be
checked by default.
checkbox_label:
type: string
description: |
(checkbox) Label displayed for the checkbox option.
date_limited:
type: boolean
description: >
(date) Flag to limit the dates allowed to be entered
on a date option.
date_limit_mode:
type: string
description: >
(date) The type of limit that is allowed to be
entered on a date option.
example: range
enum:
- earliest
- range
- latest
date_earliest_value:
type: string
description: >
(date) The earliest date allowed to be entered on
the date option, as an ISO-8601 formatted string.
format: date-time
example: '2018-08-31T00:00:00+00:00'
date_latest_value:
type: string
description: >
(date) The latest date allowed to be entered on the
date option, as an ISO-8601 formatted string.
format: date-time
example: '2019-01-01T00:00:00+00:00'
file_types_mode:
type: string
description: >
(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.
example: specific
enum:
- specific
- all
file_types_supported:
type: array
description: >
(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.
example:
- images
- documents
- other
items:
type: string
file_types_other:
type: array
description: >
(file) A list of other file types allowed with the
file upload option.
example:
- pdf
- txt
items:
type: string
file_max_size:
type: integer
description: >
(file) The maximum size for a file that can be used
with the file upload option. This will still be
limited by the server.
example: 5
text_characters_limited:
type: boolean
description: >
(text, multi_line_text) Flag to validate the length
of a text or multi-line text input.
text_min_length:
type: integer
description: >
(text, multi_line_text) The minimum length allowed
for a text or multi-line text option.
example: 1
text_max_length:
type: integer
description: >
(text, multi_line_text) The maximum length allowed
for a text or multi line text option.
example: 55
text_lines_limited:
type: boolean
description: >
(multi_line_text) Flag to validate the maximum
number of lines allowed on a multi-line text input.
example: true
text_max_lines:
type: integer
description: >
(multi_line_text) The maximum number of lines
allowed on a multi-line text input.
example: 4
number_limited:
type: boolean
description: >
(numbers_only_text) Flag to limit the value of a
number option.
example: true
number_limit_mode:
type: string
description: >
(numbers_only_text) The type of limit on values
entered for a number option.
example: lowest
enum:
- lowest
- highest
- range
number_lowest_value:
type: number
description: >
(numbers_only_text) The lowest allowed value for a
number option if `number_limited` is true.
example: 100
number_highest_value:
type: number
description: >
(numbers_only_text) The highest allowed value for a
number option if `number_limited` is true.
number_integers_only:
type: boolean
description: >
(numbers_only_text) Flag to limit the input on a
number option to whole numbers only.
example: false
product_list_adjusts_inventory:
type: boolean
description: >
(product_list, product_list_with_images) Flag for
automatically adjusting inventory on a product
included in the list.
product_list_adjusts_pricing:
type: boolean
description: >
(product_list, product_list_with_images) Flag to add
the optional product's price to the main product's
price.
product_list_shipping_calc:
type: string
description: >
(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.
example: weight
enum:
- none
- weight
- package
description: >-
The values for option config can vary based on the
Modifier created.
option_values:
type: array
items:
title: Modifier Value
type: object
description: 'Part of Modifier Value Response '
allOf:
- title: Modifier Value Base
type: object
allOf:
- title: Option Value Base
required:
- label
- sort_order
type: object
properties:
is_default:
type: boolean
description: >
The flag for preselecting a value as the
default on the storefront. This field is
not supported for swatch
options/modifiers.
example: false
label:
type: string
description: >
The text display identifying the value on
the storefront. Required in a /POST.
example: Green
x-required:
- post
sort_order:
maximum: 2147483647
minimum: -2147483648
type: integer
description: >
The order in which the value will be
displayed on the product page. Required in
a /POST.
example: 0
x-required:
- post
value_data:
type: object
properties: {}
description: >
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.
description: Common Option Value properties.
- type: object
properties:
adjusters:
type: object
properties:
price:
title: Adjuster
type: object
properties:
adjuster:
type: string
description: >
The type of adjuster for either the
price or the weight of the variant, when
the modifier value is selected on the
storefront.
enum:
- relative
- percentage
x-nullable: true
adjuster_value:
type: number
description: >
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.
example: 5
description: Adjuster for Complex Rules.
weight:
title: Adjuster
type: object
properties:
adjuster:
type: string
description: >
The type of adjuster for either the
price or the weight of the variant, when
the modifier value is selected on the
storefront.
enum:
- relative
- percentage
x-nullable: true
adjuster_value:
type: number
description: >
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.
example: 5
description: Adjuster for Complex Rules.
image_url:
type: string
description: >
The URL for an image displayed on the
storefront when the modifier value is
selected.Limit of 8MB per file.
example: >-
https://cdn8.bigcommerce.com/s-{{store_hash}}/products/184/images/445/naturalcanvascart2_1024x1024__92347__29648.1534344533.1280.1280.jpg?c=2
purchasing_disabled:
type: object
properties:
status:
type: boolean
description: >
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:
type: string
description: >
The message displayed on the storefront
when the purchasing disabled status is
`true`.
- type: object
properties:
id:
type: integer
description: >
The unique numeric ID of the value; increments
sequentially.
description: Common Modifier properties.
- required:
- display_name
type: object
properties:
display_name:
type: string
description: |
The name of the option shown on the storefront.
example: Donation
x-required:
- post
required: true
responses:
'200':
description: ''
content:
application/json:
schema:
title: Modifier Response
type: object
properties:
data:
title: Modifer
type: object
description: Product Modifier
allOf:
- title: Modifier Base
required:
- required
- type
type: object
properties:
type:
type: string
description: >
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.
enum:
- date
- checkbox
- file
- text
- multi_line_text
- numbers_only_text
- radio_buttons
- rectangles
- dropdown
- product_list
- product_list_with_images
- swatch
x-required:
- post
required:
type: boolean
description: >
Whether or not this modifer is required or not at
checkout. Required in a /POST.
x-required:
- post
sort_order:
type: integer
description: >-
The order the modifiers display on the product
detail page.
config:
title: Option Config
type: object
properties:
default_value:
type: string
description: >
(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:
type: boolean
description: >
(checkbox) Flag for setting the checkbox to be
checked by default.
checkbox_label:
type: string
description: >
(checkbox) Label displayed for the checkbox
option.
date_limited:
type: boolean
description: >
(date) Flag to limit the dates allowed to be
entered on a date option.
date_limit_mode:
type: string
description: >
(date) The type of limit that is allowed to be
entered on a date option.
example: range
enum:
- earliest
- range
- latest
date_earliest_value:
type: string
description: >
(date) The earliest date allowed to be entered
on the date option, as an ISO-8601 formatted
string.
format: date
date_latest_value:
type: string
description: >
(date) The latest date allowed to be entered
on the date option, as an ISO-8601 formatted
string.
format: date
file_types_mode:
type: string
description: >
(file) The kind of restriction on the file
types that can be uploaded with a file upload
option. Values: `specific`
# --- truncated at 32 KB (155 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/bigcommerce/refs/heads/main/openapi/catalog-product-modifiers-openapi-original.yml