Checkout Page · Schema

UpdateProductRequest

CompanyPaymentsCheckoutStripeNo-CodeE-CommerceSubscriptionEvent Ticketing

Properties

Name Type Description
callToActionText stringnull Accept copy on the order bump card, e.g. "Yes! Add gift wrapping". Send null to clear. Order bump products only.
calloutIcon stringnull Icon leading the call out box. Send null to clear. Order bump products only.
calloutText stringnull Call out box under the description on the order bump card. HTML: links and inline emphasis are kept, anything else is removed. Send null to clear. Order bump products only.
defaultPriceId stringnull Id of the default price.
description stringnull
discounts arraynull Bulk discounts applied when a customer purchases a minimum quantity. Two modes are supported: **`checkout_quantity`** — discount applies based on the total checkout quantity, regardless of which varia
enableFileAccessForInactiveSubscriptions booleannull Allow customers with inactive subscriptions to keep accessing file downloads.
features arraynull Short list of what the customer gets, shown above the description on the order bump card. Replaces the whole list; send [] or null to clear. Order bump products only.
fileIds arraynull Files for the product. Available to the customer after purchase.
fixedTaxRateIds arraynull List of Tax Rate IDs applied to this product. When tax.mode is "fixed" and this is omitted on create, the seller default rate is applied.
generateLicenseKeys booleannull
hasUnlimitedStock booleannull
headingText stringnull Heading shown above the order bump card, e.g. "Special one time offer". Send null to clear. Order bump products only.
imageIds arraynull Images for the product. Provide a list of image file IDs. Use the `/files/upload` API to add images.
limitPayments objectnull Duplicate-payment prevention settings for this product. Applies to one-time payments only.
limitSubscriptions objectnull Configuration to limit the number of active subscriptions for this product. Used to cap subscriptions to a specific number.
price objectnull
pricePicker objectnull Price picker settings: the heading and description above the options, Show more / less, and tab labels, defaults and order.
prices array Prices configured for this product. When provided, takes precedence over the legacy price field.
shortDescription stringnull Plain-text one-liner shown under the title on the order bump card. Send null to clear. Order bump products only.
sku stringnull
stock numbernull
taxBehavior stringnull If Stripe Tax is enabled, determines the behaviour of Stripe Tax. Defaults to your Stripe Tax settings.
taxCode stringnull
title stringnull
variants arraynull
variantsRequired booleannull
View JSON Schema on GitHub

JSON Schema

