changedInput schema / properties / variants / anyOf
Previous value: -[
- {
- "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": {
- "description": "Existing variant id. Include it to keep (and edit) an existing variant; omit it to create a new one.",
- "pattern": "^[0-9a-fA-F]{24}$",
- "type": "string"
- },
- "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`. Bulk discounts with `variant_option_quantity` use option-level keys from `variants[].options[].key`.",
- "example": "select-package-tier",
- "type": [
- "string",
- "null"
- ]
- },
- "layout": {
- "anyOf": [
- {
- "properties": {
- "collapseVariantOptions": {
- "description": "If enabled, variant options are collapsed by default. Defaults to `false`.",
- "example": false,
- "type": [
- "boolean",
- "null"
- ]
- },
- "imageSize": {
- "anyOf": [
- {
- "enum": [
- "small",
- "medium",
- "large",
- ""
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Size of variant option images. Defaults to `small`.",
- "example": "small"
- },
- "showPwywPlaceholder": {
- "description": "Show placeholder text for Pay What You Want inputs. Defaults to `true`.",
- "example": true,
- "type": [
- "boolean",
- "null"
- ]
- },
- "showVariantName": {
- "description": "Show the variant name. Defaults to `true`.",
- "example": true,
- "type": [
- "boolean",
- "null"
- ]
- },
- "showVariantOptionNames": {
- "description": "Show variant option names. Defaults to `true`.",
- "example": true,
- "type": [
- "boolean",
- "null"
- ]
- },
- "showVariantOptionPriceSign": {
- "description": "Show price sign (+ or -) for variant option prices. Defaults to `false`.",
- "example": true,
- "type": [
- "boolean",
- "null"
- ]
- },
- "showVariantOptionPrices": {
- "description": "Show variant option prices. Defaults to `true`.",
- "example": true,
- "type": [
- "boolean",
- "null"
- ]
- },
- "spacing": {
- "anyOf": [
- {
- "enum": [
- "comfortable",
- "compact",
- ""
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Spacing between variant options. Defaults to `comfortable`.",
- "example": "comfortable"
- },
- "textAlign": {
- "anyOf": [
- {
- "enum": [
- "left",
- "center",
- "stack",
- ""
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Text alignment for variant options. Defaults to `left`.",
- "example": "left"
- },
- "variantOptionColumns": {
- "anyOf": [
- {
- "maximum": 10,
- "minimum": 1,
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "Number of columns for grid layout. Defaults to `2`.",
- "example": 2
- },
- "variantOptionLayout": {
- "anyOf": [
- {
- "enum": [
- "list",
- "grid"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Layout style for variant options. Defaults to `list`.",
- "example": "list"
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "Layout configuration for this variant."
- },
- "manageVariantOptionStock": {
- "description": "If enabled stock is managed by the variant options. Defaults to `false`.",
- "type": [
- "boolean",
- "null"
- ]
- },
- "name": {
- "description": "Name of the variant.",
- "example": "Plan Type",
- "type": "string"
- },
- "options": {
- "description": "Options for this variant. At least one is required.",
- "items": {
- "properties": {
- "additionalChargeAmount": {
- "description": "The additional charge for selecting this variant option in cents.",
- "example": 1000,
- "type": [
- "number",
- "null"
- ]
- },
- "description": {
- "description": "Description of the variant option. Supports HTML or plain text.",
- "type": [
- "string",
- "null"
- ]
- },
- "discountedFromPrice": {
- "anyOf": [
- {
- "minimum": 0,
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "The original price of this variant option in cents.",
- "example": 1500
- },
- "fileIds": {
- "anyOf": [
- {
- "items": {
- "pattern": "^[0-9a-fA-F]{24}$",
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ],
- "description": "Files specific to this variant option. Available to the customer after purchase."
- },
- "id": {
- "description": "Existing option id. Include it to keep (and edit) an existing option; omit it to create a new one.",
- "pattern": "^[0-9a-fA-F]{24}$",
- "type": "string"
- },
- "imageId": {
- "anyOf": [
- {
- "pattern": "^[0-9a-fA-F]{24}$",
- "type": "string"
- },
- {
- "type": "null"
- }
- ]
- },
- "key": {
- "description": "Optional caller-defined key for this option. Not persisted to the database. Required when `preselect.optionId` on the same variant, `showHideLogic.value` on another variant, or a `discounts[].variantOptionIds[].key` entry needs to reference this option in the same request.",
- "example": "pro-option",
- "type": [
- "string",
- "null"
- ]
- },
- "name": {
- "description": "Name of the variant option.",
- "example": "Basic",
- "type": "string"
- },
- "payWhatYouWant": {
- "description": "If enabled, customers can choose their own price for this variant option. The minimum price is based on the additionalChargeAmount. This is only supported for `one_time` options. Defaults to `false`.",
- "example": false,
- "type": [
- "boolean",
- "null"
- ]
- },
- "pwywSuggestedPrice": {
- "anyOf": [
- {
- "minimum": 0,
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "Suggested price for Pay What You Want options in cents. This is a cosmetic field used to display a suggested amount to the customer. Defaults to `0`.",
- "example": 2500
- },
- "sku": {
- "description": "SKU for this option.",
- "type": [
- "string",
- "null"
- ]
- },
- "status": {
- "anyOf": [
- {
- "description": "Status of a product variant, indicating whether it is enabled, disabled, or deleted.",
- "enum": [
- "enabled",
- "disabled",
- "deleted"
- ],
- "example": "enabled",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Status of the variant option. Defaults to `enabled`.",
- "example": "enabled"
- },
- "stock": {
- "description": "Stock quantity for this option.",
- "example": 10,
- "type": [
- "number",
- "null"
- ]
- },
- "type": {
- "anyOf": [
- {
- "enum": [
- "one_time",
- "recurring"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Type of variant option - one-time purchase or recurring subscription. For Pay What You Want options, `type` must be `one_time` and set `payWhatYouWant: true`.",
- "example": "one_time"
- }
- },
- "required": [
- "name"
- ],
- "type": "object"
- },
- "minItems": 1,
- "type": "array"
- },
- "order": {
- "description": "Display order of the variant. Defaults to `0`.",
- "example": 0,
- "type": [
- "number",
- "null"
- ]
- },
- "preselect": {
- "anyOf": [
- {
- "properties": {
- "enabled": {
- "description": "Enable preselecting a variant option. Defaults to `false`.",
- "type": [
- "boolean",
- "null"
- ]
- },
- "optionId": {
- "description": "The `key` of the variant option to preselect. Must match the `key` of an option on this variant.",
- "example": "pro-option",
- "type": [
- "string",
- "null"
- ]
- },
- "quantity": {
- "description": "Quantity to preselect for quantity selection type variants. Defaults to `1` for `single` and `multiple` selection types.",
- "example": 2,
- "type": [
- "number",
- "null"
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "Preselect configuration for this variant.",
- "example": {
- "enabled": true,
- "optionId": "pro-option",
- "quantity": 1
- }
- },
- "priceIds": {
- "anyOf": [
- {
- "items": {
- "pattern": "^[0-9a-fA-F]{24}$",
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ],
- "description": "Price IDs this variant group is scoped to. Required when the product has multiple prices configured via `prices[]`. Customers will only see this variant group when the scoped price is selected.",
- "example": [
- "507f1f77bcf86cd799439011"
- ]
- },
- "reference": {
- "anyOf": [
- {
- "maxLength": 36,
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "External reference ID. Generated from the variant name when omitted.",
- "example": "fd3136f8-da1f-4a4c-b381-32a097b60c38"
- },
- "required": {
- "description": "Whether the customer must select at least one option in the variant.",
- "example": true,
- "type": [
- "boolean",
- "null"
- ]
- },
- "selectionType": {
- "anyOf": [
- {
- "description": "Selection type for product variants, indicating how customers can select variant options in a variant. Options include single (only one option can be selected), multiple (multiple options can be selected), or quantity (customer can specify quantity for each option).",
- "enum": [
- "single",
- "multiple",
- "quantity"
- ],
- "example": "single",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Type of selection. If `single` the customer can choose one option in the variant group. If `multiple` the customer can choose multiple options in the variant group. If `quantity` the customer can select multiple options and set a quantity of each variant in the variant group. Defaults to `single`",
- "example": "single"
- },
- "showHideLogic": {
- "anyOf": [
- {
- "properties": {
- "comparison": {
- "anyOf": [
- {
- "enum": [
- "is",
- "is_not",
- "is_empty",
- "is_not_empty",
- "contains"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Comparison operator for the condition. Defaults to `is`. Use `value` with `is`, `is_not`, and `contains`. Omit `value` for `is_empty` and `is_not_empty`.",
- "example": "is"
- },
- "element": {
- "anyOf": [
- {
- "properties": {
- "elementId": {
- "description": "The `key` of the source variant used in the condition. Must match the `key` of another variant in the same batch.",
- "example": "select-package-tier",
- "type": [
- "string",
- "null"
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "Element (variant) to compare against."
- },
- "enabled": {
- "description": "Enable conditional show/hide logic. Defaults to `false`.",
- "example": true,
- "type": [
- "boolean",
- "null"
- ]
- },
- "value": {
- "description": "The `key` of the variant option being referenced. Must match the `key` of an option on the source variant identified by `showHideLogic.element.elementId`. Use this with `is`, `is_not`, and `contains`. Omit this field for `is_empty` and `is_not_empty`.",
- "example": "pro-option",
- "type": [
- "string",
- "null"
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "Conditional logic to show or hide this variant based on other form elements."
- },
- "status": {
- "anyOf": [
- {
- "description": "Status of a product variant, indicating whether it is enabled, disabled, or deleted.",
- "enum": [
- "enabled",
- "disabled",
- "deleted"
- ],
- "example": "enabled",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Status of the variant. Defaults to `enabled`",
- "example": "enabled"
- },
- "useVariantOptionSkus": {
- "description": "If enabled, use SKUs from variant options instead of the product SKU. Defaults to `false`.",
- "type": [
- "boolean",
- "null"
- ]
- }
- },
- "required": [
- "name",
- "options"
- ],
- "type": "object"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "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": {
+ "description": "Existing variant id. Include it to keep (and edit) an existing variant; omit it to create a new one.",
+ "pattern": "^[0-9a-fA-F]{24}$",
+ "type": "string"
+ },
+ "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`. Bulk discounts with `variant_option_quantity` use option-level keys from `variants[].options[].key`.",
+ "example": "select-package-tier",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "layout": {
+ "anyOf": [
+ {
+ "properties": {
+ "collapseVariantOptions": {
+ "description": "If enabled, variant options are collapsed by default. Defaults to `false`.",
+ "example": false,
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "imageSize": {
+ "anyOf": [
+ {
+ "enum": [
+ "small",
+ "medium",
+ "large",
+ ""
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Size of variant option images. Defaults to `small`.",
+ "example": "small"
+ },
+ "showPwywPlaceholder": {
+ "description": "Show placeholder text for Pay What You Want inputs. Defaults to `true`.",
+ "example": true,
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "showVariantName": {
+ "description": "Show the variant name. Defaults to `true`.",
+ "example": true,
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "showVariantOptionNames": {
+ "description": "Show variant option names. Defaults to `true`.",
+ "example": true,
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "showVariantOptionPriceSign": {
+ "description": "Show price sign (+ or -) for variant option prices. Defaults to `false`.",
+ "example": true,
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "showVariantOptionPrices": {
+ "description": "Show variant option prices. Defaults to `true`.",
+ "example": true,
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "spacing": {
+ "anyOf": [
+ {
+ "enum": [
+ "comfortable",
+ "compact",
+ ""
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Spacing between variant options. Defaults to `comfortable`.",
+ "example": "comfortable"
+ },
+ "textAlign": {
+ "anyOf": [
+ {
+ "enum": [
+ "left",
+ "center",
+ "stack",
+ ""
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Text alignment for variant options. Defaults to `left`.",
+ "example": "left"
+ },
+ "variantOptionColumns": {
+ "anyOf": [
+ {
+ "maximum": 10,
+ "minimum": 1,
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Number of columns for grid layout. Defaults to `2`.",
+ "example": 2
+ },
+ "variantOptionLayout": {
+ "anyOf": [
+ {
+ "enum": [
+ "list",
+ "grid"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Layout style for variant options. Defaults to `list`.",
+ "example": "list"
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Layout configuration for this variant."
+ },
+ "manageVariantOptionStock": {
+ "description": "If enabled stock is managed by the variant options. Defaults to `false`.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "name": {
+ "description": "Name of the variant.",
+ "example": "Plan Type",
+ "type": "string"
+ },
+ "options": {
+ "description": "Options for this variant. At least one is required.",
+ "items": {
+ "properties": {
+ "additionalChargeAmount": {
+ "description": "The additional charge for selecting this variant option in cents.",
+ "example": 1000,
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "description": {
+ "description": "Description of the variant option. Supports HTML or plain text.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "discountedFromPrice": {
+ "anyOf": [
+ {
+ "minimum": 0,
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The original price of this variant option in cents.",
+ "example": 1500
+ },
+ "fileIds": {
+ "anyOf": [
+ {
+ "items": {
+ "pattern": "^[0-9a-fA-F]{24}$",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Files specific to this variant option. Available to the customer after purchase."
+ },
+ "id": {
+ "description": "Existing option id. Include it to keep (and edit) an existing option; omit it to create a new one.",
+ "pattern": "^[0-9a-fA-F]{24}$",
+ "type": "string"
+ },
+ "imageId": {
+ "anyOf": [
+ {
+ "pattern": "^[0-9a-fA-F]{24}$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "key": {
+ "description": "Optional caller-defined key for this option. Not persisted to the database. Required when `preselect.optionId` on the same variant, `showHideLogic.value` on another variant, or a `discounts[].variantOptionIds[].key` entry needs to reference this option in the same request.",
+ "example": "pro-option",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "name": {
+ "description": "Name of the variant option.",
+ "example": "Basic",
+ "type": "string"
+ },
+ "payWhatYouWant": {
+ "description": "If enabled, customers can choose their own price for this variant option. The minimum price is based on the additionalChargeAmount. This is only supported for `one_time` options. Defaults to `false`.",
+ "example": false,
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "pwywSuggestedPrice": {
+ "anyOf": [
+ {
+ "minimum": 0,
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Suggested price for Pay What You Want options in cents. This is a cosmetic field used to display a suggested amount to the customer. Defaults to `0`.",
+ "example": 2500
+ },
+ "sku": {
+ "description": "SKU for this option.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "status": {
+ "anyOf": [
+ {
+ "description": "Status of a product variant, indicating whether it is enabled, disabled, or deleted.",
+ "enum": [
+ "enabled",
+ "disabled",
+ "deleted"
+ ],
+ "example": "enabled",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Status of the variant option. Defaults to `enabled`.",
+ "example": "enabled"
+ },
+ "stock": {
+ "description": "Stock quantity for this option.",
+ "example": 10,
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "type": {
+ "anyOf": [
+ {
+ "enum": [
+ "one_time",
+ "recurring"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Type of variant option - one-time purchase or recurring subscription. For Pay What You Want options, `type` must be `one_time` and set `payWhatYouWant: true`.",
+ "example": "one_time"
+ }
+ },
+ "required": [
+ "name"
+ ],
+ "type": "object"
+ },
+ "minItems": 1,
+ "type": "array"
+ },
+ "order": {
+ "description": "Display order of the variant. Defaults to `0`.",
+ "example": 0,
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "preselect": {
+ "anyOf": [
+ {
+ "properties": {
+ "enabled": {
+ "description": "Enable preselecting a variant option. Defaults to `false`.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "optionId": {
+ "description": "The `key` of the variant option to preselect. Must match the `key` of an option on this variant.",
+ "example": "pro-option",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "quantity": {
+ "description": "Quantity to preselect for quantity selection type variants. Defaults to `1` for `single` and `multiple` selection types.",
+ "example": 2,
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Preselect configuration for this variant.",
+ "example": {
+ "enabled": true,
+ "optionId": "pro-option",
+ "quantity": 1
+ }
+ },
+ "priceIds": {
+ "anyOf": [
+ {
+ "items": {
+ "pattern": "^[0-9a-fA-F]{24}$",
+ "type": "string"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Price IDs this variant group is scoped to. Required when the product has multiple prices configured via `prices[]`. Customers will only see this variant group when the scoped price is selected.",
+ "example": [
+ "507f1f77bcf86cd799439011"
+ ]
+ },
+ "reference": {
+ "anyOf": [
+ {
+ "maxLength": 36,
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Stable ID that exports and integrations use for this variant. Generated from the variant name when omitted, and not updated when the name changes. Changing it breaks integrations that match on the old one, so only send it when the seller asks.",
+ "example": "fd3136f8-da1f-4a4c-b381-32a097b60c38"
+ },
+ "required": {
+ "description": "Whether the customer must select at least one option in the variant.",
+ "example": true,
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "selectionType": {
+ "anyOf": [
+ {
+ "description": "Selection type for product variants, indicating how customers can select variant options in a variant. Options include single (only one option can be selected), multiple (multiple options can be selected), or quantity (customer can specify quantity for each option).",
+ "enum": [
+ "single",
+ "multiple",
+ "quantity"
+ ],
+ "example": "single",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Type of selection. If `single` the customer can choose one option in the variant group. If `multiple` the customer can choose multiple options in the variant group. If `quantity` the customer can select multiple options and set a quantity of each variant in the variant group. Defaults to `single`",
+ "example": "single"
+ },
+ "showHideLogic": {
+ "anyOf": [
+ {
+ "properties": {
+ "comparison": {
+ "anyOf": [
+ {
+ "enum": [
+ "is",
+ "is_not",
+ "is_empty",
+ "is_not_empty",
+ "contains"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Comparison operator for the condition. Defaults to `is`. Use `value` with `is`, `is_not`, and `contains`. Omit `value` for `is_empty` and `is_not_empty`.",
+ "example": "is"
+ },
+ "element": {
+ "anyOf": [
+ {
+ "properties": {
+ "elementId": {
+ "description": "The `key` of the source variant used in the condition. Must match the `key` of another variant in the same batch.",
+ "example": "select-package-tier",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Element (variant) to compare against."
+ },
+ "enabled": {
+ "description": "Enable conditional show/hide logic. Defaults to `false`.",
+ "example": true,
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "value": {
+ "description": "The `key` of the variant option being referenced. Must match the `key` of an option on the source variant identified by `showHideLogic.element.elementId`. Use this with `is`, `is_not`, and `contains`. Omit this field for `is_empty` and `is_not_empty`.",
+ "example": "pro-option",
+ "type": [
+ "string",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Conditional logic to show or hide this variant based on other form elements."
+ },
+ "status": {
+ "anyOf": [
+ {
+ "description": "Status of a product variant, indicating whether it is enabled, disabled, or deleted.",
+ "enum": [
+ "enabled",
+ "disabled",
+ "deleted"
+ ],
+ "example": "enabled",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Status of the variant. Defaults to `enabled`",
+ "example": "enabled"
+ },
+ "useVariantOptionSkus": {
+ "description": "If enabled, use SKUs from variant options instead of the product SKU. Defaults to `false`.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "name",
+ "options"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+]
changedOutput schema / properties / data / properties / prices / anyOf
Previous value: -[
- {
- "items": {
- "additionalProperties": false,
- "description": "A single price entry on a multi-price product.",
- "properties": {
- "amount": {
- "description": "Price in smallest currency unit (cents).",
- "example": 4900,
- "type": "number"
- },
- "badge": {
- "description": "Optional short label shown over the price card.",
- "type": [
- "string",
- "null"
- ]
- },
- "badgeIcon": {
- "anyOf": [
- {
- "description": "Icon shown before the badge text.",
- "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"
- ],
- "example": "star",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Optional icon shown before the badge text."
- },
- "billingType": {
- "description": "Billing type. Immutable once the price exists (see the pricing-type identity lock).",
- "enum": [
- "one_time",
- "recurring"
- ],
- "example": "one_time",
- "type": "string"
- },
- "currency": {
- "description": "Lowercase ISO 4217 currency code.",
- "example": "usd",
- "type": "string"
- },
- "discountedFromPrice": {
- "description": "Original price before discount, in cents.",
- "type": [
- "number",
- "null"
- ]
- },
- "enabled": {
- "description": "Whether this price is selectable by customers.",
- "type": "boolean"
- },
- "hidden": {
- "description": "Hide this price. Hidden prices can still be shown using query parameters.",
- "type": [
- "boolean",
- "null"
- ]
- },
- "id": {
- "description": "Unique price identifier.",
- "example": "507f1f77bcf86cd799439011",
- "type": "string"
- },
- "isDefault": {
- "description": "Whether checkout pre-selects this price: the entry `defaultPriceId` names. False on every price when the product has several prices and no default.",
- "type": "boolean"
- },
- "label": {
- "description": "Optional seller-facing label (e.g. \"Monthly\", \"Annual\").",
- "type": [
- "string",
- "null"
- ]
- },
- "order": {
- "description": "Dashboard display order.",
- "type": [
- "number",
- "null"
- ]
- },
- "payWhatYouWant": {
- "description": "Whether pay-what-you-want pricing is enabled.",
- "type": [
- "boolean",
- "null"
- ]
- },
- "paymentPlan": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "billingCycleAnchorConfig": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "dayOfMonth": {
- "anyOf": [
- {
- "maximum": 31,
- "minimum": 1,
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "Day of month the billing cycle is anchored to."
- },
- "enabled": {
- "type": [
- "boolean",
- "null"
- ]
- },
- "month": {
- "anyOf": [
- {
- "maximum": 12,
- "minimum": 1,
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "interval": {
- "anyOf": [
- {
- "enum": [
- "day",
- "week",
- "month",
- "year"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Billing interval (day, week, month, year).",
- "example": "month"
- },
- "intervalCount": {
- "description": "Number of intervals between billings.",
- "example": 1,
- "type": [
- "number",
- "null"
- ]
- },
- "planIterations": {
- "description": "Number of billing cycles after which the plan completes.",
- "type": [
- "number",
- "null"
- ]
- },
- "startDate": {
- "anyOf": [
- {
- "format": "date-time",
- "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The date on which the subscription begins."
- },
- "trialPeriodDays": {
- "description": "Trial period in days.",
- "type": [
- "number",
- "null"
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "Payment plan configuration — recurring billing that completes after `planIterations` cycles. Never present together with recurring."
- },
- "pwywSuggestedPrice": {
- "description": "Suggested price in cents for PWYW prices.",
- "type": [
- "number",
- "null"
- ]
- },
- "recurring": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "billingCycleAnchorConfig": {
- "anyOf": [
- {
- "additionalProperties": false,
- "properties": {
- "dayOfMonth": {
- "anyOf": [
- {
- "maximum": 31,
- "minimum": 1,
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "description": "Day of month the billing cycle is anchored to."
- },
- "enabled": {
- "type": [
- "boolean",
- "null"
- ]
- },
- "month": {
- "anyOf": [
- {
- "maximum": 12,
- "minimum": 1,
- "type": "number"
- },
- {
- "type": "null"
- }
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ]
- },
- "interval": {
- "anyOf": [
- {
- "enum": [
- "day",
- "week",
- "month",
- "year"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "Billing interval (day, week, month, year).",
- "example": "month"
- },
- "intervalCount": {
- "description": "Number of intervals between billings.",
- "example": 1,
- "type": [
- "number",
- "null"
- ]
- },
- "startDate": {
- "anyOf": [
- {
- "format": "date-time",
- "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "description": "The date on which the subscription begins."
- },
- "trialPeriodDays": {
- "description": "Trial period in days.",
- "type": [
- "number",
- "null"
- ]
- }
- },
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "description": "Recurring billing configuration. Never present together with paymentPlan."
- },
- "reference": {
- "description": "Merchant-facing internal id used in exports and reports (e.g. `price_one_time_fixed_5000`).",
- "type": [
- "string",
- "null"
- ]
- },
- "setupFee": {
- "description": "One-time setup fee in cents.",
- "type": [
- "number",
- "null"
- ]
- },
- "setupFeeMultipliesWithQuantity": {
- "type": [
- "boolean",
- "null"
- ]
- }
- },
- "required": [
- "amount",
- "currency",
- "id",
- "enabled",
- "isDefault",
- "billingType"
- ],
- "type": "object"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
-]New value: +[
+ {
+ "items": {
+ "additionalProperties": false,
+ "description": "A single price entry on a multi-price product.",
+ "properties": {
+ "amount": {
+ "description": "Price in smallest currency unit (cents).",
+ "example": 4900,
+ "type": "number"
+ },
+ "badge": {
+ "description": "Optional short label shown over the price card.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "badgeIcon": {
+ "anyOf": [
+ {
+ "description": "Icon shown before the badge text.",
+ "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"
+ ],
+ "example": "star",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Optional icon shown before the badge text."
+ },
+ "billingType": {
+ "description": "Billing type. Immutable once the price exists (see the pricing-type identity lock).",
+ "enum": [
+ "one_time",
+ "recurring"
+ ],
+ "example": "one_time",
+ "type": "string"
+ },
+ "currency": {
+ "description": "Lowercase ISO 4217 currency code.",
+ "example": "usd",
+ "type": "string"
+ },
+ "discountedFromPrice": {
+ "description": "Original price before discount, in cents.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "enabled": {
+ "description": "Whether this price is selectable by customers.",
+ "type": "boolean"
+ },
+ "hidden": {
+ "description": "Hide this price. Hidden prices can still be shown using query parameters.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "id": {
+ "description": "Unique price identifier.",
+ "example": "507f1f77bcf86cd799439011",
+ "type": "string"
+ },
+ "isDefault": {
+ "description": "Whether checkout pre-selects this price: the entry `defaultPriceId` names. False on every price when the product has several prices and no default.",
+ "type": "boolean"
+ },
+ "label": {
+ "description": "Optional seller-facing label (e.g. \"Monthly\", \"Annual\").",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "order": {
+ "description": "Dashboard display order.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "payWhatYouWant": {
+ "description": "Whether pay-what-you-want pricing is enabled.",
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "paymentPlan": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "billingCycleAnchorConfig": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "dayOfMonth": {
+ "anyOf": [
+ {
+ "maximum": 31,
+ "minimum": 1,
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Day of month the billing cycle is anchored to."
+ },
+ "enabled": {
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "month": {
+ "anyOf": [
+ {
+ "maximum": 12,
+ "minimum": 1,
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "interval": {
+ "anyOf": [
+ {
+ "enum": [
+ "day",
+ "week",
+ "month",
+ "year"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Billing interval (day, week, month, year).",
+ "example": "month"
+ },
+ "intervalCount": {
+ "description": "Number of intervals between billings.",
+ "example": 1,
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "planIterations": {
+ "description": "Number of billing cycles after which the plan completes.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "startDate": {
+ "anyOf": [
+ {
+ "format": "date-time",
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The date on which the subscription begins."
+ },
+ "trialPeriodDays": {
+ "description": "Trial period in days.",
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Payment plan configuration — recurring billing that completes after `planIterations` cycles. Never present together with recurring."
+ },
+ "pwywSuggestedPrice": {
+ "description": "Suggested price in cents for PWYW prices.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "recurring": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "billingCycleAnchorConfig": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "properties": {
+ "dayOfMonth": {
+ "anyOf": [
+ {
+ "maximum": 31,
+ "minimum": 1,
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Day of month the billing cycle is anchored to."
+ },
+ "enabled": {
+ "type": [
+ "boolean",
+ "null"
+ ]
+ },
+ "month": {
+ "anyOf": [
+ {
+ "maximum": 12,
+ "minimum": 1,
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "interval": {
+ "anyOf": [
+ {
+ "enum": [
+ "day",
+ "week",
+ "month",
+ "year"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Billing interval (day, week, month, year).",
+ "example": "month"
+ },
+ "intervalCount": {
+ "description": "Number of intervals between billings.",
+ "example": 1,
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "startDate": {
+ "anyOf": [
+ {
+ "format": "date-time",
+ "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$",
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "The date on which the subscription begins."
+ },
+ "trialPeriodDays": {
+ "description": "Trial period in days.",
+ "type": [
+ "number",
+ "null"
+ ]
+ }
+ },
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "description": "Recurring billing configuration. Never present together with paymentPlan."
+ },
+ "reference": {
+ "description": "Stable label for this price, sent to exports, Zapier, Google Sheets and webhooks as `priceReference`. A generated reference can contain the amount the price was created with, such as `price_one_time_fixed_5000`. It is not updated when the amount changes, and does not need to be.",
+ "type": [
+ "string",
+ "null"
+ ]
+ },
+ "setupFee": {
+ "description": "One-time setup fee in cents.",
+ "type": [
+ "number",
+ "null"
+ ]
+ },
+ "setupFeeMultipliesWithQuantity": {
+ "type": [
+ "boolean",
+ "null"
+ ]
+ }
+ },
+ "required": [
+ "amount",
+ "currency",
+ "id",
+ "enabled",
+ "isDefault",
+ "billingType"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+]