BigCommerce · Schema

productModifier_Full

Product Modifier

E-CommerceRetailCatalogOrderCheckoutPaymentsSoftware-as-a-Service
View JSON Schema on GitHub

JSON Schema

bigcommerce-product-modifier-full-schema.json Raw ↑
{
  "$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
    }
  }
}

Work with this as data

Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for schemas

4 MCP tools reach this
  • find_json_schemasBrowse and filter every JSON Schema in the catalog.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/bigcommerce-product-modifier-full"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.