checkoutpage-com-update-product-request-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/checkoutpage-com/json-schema/checkoutpage-com-update-product-request-schema.json",
  "title": "UpdateProductRequest",
  "x-generated": "2026-11-03",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/checkoutpage-com-openapi.yml#/components/schemas/UpdateProductRequest",
  "properties": {
    "callToActionText": {
      "description": "Accept copy on the order bump card, e.g. \"Yes! Add gift wrapping\". Send null to clear. Order bump products only.",
      "maxLength": 200,
      "type": [
        "string",
        "null"
      ]
    },
    "calloutIcon": {
      "description": "Icon leading the call out box. Send null to clear. Order bump products only.",
      "enum": [
        "star",
        "sparkles",
        "fire",
        "bolt",
        "rocket",
        "trophy",
        "check",
        "x-mark",
        "plus",
        "arrow-right",
        "check-badge",
        "check-circle",
        "shield-check",
        "thumbs-up",
        "heart",
        "smile",
        "light-bulb",
        "sun",
        "moon",
        "gift",
        "tag",
        "percent",
        "dollar",
        "banknotes",
        "credit-card",
        "shopping-bag",
        "shopping-cart",
        "truck",
        "clock",
        "calendar",
        "bell",
        "megaphone",
        "trending-up",
        "chart",
        "refresh",
        "lock",
        "key",
        "ticket",
        "users",
        "academic-cap",
        "book",
        "music",
        "video",
        "document",
        "download",
        "mobile",
        "camera",
        "paint-brush",
        "puzzle",
        "cube",
        "globe",
        "map-pin",
        "storefront",
        "tools",
        "beaker",
        "lifebuoy",
        "chat",
        "envelope",
        "phone",
        "cake",
        "scale",
        "eye",
        null
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "calloutText": {
      "description": "Call out box under the description on the order bump card. HTML: links and inline emphasis are kept, anything else is removed. Send null to clear. Order bump products only.",
      "maxLength": 2000,
      "type": [
        "string",
        "null"
      ]
    },
    "defaultPriceId": {
      "description": "Id of the default price.",
      "type": [
        "string",
        "null"
      ]
    },
    "description": {
      "type": [
        "string",
        "null"
      ]
    },
    "discounts": {
      "description": "Bulk discounts applied when a customer purchases a minimum quantity. Two modes are supported:\n\n**`checkout_quantity`** — discount applies based on the total checkout quantity, regardless of which variant options are selected.\n\n**`variant_option_quantity`** — discount applies only when specific variant options meet the quantity threshold. To use this mode you must link the discount to variant options using temporary `key` values: assign a `key` to each relevant option in `variants[].options[].key`, then reference those same keys in `variantOptionIds[].key` within the same request. These keys are resolved to MongoDB ObjectIds at save time and are not present in the response — so the linking must be established in the same request that defines (or redefines) the variants. You cannot attach a `variant_option_quantity` discount to an existing product's variant options without also re-supplying the `variants` array with keys in the same PATCH request.\n\n[Learn more](https://checkoutpage.com/docs/articles/bulk-discounts)",
      "items": {
        "properties": {
          "amountOff": {
            "description": "Fixed amount discount in cents. Cannot be used with `percentOff`.",
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "maxQuantity": {
            "description": "Maximum quantity for this discount tier. Leave empty for no upper limit.",
            "minimum": 1,
            "type": [
              "number",
              "null"
            ]
          },
          "minQuantity": {
            "description": "Minimum quantity required for this discount to apply.",
            "minimum": 1,
            "type": [
              "number",
              "null"
            ]
          },
          "percentOff": {
            "description": "Percentage discount to apply. Cannot be used with `amountOff`.",
            "maximum": 100,
            "minimum": 0,
            "type": [
              "number",
              "null"
            ]
          },
          "quantityCondition": {
            "description": "Whether the discount applies based on the checkout quantity or specific variant option quantities. Defaults to `checkout_quantity`.",
            "enum": [
              "checkout_quantity",
              "variant_option_quantity"
            ],
            "type": "string"
          },
          "variantOptionIds": {
            "description": "Variant options this discount applies to. Each entry must reference a variant option by the `key` you assigned to it in `variants[].options[].key` within the same request. Option keys are temporary caller-defined handles — they are resolved to MongoDB ObjectIds at save time and do not appear in the response. Only used when `quantityCondition` is `variant_option_quantity`.",
            "items": {
              "properties": {
                "key": {
                  "type": "string"
                }
              },
              "required": [
                "key"
              ],
              "type": "object"
            },
            "type": [
              "array",
              "null"
            ]
          }
        },
        "required": [
          "quantityCondition"
        ],
        "type": "object"
      },
      "type": [
        "array",
        "null"
      ]
    },
    "enableFileAccessForInactiveSubscriptions": {
      "description": "Allow customers with inactive subscriptions to keep accessing file downloads.",
      "type": [
        "boolean",
        "null"
      ]
    },
    "features": {
      "description": "Short list of what the customer gets, shown above the description on the order bump card. Replaces the whole list; send [] or null to clear. Order bump products only.",
      "items": {
        "properties": {
          "icon": {
            "description": "Icon leading the line. Unset, the line leads with a check; `none` draws no icon.",
            "enum": [
              "star",
              "sparkles",
              "fire",
              "bolt",
              "rocket",
              "trophy",
              "check",
              "x-mark",
              "plus",
              "arrow-right",
              "check-badge",
              "check-circle",
              "shield-check",
              "thumbs-up",
              "heart",
              "smile",
              "light-bulb",
              "sun",
              "moon",
              "gift",
              "tag",
              "percent",
              "dollar",
              "banknotes",
              "credit-card",
              "shopping-bag",
              "shopping-cart",
              "truck",
              "clock",
              "calendar",
              "bell",
              "megaphone",
              "trending-up",
              "chart",
              "refresh",
              "lock",
              "key",
              "ticket",
              "users",
              "academic-cap",
              "book",
              "music",
              "video",
              "document",
              "download",
              "mobile",
              "camera",
              "paint-brush",
              "puzzle",
              "cube",
              "globe",
              "map-pin",
              "storefront",
              "tools",
              "beaker",
              "lifebuoy",
              "chat",
              "envelope",
              "phone",
              "cake",
              "scale",
              "eye",
              "none",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "text": {
            "description": "One line of the list.",
            "maxLength": 200,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "text"
        ],
        "type": "object"
      },
      "maxItems": 10,
      "type": [
        "array",
        "null"
      ]
    },
    "fileIds": {
      "description": "Files for the product. Available to the customer after purchase.",
      "items": {
        "allOf": [
          {
            "$ref": "#/$defs/UniqueIdentifier"
          },
          {
            "description": "Unique identifier. Must be in BSON ObjectId format."
          }
        ]
      },
      "type": [
        "array",
        "null"
      ]
    },
    "fixedTaxRateIds": {
      "description": "List of Tax Rate IDs applied to this product. When tax.mode is \"fixed\" and this is omitted on create, the seller default rate is applied.",
      "items": {
        "allOf": [
          {
            "$ref": "#/$defs/UniqueIdentifier"
          },
          {
            "description": "Unique identifier. Must be in BSON ObjectId format."
          }
        ]
      },
      "maxItems": 1,
      "type": [
        "array",
        "null"
      ]
    },
    "generateLicenseKeys": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "hasUnlimitedStock": {
      "type": [
        "boolean",
        "null"
      ]
    },
    "headingText": {
      "description": "Heading shown above the order bump card, e.g. \"Special one time offer\". Send null to clear. Order bump products only.",
      "maxLength": 200,
      "type": [
        "string",
        "null"
      ]
    },
    "imageIds": {
      "description": "Images for the product. Provide a list of image file IDs. Use the `/files/upload` API to add images.",
      "items": {
        "allOf": [
          {
            "$ref": "#/$defs/UniqueIdentifier"
          },
          {
            "description": "Unique identifier. Must be in BSON ObjectId format."
          }
        ]
      },
      "type": [
        "array",
        "null"
      ]
    },
    "limitPayments": {
      "description": "Duplicate-payment prevention settings for this product. Applies to one-time payments only.",
      "properties": {
        "enabled": {
          "description": "Prevent a customer who has already paid for this product from paying again. One-time payments only. Defaults to `false`.",
          "type": [
            "boolean",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "limitSubscriptions": {
      "description": "Configuration to limit the number of active subscriptions for this product. Used to cap subscriptions to a specific number.",
      "properties": {
        "enabled": {
          "description": "Enable subscription limits. Defaults to `false`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "limitSubscriptionsStripe": {
          "description": "Stripe-specific subscription limit configuration.",
          "properties": {
            "enabled": {
              "description": "Enable Stripe-level subscription limits (checks active subscriptions in Stripe). Defaults to `false`.",
              "type": [
                "boolean",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "price": {
      "properties": {
        "amount": {
          "description": "Price in smallest currency unit (cents). Defaults to `0`.",
          "minimum": 0,
          "type": [
            "number",
            "null"
          ]
        },
        "badge": {
          "description": "Optional short label shown over the price card (e.g. \"Save $50\", \"Most popular\").",
          "type": [
            "string",
            "null"
          ]
        },
        "badgeIcon": {
          "description": "Optional icon shown before the badge text. `null` removes it.",
          "enum": [
            "star",
            "sparkles",
            "fire",
            "bolt",
            "rocket",
            "trophy",
            "check",
            "x-mark",
            "plus",
            "arrow-right",
            "check-badge",
            "check-circle",
            "shield-check",
            "thumbs-up",
            "heart",
            "smile",
            "light-bulb",
            "sun",
            "moon",
            "gift",
            "tag",
            "percent",
            "dollar",
            "banknotes",
            "credit-card",
            "shopping-bag",
            "shopping-cart",
            "truck",
            "clock",
            "calendar",
            "bell",
            "megaphone",
            "trending-up",
            "chart",
            "refresh",
            "lock",
            "key",
            "ticket",
            "users",
            "academic-cap",
            "book",
            "music",
            "video",
            "document",
            "download",
            "mobile",
            "camera",
            "paint-brush",
            "puzzle",
            "cube",
            "globe",
            "map-pin",
            "storefront",
            "tools",
            "beaker",
            "lifebuoy",
            "chat",
            "envelope",
            "phone",
            "cake",
            "scale",
            "eye",
            null
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "billingType": {
          "description": "Billing type. Derived when omitted: `recurring`/`paymentPlan` present → recurring, else one_time. Part of the pricing-type identity fixed at creation — cannot change on an existing price.",
          "enum": [
            "one_time",
            "recurring",
            null
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "currency": {
          "description": "Currency code (lowercase). Defaults to `usd`.",
          "maxLength": 3,
          "minLength": 3,
          "type": [
            "string",
            "null"
          ]
        },
        "discountedFromPrice": {
          "description": "The original price of the product in the smallest currency unit (cents).",
          "minimum": 0,
          "type": [
            "number",
            "null"
          ]
        },
        "enabled": {
          "type": [
            "boolean",
            "null"
          ]
        },
        "hidden": {
          "description": "Hide this price. Hidden prices can still be shown using query parameters.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "id": {
          "description": "Existing price id (omit when creating a new price).",
          "type": [
            "string",
            "null"
          ]
        },
        "label": {
          "type": [
            "string",
            "null"
          ]
        },
        "order": {
          "type": [
            "number",
            "null"
          ]
        },
        "payWhatYouWant": {
          "description": "If enabled `amount` field becomes the minimum price and customers can choose to pay what they want. If `amount` is empty or `0` customer can purchase the product for free. Pay What You Want applies to one-time prices and subscriptions, but not payment plans.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "paymentPlan": {
          "description": "The payment plan components of a price such as `interval` and `intervalCount`",
          "properties": {
            "billingCycleAnchorConfig": {
              "properties": {
                "dayOfMonth": {
                  "description": "The first billing period will be prorated based on the remaining days in the month. Defaults to `1`.",
                  "maximum": 31,
                  "minimum": 1,
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "enabled": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "month": {
                  "maximum": 12,
                  "minimum": 1,
                  "type": "number"
                }
              },
              "type": "object"
            },
            "interval": {
              "description": "Billing interval for subscriptions.",
              "enum": [
                "day",
                "week",
                "month",
                "year",
                null
              ],
              "type": [
                "string",
                "null"
              ]
            },
            "intervalCount": {
              "description": "Number of intervals between billings.",
              "minimum": 1,
              "type": [
                "number",
                "null"
              ]
            },
            "planIterations": {
              "description": "The number of times a subscription renews. After set number of renewals the payment plan is complete.",
              "minimum": 1,
              "type": "number"
            },
            "startDate": {
              "description": "The date on which the subscription begins.",
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "trialPeriodDays": {
              "description": "Trial period in days for subscriptions.",
              "minimum": 0,
              "type": [
                "number",
                "null"
              ]
            }
          },
          "required": [
            "planIterations"
          ],
          "type": [
            "object",
            "null"
          ]
        },
        "pricingType": {
          "deprecated": true,
          "description": "Deprecated — superseded by `prices[]`. Accepted and ignored.",
          "enum": [
            "single",
            "multiple",
            null
          ],
          "type": [
            "string",
            "null"
          ]
        },
        "pwywSuggestedPrice": {
          "minimum": 0,
          "type": [
            "number",
            "null"
          ]
        },
        "recurring": {
          "description": "The recurring components of a price such as `interval` and `intervalCount`",
          "properties": {
            "billingCycleAnchorConfig": {
              "properties": {
                "dayOfMonth": {
                  "description": "The first billing period will be prorated based on the remaining days in the month. Defaults to `1`.",
                  "maximum": 31,
                  "minimum": 1,
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "enabled": {
                  "type": [
                    "boolean",
                    "null"
                  ]
                },
                "month": {
                  "maximum": 12,
                  "minimum": 1,
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "type": [
                "object",
                "null"
              ]
            },
            "interval": {
              "description": "Billing interval for subscriptions.",
              "enum": [
                "day",
                "week",
                "month",
                "year",
                null
              ],
              "type": [
                "string",
                "null"
              ]
            },
            "intervalCount": {
              "description": "Number of intervals between billings.",
              "minimum": 1,
              "type": [
                "number",
                "null"
              ]
            },
            "startDate": {
              "description": "The date on which the subscription begins.",
              "format": "date-time",
              "type": [
                "string",
                "null"
              ]
            },
            "trialPeriodDays": {
              "description": "Trial period in days for subscriptions.",
              "minimum": 0,
              "type": [
                "number",
                "null"
              ]
            }
          },
          "type": [
            "object",
            "null"
          ]
        },
        "reference": {
          "description": "Merchant-facing internal id (SKU-like). Derived from the price data when omitted, e.g. price_one_time_fixed_5000. A price resent by id keeps its stored reference.",
          "type": [
            "string",
            "null"
          ]
        },
        "setupFee": {
          "description": "One-time setup fee in cents.",
          "minimum": 0,
          "type": [
            "number",
            "null"
          ]
        },
        "setupFeeMultipliesWithQuantity": {
          "description": "Whether or not the setup fee is multipled by the selected quantity. Applies to `one-time` and `pwyw` only. Defaults to `false`.",
          "type": [
            "boolean",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "pricePicker": {
      "description": "Price picker settings: the heading and description above the options, Show more / less, and tab labels, defaults and order.",
      "properties": {
        "description": {
          "description": "Text shown under the heading, above the price options. Line breaks are kept.",
          "type": [
            "string",
            "null"
          ]
        },
        "priceDisplayDefaults": {
          "additionalProperties": {
            "type": "string"
          },
          "description": "Per-axis default tab selection. Keyed by grouping axis. E.g. `{ interval: \"Monthly\" }`.",
          "type": [
            "object",
            "null"
          ]
        },
        "priceDisplayLabels": {
          "additionalProperties": {
            "additionalProperties": {
              "type": "string"
            },
            "type": "object"
          },
          "description": "Per-axis label overrides for price tabs. Keyed by grouping axis (`billing` or `interval`), then by derived group name. E.g. `{ interval: { \"One-time\": \"Lifetime\" } }`.",
          "type": [
            "object",
            "null"
          ]
        },
        "priceDisplayTabOrder": {
          "additionalProperties": {
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "description": "Per-axis tab display order. Keyed by grouping axis, value is ordered array of group names. E.g. `{ interval: [\"Monthly\", \"Yearly\"] }`.",
          "type": [
            "object",
            "null"
          ]
        },
        "shortenDescription": {
          "description": "Cut long price descriptions to their first lines behind a Show more link. Defaults to `true`.",
          "type": [
            "boolean",
            "null"
          ]
        },
        "title": {
          "description": "Heading shown above the price options.",
          "type": [
            "string",
            "null"
          ]
        }
      },
      "type": [
        "object",
        "null"
      ]
    },
    "prices": {
      "description": "Prices configured for this product. When provided, takes precedence over the legacy price field.",
      "items": {
        "$ref": "#/$defs/PriceInput"
      },
      "type": "array"
    },
    "shortDescription": {
      "description": "Plain-text one-liner shown under the title on the order bump card. Send null to clear. Order bump products only.",
      "maxLength": 500,
      "type": [
        "string",
        "null"
      ]
    },
    "sku": {
      "maxLength": 200,
      "type": [
        "string",
        "null"
      ]
    },
    "stock": {
      "minimum": 0,
      "type": [
        "number",
        "null"
      ]
    },
    "taxBehavior": {
      "description": "If Stripe Tax is enabled, determines the behaviour of Stripe Tax. Defaults to your Stripe Tax settings.",
      "enum": [
        "inclusive",
        "exclusive",
        "automatic",
        "",
        null
      ],
      "type": [
        "string",
        "null"
      ]
    },
    "taxCode": {
      "pattern": "^(txcd_[a-zA-Z0-9]+)?$",
      "type": [
        "string",
        "null"
      ]
    },
    "title": {
      "maxLength": 200,
      "type": [
        "string",
        "null"
      ]
    },
    "variants": {
      "items": {
        "properties": {
          "hidden": {
            "description": "Whether this variant is hidden. Hidden variants can be shown or filled with data by query paramers. [Learn more](https://checkoutpage.com/docs/articles/preselect-checkout-variants). Defaults to `false`.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "id": {
            "allOf": [
              {
                "$ref": "#/$defs/UniqueIdentifier"
              },
              {
                "description": "Unique identifier. Must be in BSON ObjectId format."
              }
            ]
          },
          "increasesWithQuantity": {
            "description": "Whether or not the variant quantity matches the checkout quantity. Defaults to `false`.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "key": {
            "description": "Optional caller-defined key for this variant. Not persisted to the database. Required when other variants reference this variant in `showHideLogic.element.elementId`.",
            "type": [
              "string",
              "null"
            ]
          },
          "layout": {
            "description": "Layout configuration for this variant.",
            "properties": {
              "collapseVariantOptions": {
                "description": "If enabled, variant options are collapsed by default. Defaults to `false`.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "imageSize": {
                "description": "Size of variant option images. Defaults to `small`.",
                "enum": [
                  "small",
                  "medium",
                  "large",
                  "",
                  null
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "showPwywPlaceholder": {
                "description": "Show placeholder text for Pay What You Want inputs. Defaults to `true`.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "showVariantName": {
                "description": "Show the variant name. Defaults to `true`.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "showVariantOptionNames": {
                "description": "Show variant option names. Defaults to `true`.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "showVariantOptionPriceSign": {
                "description": "Show price sign (+ or -) for variant option prices. Defaults to `false`.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "showVariantOptionPrices": {
                "description": "Show variant option prices. Defaults to `true`.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "spacing": {
                "description": "Spacing between variant options. Defaults to `comfortable`.",
                "enum": [
                  "comfortable",
                  "compact",
                  "",
                  null
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "textAlign": {
                "description": "Text alignment for variant options. Defaults to `left`.",
                "enum": [
                  "left",
                  "center",
                  "stack",
                  "",
                  null
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "variantOptionColumns": {
                "description": "Number of columns for grid layout. Defaults to `2`.",
                "maximum": 10,
                "minimum": 1,
                "type": [
                  "number",
                  "null"
                ]
              },
              "variantOptionLayout": {
                "description": "Layout style for variant options. Defaults to `list`.",
                "enum": [
                  "list",
                  "grid",
                  null
                ],
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": [
              "object",
              "null"
            ]
          },
          "manageVariantOptionStock": {
            "description": "If enabled stock is managed by the variant options. Defaults to `false`.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "name": {
            "description": "Name of the variant.",
            "type": "string"
          },
          "options": {
            "items": {
              "properties": {
                "additionalChargeAmount": {
                  "description": "The additional charge for selecting this variant option in cents.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "description": {
                  "description": "Description of the variant option. Supports HTML or plain text.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "discountedFromPrice": {
                  "description": "The original price of this variant option in cents.",
                  "minimum": 0,
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "fileIds": {
                  "description": "Files specific to this variant option. Available to the customer after purchase.",
                  "items": {
                    "allOf": [
                      {
                        "$ref": "#/$defs/UniqueIdentifier"
                      },
                      {
                        "description": "Unique identifier. Must be in BSON ObjectId format."
                      }
                    ]
                  },
                  "type": [
                    "array",
                    "null"
                  ]
                },
                "id": {
                  "allOf": [
                    {
                      "$ref": "#/$defs/UniqueIdentifier"
                    },
                    {
                      "description": "Unique identifier. Must be in BSON ObjectId format."
                    }
                  ]
                },
                "imageId": {
                  "allOf": [
                    {
                      "$ref": "#/$defs/UniqueIdentifier"
                    },
                    {
                      "description": "Unique identifier. Must be in BSON ObjectId format.",
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  ]
          

# --- truncated at 32 KB (49 KB total) ---
# Full source: https://artifacts.apis.io/checkoutpage-com/json-schema/checkoutpage-com-update-product-request-schema.json

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/checkoutpage-com-update-product-request"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

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.