{ "$schema": "https://json-schema.org/draft/2020-12/schema", "$id": "https://raw.githubusercontent.com/api-evangelist/bigcommerce/main/json-schema/bigcommerce-product-modifier-full-schema.json", "title": "productModifier_Full", "description": "Product Modifier", "x-generated": "2026-10-12", "x-method": "derived", "x-generator": "derive-json-schema.py", "x-source": "openapi/bigcommerce-product-modifiers-api-openapi.yml#/components/schemas/productModifier_Full", "allOf": [ { "$ref": "#/$defs/productModifier_Base" }, { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique numeric ID of the modifier; increments sequentially.\n" }, "product_id": { "type": "integer", "description": "The unique numeric ID of the product to which the option belongs.\n" }, "name": { "type": "string", "description": "The unique option name. Auto-generated from the display name, a timestamp, and the product ID.\n" }, "option_values": { "type": "array", "items": { "$ref": "#/$defs/productModifierOptionValue_Full" } } } } ], "x-internal": false, "$defs": { "adjuster_Full": { "title": "adjuster_Full", "type": "object", "properties": { "adjuster": { "type": [ "string", "null" ], "description": "The type of adjuster for either the price or the weight of the variant, when the modifier value is selected on the storefront.\n", "enum": [ "relative", "percentage" ] }, "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.\n" } }, "description": "Adjuster for Complex Rules.", "x-internal": false }, "adjusters_Full": { "title": "adjusters_Full", "type": "object", "properties": { "price": { "$ref": "#/$defs/adjuster_Full" }, "weight": { "$ref": "#/$defs/adjuster_Full" }, "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.\n" }, "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.\n" }, "message": { "type": "string", "description": "The message displayed on the storefront when the purchasing disabled status is `true`.\n" } } } }, "x-internal": false }, "config_Full": { "title": "config_Full", "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.\n" }, "checked_by_default": { "type": "boolean", "description": "(checkbox) Flag for setting the checkbox to be checked by default.\n" }, "checkbox_label": { "type": "string", "description": "(checkbox) Label displayed for the checkbox option.\n" }, "date_limited": { "type": "boolean", "description": "(date) Flag to limit the dates allowed to be entered on a date option.\n" }, "date_limit_mode": { "type": "string", "description": "(date) The type of limit that is allowed to be entered on a date option.\n", "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.\n", "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.\n", "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` - restricts uploads to particular file types; `all` - allows all file types.\n", "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:\n `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`).\n `other` - Allows file types defined in the `file_types_other` array. \n", "items": { "type": "string" } }, "file_types_other": { "type": "array", "description": "(file) A list of other file types allowed with the file upload option.\n", "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.\n" }, "text_characters_limited": { "type": "boolean", "description": "(text, multi_line_text) Flag to validate the length of a text or multi-line text input.\n" }, "text_min_length": { "type": "integer", "description": "(text, multi_line_text) The minimum length allowed for a text or multi-line text option.\n" }, "text_max_length": { "type": "integer", "description": "(text, multi_line_text) The maximum length allowed for a text or multi line text option.\n" }, "text_lines_limited": { "type": "boolean", "description": "(multi_line_text) Flag to validate the maximum number of lines allowed on a multi-line text input.\n" }, "text_max_lines": { "type": "integer", "description": "(multi_line_text) The maximum number of lines allowed on a multi-line text input.\n" }, "number_limited": { "type": "boolean", "description": "(numbers_only_text) Flag to limit the value of a number option.\n" }, "number_limit_mode": { "type": "string", "description": "(numbers_only_text) The type of limit on values entered for a number option.\n", "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.\n" }, "number_highest_value": { "type": "number", "description": "(numbers_only_text) The highest allowed value for a number option if `number_limited` is true.\n" }, "number_integers_only": { "type": "boolean", "description": "(numbers_only_text) Flag to limit the input on a number option to whole numbers only.\n" }, "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.\n" }, "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.\n" }, "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.\n", "enum": [ "none", "weight", "package" ] } }, "description": "The values for option config can vary based on the Modifier created.", "x-internal": false }, "productModifierOptionValue_Base": { "title": "productModifierOptionValue_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.\n" }, "label": { "type": "string", "description": "The text display identifying the value on the storefront. Required in a /POST.\n", "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.\n", "x-required": [ "post" ] }, "value_data": { "type": [ "object", "null" ], "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. If no data is available, returns `null`.\n" }, "adjusters": { "$ref": "#/$defs/adjusters_Full" } }, "description": "Common Product Modifer `option_value` properties.", "x-internal": false }, "productModifierOptionValue_Full": { "title": "productModifierOptionValue_Full", "description": "Product Modifer `option_value`.", "allOf": [ { "$ref": "#/$defs/productModifierOptionValue_Base" }, { "type": "object", "properties": { "id": { "type": "integer", "description": "The unique numeric ID of the value; increments sequentially.\n" }, "option_id": { "type": "integer" } } } ], "x-internal": false }, "productModifier_Base": { "title": "productModifier_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.\n", "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.\n", "x-required": [ "post" ] }, "sort_order": { "type": "integer", "description": "The order the modifiers display on the product detail page." }, "config": { "$ref": "#/$defs/config_Full" }, "display_name": { "type": "string", "description": "The name of the option shown on the storefront." } }, "description": "Common Modifier properties.", "x-internal": false } } }