openapi: 3.1.0 info: title: Webflow Products and SKUs API description: Webflow Data API v2 - Products and SKUs endpoints. version: 2.0.0 contact: name: Webflow Developer Relations email: developers@webflow.com url: https://developers.webflow.com termsOfService: https://webflow.com/legal/terms license: name: MIT url: https://opensource.org/licenses/MIT servers: - url: https://api.webflow.com/v2 description: Webflow API v2 x-fern-server-name: Data API security: - OAuth2: [] - ApiKey: [] tags: - name: Products & SKUs description: Products & SKUs are the products and SKUs in your Webflow e-commerce site. paths: /sites/{site_id}/products: get: x-fern-sdk-group-name: products x-fern-sdk-method-name: list security: - OAuth2: - ecommerce:read operationId: list-products summary: Webflow List Products & SKUs description: 'Retrieve all products for a site. Use `limit` and `offset` to page through all products with subsequent requests. All SKUs for each product will also be fetched and returned. The `limit`, `offset` and `total` values represent Products only and do not include any SKUs. Required scope | `ecommerce:read` ' tags: - Products & SKUs parameters: - name: site_id in: path description: Unique identifier for a Site example: 580e63e98c9a982ac9b8b741 required: true schema: type: string format: objectid default: - in: query example: 0 allowEmptyValue: true name: offset description: Offset used for pagination if the results have more than limit records required: false schema: type: integer - in: query allowEmptyValue: true name: limit example: 100 description: 'Maximum number of records to be returned (max limit: 100)' required: false schema: type: integer responses: '200': description: Request was successful content: application/json: schema: description: Results from product list type: object properties: items: type: array description: List of Item objects within the Collection. Contains product and skus keys for each Item items: description: A product and its SKUs. type: object properties: product: description: The Product object type: object example: id: 660eb7a486d1d6e0412292d7 cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2024-04-04T14:24:19.467Z' lastUpdated: '2024-04-04T14:30:19.282Z' createdOn: '2024-04-04T14:22:28.547Z' isArchived: false isDraft: false fieldData: tax-category: standard-taxable shippable: true ec-product-type: b6ccc1830db4b1babeb06a9ac5f6dd76 sku-properties: - id: 31b77fa66fa376c2c0abb458d5be39fb name: Size enum: - id: 8d21a625d655ab260e9941c27180c75b name: Small slug: small - id: ecdca17106ad86c0dfe3b5f3ac8be6c9 name: Medium slug: medium - id: ec7877d6137ecf7ec86f726c135b1812 name: Large slug: large - id: 74d3738e62c568d5634dd6989daec5ec name: Color enum: - id: e539b0d6c3a609cd06ddb2da804f68f0 name: Royal Blue slug: royal-blue - id: 68d98f2fbafc0fd45651cddc44798dd0 name: Crimson Red slug: crimson-red - id: 996cd95c97fd5620d0a374c835b37205 name: Forrest Green slug: forrest-green name: T-Shirt description: A plain t-shirt slug: t-shirt default-sku: 66072fb71b89448912e2681c properties: id: type: string readOnly: true description: Unique identifier for the Product example: 580e63fc8c9a982ac9b8b745 cmsLocaleId: type: string readOnly: true example: 653ad57de882f528b32e810e description: Identifier for the locale of the CMS item lastPublished: type: string format: date-time readOnly: true description: The date the Product was last published example: '2023-03-17T18:47:35.560Z' lastUpdated: type: string format: date-time readOnly: true description: The date the Product was last updated example: '2023-03-17T18:47:35.560Z' createdOn: type: string format: date-time readOnly: true description: The date the Product was created example: '2023-03-17T18:47:35.560Z' isArchived: type: boolean default: false description: Boolean determining if the Product is set to archived example: false isDraft: type: boolean default: false description: Boolean determining if the Product is set to draft example: false fieldData: description: Contains content-specific details for a product, covering both standard (e.g., title, description) and custom fields tailored to the product setup. type: object properties: name: type: string description: Name of the Product example: T-Shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt description: type: string description: A description of your product example: A plain cotton t-shirt. shippable: type: boolean description: Boolean determining if the Product is shippable example: true sku-properties: type: array description: Variant types to include in SKUs items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green category: type: array description: The category your product belongs to. items: type: string tax-category: type: string description: Product tax class enum: - standard-taxable - standard-exempt - books-religious - books-textbook - clothing - clothing-swimwear - digital-goods - digital-service - drugs-non-prescription - drugs-prescription - food-bottled-water - food-candy - food-groceries - food-prepared - food-soda - food-supplements - magazine-individual - magazine-subscription - service-admission - service-advertising - service-dry-cleaning - service-hairdressing - service-installation - service-miscellaneous - service-parking - service-printing - service-professional - service-repair - service-training default-sku: type: string format: objectid description: The default SKU associated with this product. ec-product-type: description: 'Product types. Enums reflect the following values in order: Physical, Digital, Service, Advanced"' type: string enum: - ff42fee0113744f693a764e3431a9cc2 - f22027db68002190aef89a4a2b7ac8a1 - c599e43b1a1c34d5a323aedf75d3adf6 - b6ccc1830db4b1babeb06a9ac5f6dd76 additionalProperties: type: string description: Custom fields for your product. skus: description: A list of SKU Objects type: array items: description: The SKU object type: object properties: id: type: string readOnly: true format: objectid description: Unique identifier for the Product example: 580e63fc8c9a982ac9b8b745 cmsLocaleId: type: string readOnly: true example: 653ad57de882f528b32e810e description: Identifier for the locale of the CMS item lastPublished: type: string format: date-time readOnly: true description: The date the Product was last published example: '2023-03-17T18:47:35.560Z' lastUpdated: type: string format: date-time readOnly: true description: The date the Product was last updated example: '2023-03-17T18:47:35.560Z' createdOn: type: string format: date-time readOnly: true description: The date the Product was created example: '2023-03-17T18:47:35.560Z' fieldData: description: Standard and Custom fields for a SKU type: object required: - name - slug - price properties: sku-values: type: object description: 'A mapping between SKU properties and their values, represented as key-value pairs. Each key represents a SKU Property ID (e.g. "color") and maps to its corresponding SKU Value ID (e.g. "blue"). This structure defines the specific variant combination for a SKU. ' additionalProperties: type: string example: color: blue size: small name: type: string description: Name of the Product example: Blue T-shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt-blue price: type: object description: price of SKU properties: value: description: Price of SKU isRequired: true type: number example: 2499 unit: type: string isRequired: true description: Currency of Item example: USD currency: type: string description: Currency of Item (alternative representation) example: USD compare-at-price: type: object description: comparison price of SKU properties: value: description: Price of SKU type: number example: 100 unit: type: string description: Currency of Item example: USD ec-sku-billing-method: description: '[Billing method](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#billing-methods)for the SKU' type: string enum: - one-time - subscription ec-sku-subscription-plan: description: '[Subscription plan](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#subscription) for the SKU' type: object properties: interval: type: string description: Interval of subscription renewal enum: - day - week - month - year frequency: type: number description: Frequncy of billing within interval example: 1 trial: type: number description: Number of days of a trial example: 7 plans: readOnly: true type: array items: type: object properties: platform: type: string enum: - stripe description: The platform of the subscription plan id: type: string description: The unique identifier of the plan status: type: string enum: - active - inactive - canceled description: The status of the plan main-image: type: string description: The URL for the main image of the SKU example: https://www.example.com/image.jpg sku: type: string description: A unique identifier for the SKU example: '1234567890' sku-properties: type: array description: The properties of the SKU items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green additionalProperties: type: string description: Custom fields for your SKU. example: id: 66072fb71b89448912e2681c cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2023-03-17T18:47:35.560Z' lastUpdated: '2023-03-17T18:47:35.560Z' createdOn: '2023-03-17T18:47:35.560Z' fieldData: name: Colorful T-shirt - Default slug: colorful-t-shirt-default price: value: 2499 currency: USD unit: USD sku-values: color: red size: small main-image: https://rocketamp-sample-store.myshopify.com/cdn/shop/products/Gildan_2000_Antique_Cherry_Red_Front_1024x1024.jpg?v=1527232987 pagination: description: Pagination object type: object required: - limit - offset - total properties: limit: type: integer description: The limit used for pagination example: 100 readOnly: true offset: type: integer description: The offset used for pagination example: 0 readOnly: true total: type: integer description: The total number of records example: 100 readOnly: true '400': description: Validation failure x-logErrorCode: 400 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: validation_error message: 'Validation Error: Provided ID is invalid' externalReference: details: [] '401': description: Provided access token is invalid or does not have access to requested resource x-logErrorCode: 401 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: not_authorized message: Request not authorized externalReference: details: [] '403': description: Provided access token is valid, but is missing the required scopes. x-logErrorCode: 403 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: missing_scopes message: 'OAuthForbidden: You are missing the following scopes - components:write' externalReference: details: [] '404': description: Requested resource not found x-logErrorCode: 404 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: resource_not_found message: 'Requested resource not found: The site cannot be found' externalReference: details: [] '409': description: The site does not have ecommerce enabled. x-logErrorCode: 409 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: ecommerce_not_enabled message: Ecommerce is not yet initialized externalReference: details: [] '429': description: The rate limit of the provided access_token has been reached. Please have your application respect the X-RateLimit-Remaining header we include on API responses. x-logErrorCode: 429 headers: X-RateLimit-Remaining: description: Contains the number of available requests remaining in the current minute schema: type: number X-RateLimit-Limit: description: Contains your current overall rate limit per minute schema: type: number content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: too_many_requests message: Too many requests externalReference: details: [] '500': description: We had a problem with our server. Try again later. content: application/json: x-logErrorCode: 500 schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: internal_error message: An Internal Error occurred externalReference: details: [] post: x-fern-sdk-group-name: products x-fern-sdk-method-name: create security: - OAuth2: - ecommerce:write operationId: create-product summary: Webflow Create Product & SKU description: "Create a new ecommerce product and defaultSKU. A product, at minimum, must have a single SKU.\n\nTo create a product with multiple SKUs:\n - First, create a list of `sku-properties`, also known as [product options](https://help.webflow.com/hc/en-us/articles/33961334531347-Create-product-options-and-variants). For example, a T-shirt product may have a \"color\" `sku-property`, with a list of enum values: red, yellow, and blue, another `sku-property` may be \"size\", with a list of enum values: small, medium, and large.\n - Once, a product is created with a list of `sku-properties`, Webflow will create a **default SKU**, which is always a combination of the first `enum` values of each `sku-property`. (e.g. Small - Red - T-Shirt)\n - After creation, you can create additional SKUs for the product, using the [Create SKUs endpoint.](/data/reference/ecommerce/products/create-sku)\n\nUpon creation, the default product type will be `Advanced`, which ensures all Product and SKU fields will be shown to users in the Designer.\n\nRequired scope | `ecommerce:write`\n" tags: - Products & SKUs parameters: - name: site_id in: path description: Unique identifier for a Site example: 580e63e98c9a982ac9b8b741 required: true schema: type: string format: objectid default: requestBody: description: The Product and SKU to create required: true content: application/json: schema: description: The Product and SKU to create type: object example: publishStatus: staging product: fieldData: name: Colorful T-shirt slug: colorful-t-shirt description: Our best-selling t-shirt available in multiple colors and sizes sku-properties: - id: color name: Color enum: - id: red name: Red slug: red - id: yellow name: Yellow slug: yellow - id: blue name: Blue slug: blue - id: size name: Size enum: - id: small name: Small slug: small - id: medium name: Medium slug: medium - id: large name: Large slug: large sku: fieldData: name: Colorful T-shirt - Red Small slug: colorful-t-shirt-red-small price: value: 2499 currency: USD unit: USD main-image: https://rocketamp-sample-store.myshopify.com/cdn/shop/products/Gildan_2000_Antique_Cherry_Red_Front_1024x1024.jpg?v=1527232987 properties: publishStatus: description: Indicate whether your Product should be set as "staging" or "live" type: string enum: - staging - live default: staging example: staging product: type: object required: - name - slug properties: fieldData: allOf: - description: Contains content-specific details for a product, covering both standard (e.g., title, description) and custom fields tailored to the product setup. type: object properties: name: type: string description: Name of the Product example: T-Shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt description: type: string description: A description of your product example: A plain cotton t-shirt. shippable: type: boolean description: Boolean determining if the Product is shippable example: true sku-properties: type: array description: Variant types to include in SKUs items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green category: type: array description: The category your product belongs to. items: type: string tax-category: type: string description: Product tax class enum: - standard-taxable - standard-exempt - books-religious - books-textbook - clothing - clothing-swimwear - digital-goods - digital-service - drugs-non-prescription - drugs-prescription - food-bottled-water - food-candy - food-groceries - food-prepared - food-soda - food-supplements - magazine-individual - magazine-subscription - service-admission - service-advertising - service-dry-cleaning - service-hairdressing - service-installation - service-miscellaneous - service-parking - service-printing - service-professional - service-repair - service-training default-sku: type: string format: objectid description: The default SKU associated with this product. ec-product-type: description: 'Product types. Enums reflect the following values in order: Physical, Digital, Service, Advanced"' type: string enum: - ff42fee0113744f693a764e3431a9cc2 - f22027db68002190aef89a4a2b7ac8a1 - c599e43b1a1c34d5a323aedf75d3adf6 - b6ccc1830db4b1babeb06a9ac5f6dd76 additionalProperties: type: string description: Custom fields for your product. sku: type: object required: - name - slug - price properties: fieldData: description: Standard and Custom fields for a SKU type: object required: - name - slug - price properties: sku-values: type: object description: 'A mapping between SKU properties and their values, represented as key-value pairs. Each key represents a SKU Property ID (e.g. "color") and maps to its corresponding SKU Value ID (e.g. "blue"). This structure defines the specific variant combination for a SKU. ' additionalProperties: type: string example: color: blue size: small name: type: string description: Name of the Product example: Blue T-shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt-blue price: type: object description: price of SKU properties: value: description: Price of SKU isRequired: true type: number example: 2499 unit: type: string isRequired: true description: Currency of Item example: USD currency: type: string description: Currency of Item (alternative representation) example: USD compare-at-price: type: object description: comparison price of SKU properties: value: description: Price of SKU type: number example: 100 unit: type: string description: Currency of Item example: USD ec-sku-billing-method: description: '[Billing method](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#billing-methods)for the SKU' type: string enum: - one-time - subscription ec-sku-subscription-plan: description: '[Subscription plan](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#subscription) for the SKU' type: object properties: interval: type: string description: Interval of subscription renewal enum: - day - week - month - year frequency: type: number description: Frequncy of billing within interval example: 1 trial: type: number description: Number of days of a trial example: 7 plans: readOnly: true type: array items: type: object properties: platform: type: string enum: - stripe description: The platform of the subscription plan id: type: string description: The unique identifier of the plan status: type: string enum: - active - inactive - canceled description: The status of the plan main-image: type: string description: The URL for the main image of the SKU example: https://www.example.com/image.jpg sku: type: string description: A unique identifier for the SKU example: '1234567890' sku-properties: type: array description: The properties of the SKU items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green additionalProperties: type: string description: Custom fields for your SKU. required: - product - sku responses: '200': description: Request was successful content: application/json: schema: description: A product and its SKUs. type: object properties: product: description: The Product object type: object example: id: 660eb7a486d1d6e0412292d7 cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2024-04-04T14:24:19.467Z' lastUpdated: '2024-04-04T14:30:19.282Z' createdOn: '2024-04-04T14:22:28.547Z' isArchived: false isDraft: false fieldData: tax-category: standard-taxable shippable: true ec-product-type: b6ccc1830db4b1babeb06a9ac5f6dd76 sku-properties: - id: 31b77fa66fa376c2c0abb458d5be39fb name: Size enum: - id: 8d21a625d655ab260e9941c27180c75b name: Small slug: small - id: ecdca17106ad86c0dfe3b5f3ac8be6c9 name: Medium slug: medium - id: ec7877d6137ecf7ec86f726c135b1812 name: Large slug: large - id: 74d3738e62c568d5634dd6989daec5ec name: Color enum: - id: e539b0d6c3a609cd06ddb2da804f68f0 name: Royal Blue slug: royal-blue - id: 68d98f2fbafc0fd45651cddc44798dd0 name: Crimson Red slug: crimson-red - id: 996cd95c97fd5620d0a374c835b37205 name: Forrest Green slug: forrest-green name: T-Shirt description: A plain t-shirt slug: t-shirt default-sku: 66072fb71b89448912e2681c properties: id: type: string readOnly: true description: Unique identifier for the Product example: 580e63fc8c9a982ac9b8b745 cmsLocaleId: type: string readOnly: true example: 653ad57de882f528b32e810e description: Identifier for the locale of the CMS item lastPublished: type: string format: date-time readOnly: true description: The date the Product was last published example: '2023-03-17T18:47:35.560Z' lastUpdated: type: string format: date-time readOnly: true description: The date the Product was last updated example: '2023-03-17T18:47:35.560Z' createdOn: type: string format: date-time readOnly: true description: The date the Product was created example: '2023-03-17T18:47:35.560Z' isArchived: type: boolean default: false description: Boolean determining if the Product is set to archived example: false isDraft: type: boolean default: false description: Boolean determining if the Product is set to draft example: false fieldData: description: Contains content-specific details for a product, covering both standard (e.g., title, description) and custom fields tailored to the product setup. type: object properties: name: type: string description: Name of the Product example: T-Shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt description: type: string description: A description of your product example: A plain cotton t-shirt. shippable: type: boolean description: Boolean determining if the Product is shippable example: true sku-properties: type: array description: Variant types to include in SKUs items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green category: type: array description: The category your product belongs to. items: type: string tax-category: type: string description: Product tax class enum: - standard-taxable - standard-exempt - books-religious - books-textbook - clothing - clothing-swimwear - digital-goods - digital-service - drugs-non-prescription - drugs-prescription - food-bottled-water - food-candy - food-groceries - food-prepared - food-soda - food-supplements - magazine-individual - magazine-subscription - service-admission - service-advertising - service-dry-cleaning - service-hairdressing - service-installation - service-miscellaneous - service-parking - service-printing - service-professional - service-repair - service-training default-sku: type: string format: objectid description: The default SKU associated with this product. ec-product-type: description: 'Product types. Enums reflect the following values in order: Physical, Digital, Service, Advanced"' type: string enum: - ff42fee0113744f693a764e3431a9cc2 - f22027db68002190aef89a4a2b7ac8a1 - c599e43b1a1c34d5a323aedf75d3adf6 - b6ccc1830db4b1babeb06a9ac5f6dd76 additionalProperties: type: string description: Custom fields for your product. skus: description: A list of SKU Objects type: array items: description: The SKU object type: object properties: id: type: string readOnly: true format: objectid description: Unique identifier for the Product example: 580e63fc8c9a982ac9b8b745 cmsLocaleId: type: string readOnly: true example: 653ad57de882f528b32e810e description: Identifier for the locale of the CMS item lastPublished: type: string format: date-time readOnly: true description: The date the Product was last published example: '2023-03-17T18:47:35.560Z' lastUpdated: type: string format: date-time readOnly: true description: The date the Product was last updated example: '2023-03-17T18:47:35.560Z' createdOn: type: string format: date-time readOnly: true description: The date the Product was created example: '2023-03-17T18:47:35.560Z' fieldData: description: Standard and Custom fields for a SKU type: object required: - name - slug - price properties: sku-values: type: object description: 'A mapping between SKU properties and their values, represented as key-value pairs. Each key represents a SKU Property ID (e.g. "color") and maps to its corresponding SKU Value ID (e.g. "blue"). This structure defines the specific variant combination for a SKU. ' additionalProperties: type: string example: color: blue size: small name: type: string description: Name of the Product example: Blue T-shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt-blue price: type: object description: price of SKU properties: value: description: Price of SKU isRequired: true type: number example: 2499 unit: type: string isRequired: true description: Currency of Item example: USD currency: type: string description: Currency of Item (alternative representation) example: USD compare-at-price: type: object description: comparison price of SKU properties: value: description: Price of SKU type: number example: 100 unit: type: string description: Currency of Item example: USD ec-sku-billing-method: description: '[Billing method](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#billing-methods)for the SKU' type: string enum: - one-time - subscription ec-sku-subscription-plan: description: '[Subscription plan](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#subscription) for the SKU' type: object properties: interval: type: string description: Interval of subscription renewal enum: - day - week - month - year frequency: type: number description: Frequncy of billing within interval example: 1 trial: type: number description: Number of days of a trial example: 7 plans: readOnly: true type: array items: type: object properties: platform: type: string enum: - stripe description: The platform of the subscription plan id: type: string description: The unique identifier of the plan status: type: string enum: - active - inactive - canceled description: The status of the plan main-image: type: string description: The URL for the main image of the SKU example: https://www.example.com/image.jpg sku: type: string description: A unique identifier for the SKU example: '1234567890' sku-properties: type: array description: The properties of the SKU items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green additionalProperties: type: string description: Custom fields for your SKU. example: id: 66072fb71b89448912e2681c cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2023-03-17T18:47:35.560Z' lastUpdated: '2023-03-17T18:47:35.560Z' createdOn: '2023-03-17T18:47:35.560Z' fieldData: name: Colorful T-shirt - Default slug: colorful-t-shirt-default price: value: 2499 currency: USD unit: USD sku-values: color: red size: small main-image: https://rocketamp-sample-store.myshopify.com/cdn/shop/products/Gildan_2000_Antique_Cherry_Red_Front_1024x1024.jpg?v=1527232987 '400': description: Request body was incorrectly formatted. x-logErrorCode: 400 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: bad_request message: 'Bad Request: Request is malformed' externalReference: details: [] '401': description: Provided access token is invalid or does not have access to requested resource x-logErrorCode: 401 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: not_authorized message: Request not authorized externalReference: details: [] '403': description: Provided access token is valid, but is missing the required scopes. x-logErrorCode: 403 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: missing_scopes message: 'OAuthForbidden: You are missing the following scopes - components:write' externalReference: details: [] '404': description: Requested resource not found x-logErrorCode: 404 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: resource_not_found message: 'Requested resource not found: The site cannot be found' externalReference: details: [] '409': description: The site does not have ecommerce enabled. x-logErrorCode: 409 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: ecommerce_not_enabled message: Ecommerce is not yet initialized externalReference: details: [] '429': description: The rate limit of the provided access_token has been reached. Please have your application respect the X-RateLimit-Remaining header we include on API responses. x-logErrorCode: 429 headers: X-RateLimit-Remaining: description: Contains the number of available requests remaining in the current minute schema: type: number X-RateLimit-Limit: description: Contains your current overall rate limit per minute schema: type: number content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: too_many_requests message: Too many requests externalReference: details: [] '500': description: We had a problem with our server. Try again later. content: application/json: x-logErrorCode: 500 schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: internal_error message: An Internal Error occurred externalReference: details: [] /sites/{site_id}/products/{product_id}: get: x-fern-sdk-group-name: products x-fern-sdk-method-name: get security: - OAuth2: - ecommerce:read operationId: get-product summary: Webflow Get Product and SKUs description: 'Retrieve a single product by its ID. All of its SKUs will also be retrieved. Required scope | `ecommerce:read` ' tags: - Products & SKUs parameters: - name: site_id in: path description: Unique identifier for a Site example: 580e63e98c9a982ac9b8b741 required: true schema: type: string format: objectid default: - name: product_id in: path description: Unique identifier for a Product example: 580e63fc8c9a982ac9b8b745 required: true schema: type: string format: objectid responses: '200': description: Request was successful content: application/json: schema: description: A product and its SKUs. type: object properties: product: description: The Product object type: object example: id: 660eb7a486d1d6e0412292d7 cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2024-04-04T14:24:19.467Z' lastUpdated: '2024-04-04T14:30:19.282Z' createdOn: '2024-04-04T14:22:28.547Z' isArchived: false isDraft: false fieldData: tax-category: standard-taxable shippable: true ec-product-type: b6ccc1830db4b1babeb06a9ac5f6dd76 sku-properties: - id: 31b77fa66fa376c2c0abb458d5be39fb name: Size enum: - id: 8d21a625d655ab260e9941c27180c75b name: Small slug: small - id: ecdca17106ad86c0dfe3b5f3ac8be6c9 name: Medium slug: medium - id: ec7877d6137ecf7ec86f726c135b1812 name: Large slug: large - id: 74d3738e62c568d5634dd6989daec5ec name: Color enum: - id: e539b0d6c3a609cd06ddb2da804f68f0 name: Royal Blue slug: royal-blue - id: 68d98f2fbafc0fd45651cddc44798dd0 name: Crimson Red slug: crimson-red - id: 996cd95c97fd5620d0a374c835b37205 name: Forrest Green slug: forrest-green name: T-Shirt description: A plain t-shirt slug: t-shirt default-sku: 66072fb71b89448912e2681c properties: id: type: string readOnly: true description: Unique identifier for the Product example: 580e63fc8c9a982ac9b8b745 cmsLocaleId: type: string readOnly: true example: 653ad57de882f528b32e810e description: Identifier for the locale of the CMS item lastPublished: type: string format: date-time readOnly: true description: The date the Product was last published example: '2023-03-17T18:47:35.560Z' lastUpdated: type: string format: date-time readOnly: true description: The date the Product was last updated example: '2023-03-17T18:47:35.560Z' createdOn: type: string format: date-time readOnly: true description: The date the Product was created example: '2023-03-17T18:47:35.560Z' isArchived: type: boolean default: false description: Boolean determining if the Product is set to archived example: false isDraft: type: boolean default: false description: Boolean determining if the Product is set to draft example: false fieldData: description: Contains content-specific details for a product, covering both standard (e.g., title, description) and custom fields tailored to the product setup. type: object properties: name: type: string description: Name of the Product example: T-Shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt description: type: string description: A description of your product example: A plain cotton t-shirt. shippable: type: boolean description: Boolean determining if the Product is shippable example: true sku-properties: type: array description: Variant types to include in SKUs items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green category: type: array description: The category your product belongs to. items: type: string tax-category: type: string description: Product tax class enum: - standard-taxable - standard-exempt - books-religious - books-textbook - clothing - clothing-swimwear - digital-goods - digital-service - drugs-non-prescription - drugs-prescription - food-bottled-water - food-candy - food-groceries - food-prepared - food-soda - food-supplements - magazine-individual - magazine-subscription - service-admission - service-advertising - service-dry-cleaning - service-hairdressing - service-installation - service-miscellaneous - service-parking - service-printing - service-professional - service-repair - service-training default-sku: type: string format: objectid description: The default SKU associated with this product. ec-product-type: description: 'Product types. Enums reflect the following values in order: Physical, Digital, Service, Advanced"' type: string enum: - ff42fee0113744f693a764e3431a9cc2 - f22027db68002190aef89a4a2b7ac8a1 - c599e43b1a1c34d5a323aedf75d3adf6 - b6ccc1830db4b1babeb06a9ac5f6dd76 additionalProperties: type: string description: Custom fields for your product. skus: description: A list of SKU Objects type: array items: description: The SKU object type: object properties: id: type: string readOnly: true format: objectid description: Unique identifier for the Product example: 580e63fc8c9a982ac9b8b745 cmsLocaleId: type: string readOnly: true example: 653ad57de882f528b32e810e description: Identifier for the locale of the CMS item lastPublished: type: string format: date-time readOnly: true description: The date the Product was last published example: '2023-03-17T18:47:35.560Z' lastUpdated: type: string format: date-time readOnly: true description: The date the Product was last updated example: '2023-03-17T18:47:35.560Z' createdOn: type: string format: date-time readOnly: true description: The date the Product was created example: '2023-03-17T18:47:35.560Z' fieldData: description: Standard and Custom fields for a SKU type: object required: - name - slug - price properties: sku-values: type: object description: 'A mapping between SKU properties and their values, represented as key-value pairs. Each key represents a SKU Property ID (e.g. "color") and maps to its corresponding SKU Value ID (e.g. "blue"). This structure defines the specific variant combination for a SKU. ' additionalProperties: type: string example: color: blue size: small name: type: string description: Name of the Product example: Blue T-shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt-blue price: type: object description: price of SKU properties: value: description: Price of SKU isRequired: true type: number example: 2499 unit: type: string isRequired: true description: Currency of Item example: USD currency: type: string description: Currency of Item (alternative representation) example: USD compare-at-price: type: object description: comparison price of SKU properties: value: description: Price of SKU type: number example: 100 unit: type: string description: Currency of Item example: USD ec-sku-billing-method: description: '[Billing method](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#billing-methods)for the SKU' type: string enum: - one-time - subscription ec-sku-subscription-plan: description: '[Subscription plan](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#subscription) for the SKU' type: object properties: interval: type: string description: Interval of subscription renewal enum: - day - week - month - year frequency: type: number description: Frequncy of billing within interval example: 1 trial: type: number description: Number of days of a trial example: 7 plans: readOnly: true type: array items: type: object properties: platform: type: string enum: - stripe description: The platform of the subscription plan id: type: string description: The unique identifier of the plan status: type: string enum: - active - inactive - canceled description: The status of the plan main-image: type: string description: The URL for the main image of the SKU example: https://www.example.com/image.jpg sku: type: string description: A unique identifier for the SKU example: '1234567890' sku-properties: type: array description: The properties of the SKU items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green additionalProperties: type: string description: Custom fields for your SKU. example: id: 66072fb71b89448912e2681c cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2023-03-17T18:47:35.560Z' lastUpdated: '2023-03-17T18:47:35.560Z' createdOn: '2023-03-17T18:47:35.560Z' fieldData: name: Colorful T-shirt - Default slug: colorful-t-shirt-default price: value: 2499 currency: USD unit: USD sku-values: color: red size: small main-image: https://rocketamp-sample-store.myshopify.com/cdn/shop/products/Gildan_2000_Antique_Cherry_Red_Front_1024x1024.jpg?v=1527232987 '400': description: Request body was incorrectly formatted. x-logErrorCode: 400 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: bad_request message: 'Bad Request: Request is malformed' externalReference: details: [] '401': description: Provided access token is invalid or does not have access to requested resource x-logErrorCode: 401 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: not_authorized message: Request not authorized externalReference: details: [] '403': description: Provided access token is valid, but is missing the required scopes. x-logErrorCode: 403 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: missing_scopes message: 'OAuthForbidden: You are missing the following scopes - components:write' externalReference: details: [] '404': description: Requested resource not found x-logErrorCode: 404 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: resource_not_found message: 'Requested resource not found: The site cannot be found' externalReference: details: [] '409': description: The site does not have ecommerce enabled. x-logErrorCode: 409 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: ecommerce_not_enabled message: Ecommerce is not yet initialized externalReference: details: [] '429': description: The rate limit of the provided access_token has been reached. Please have your application respect the X-RateLimit-Remaining header we include on API responses. x-logErrorCode: 429 headers: X-RateLimit-Remaining: description: Contains the number of available requests remaining in the current minute schema: type: number X-RateLimit-Limit: description: Contains your current overall rate limit per minute schema: type: number content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: too_many_requests message: Too many requests externalReference: details: [] '500': description: We had a problem with our server. Try again later. content: application/json: x-logErrorCode: 500 schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: internal_error message: An Internal Error occurred externalReference: details: [] patch: x-fern-sdk-group-name: products x-fern-sdk-method-name: update security: - OAuth2: - ecommerce:write operationId: update-product summary: Webflow Update Product description: 'Update an existing Product. Updating an existing Product will set the product type to `Advanced`, which ensures all Product and SKU fields will be shown to users in the Designer. Required scope | `ecommerce:write` ' tags: - Products & SKUs parameters: - name: site_id in: path description: Unique identifier for a Site example: 580e63e98c9a982ac9b8b741 required: true schema: type: string format: objectid default: - name: product_id in: path description: Unique identifier for a Product example: 580e63fc8c9a982ac9b8b745 required: true schema: type: string format: objectid requestBody: description: The product to update required: true content: application/json: schema: description: The Product and SKU to create type: object example: id: 660eb7a486d1d6e0412292d7 cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2024-04-04T14:24:19.467Z' lastUpdated: '2024-04-04T14:30:19.282Z' createdOn: '2024-04-04T14:22:28.547Z' isArchived: false isDraft: false fieldData: tax-category: standard-taxable shippable: true ec-product-type: b6ccc1830db4b1babeb06a9ac5f6dd76 sku-properties: - id: 31b77fa66fa376c2c0abb458d5be39fb name: Size enum: - id: 8d21a625d655ab260e9941c27180c75b name: Small slug: small - id: ecdca17106ad86c0dfe3b5f3ac8be6c9 name: Medium slug: medium - id: ec7877d6137ecf7ec86f726c135b1812 name: Large slug: large - id: 74d3738e62c568d5634dd6989daec5ec name: Color enum: - id: e539b0d6c3a609cd06ddb2da804f68f0 name: Royal Blue slug: royal-blue - id: 68d98f2fbafc0fd45651cddc44798dd0 name: Crimson Red slug: crimson-red - id: 996cd95c97fd5620d0a374c835b37205 name: Forrest Green slug: forrest-green name: T-Shirt description: A plain t-shirt slug: t-shirt default-sku: 66072fb71b89448912e2681c properties: publishStatus: description: Indicate whether your Product should be set as "staging" or "live" type: string enum: - staging - live default: staging example: staging product: description: The Product object type: object example: id: 660eb7a486d1d6e0412292d7 cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2024-04-04T14:24:19.467Z' lastUpdated: '2024-04-04T14:30:19.282Z' createdOn: '2024-04-04T14:22:28.547Z' isArchived: false isDraft: false fieldData: tax-category: standard-taxable shippable: true ec-product-type: b6ccc1830db4b1babeb06a9ac5f6dd76 sku-properties: - id: 31b77fa66fa376c2c0abb458d5be39fb name: Size enum: - id: 8d21a625d655ab260e9941c27180c75b name: Small slug: small - id: ecdca17106ad86c0dfe3b5f3ac8be6c9 name: Medium slug: medium - id: ec7877d6137ecf7ec86f726c135b1812 name: Large slug: large - id: 74d3738e62c568d5634dd6989daec5ec name: Color enum: - id: e539b0d6c3a609cd06ddb2da804f68f0 name: Royal Blue slug: royal-blue - id: 68d98f2fbafc0fd45651cddc44798dd0 name: Crimson Red slug: crimson-red - id: 996cd95c97fd5620d0a374c835b37205 name: Forrest Green slug: forrest-green name: T-Shirt description: A plain t-shirt slug: t-shirt default-sku: 66072fb71b89448912e2681c properties: id: type: string readOnly: true description: Unique identifier for the Product example: 580e63fc8c9a982ac9b8b745 cmsLocaleId: type: string readOnly: true example: 653ad57de882f528b32e810e description: Identifier for the locale of the CMS item lastPublished: type: string format: date-time readOnly: true description: The date the Product was last published example: '2023-03-17T18:47:35.560Z' lastUpdated: type: string format: date-time readOnly: true description: The date the Product was last updated example: '2023-03-17T18:47:35.560Z' createdOn: type: string format: date-time readOnly: true description: The date the Product was created example: '2023-03-17T18:47:35.560Z' isArchived: type: boolean default: false description: Boolean determining if the Product is set to archived example: false isDraft: type: boolean default: false description: Boolean determining if the Product is set to draft example: false fieldData: description: Contains content-specific details for a product, covering both standard (e.g., title, description) and custom fields tailored to the product setup. type: object properties: name: type: string description: Name of the Product example: T-Shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt description: type: string description: A description of your product example: A plain cotton t-shirt. shippable: type: boolean description: Boolean determining if the Product is shippable example: true sku-properties: type: array description: Variant types to include in SKUs items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green category: type: array description: The category your product belongs to. items: type: string tax-category: type: string description: Product tax class enum: - standard-taxable - standard-exempt - books-religious - books-textbook - clothing - clothing-swimwear - digital-goods - digital-service - drugs-non-prescription - drugs-prescription - food-bottled-water - food-candy - food-groceries - food-prepared - food-soda - food-supplements - magazine-individual - magazine-subscription - service-admission - service-advertising - service-dry-cleaning - service-hairdressing - service-installation - service-miscellaneous - service-parking - service-printing - service-professional - service-repair - service-training default-sku: type: string format: objectid description: The default SKU associated with this product. ec-product-type: description: 'Product types. Enums reflect the following values in order: Physical, Digital, Service, Advanced"' type: string enum: - ff42fee0113744f693a764e3431a9cc2 - f22027db68002190aef89a4a2b7ac8a1 - c599e43b1a1c34d5a323aedf75d3adf6 - b6ccc1830db4b1babeb06a9ac5f6dd76 additionalProperties: type: string description: Custom fields for your product. sku: description: The SKU object type: object properties: id: type: string readOnly: true format: objectid description: Unique identifier for the Product example: 580e63fc8c9a982ac9b8b745 cmsLocaleId: type: string readOnly: true example: 653ad57de882f528b32e810e description: Identifier for the locale of the CMS item lastPublished: type: string format: date-time readOnly: true description: The date the Product was last published example: '2023-03-17T18:47:35.560Z' lastUpdated: type: string format: date-time readOnly: true description: The date the Product was last updated example: '2023-03-17T18:47:35.560Z' createdOn: type: string format: date-time readOnly: true description: The date the Product was created example: '2023-03-17T18:47:35.560Z' fieldData: description: Standard and Custom fields for a SKU type: object required: - name - slug - price properties: sku-values: type: object description: 'A mapping between SKU properties and their values, represented as key-value pairs. Each key represents a SKU Property ID (e.g. "color") and maps to its corresponding SKU Value ID (e.g. "blue"). This structure defines the specific variant combination for a SKU. ' additionalProperties: type: string example: color: blue size: small name: type: string description: Name of the Product example: Blue T-shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt-blue price: type: object description: price of SKU properties: value: description: Price of SKU isRequired: true type: number example: 2499 unit: type: string isRequired: true description: Currency of Item example: USD currency: type: string description: Currency of Item (alternative representation) example: USD compare-at-price: type: object description: comparison price of SKU properties: value: description: Price of SKU type: number example: 100 unit: type: string description: Currency of Item example: USD ec-sku-billing-method: description: '[Billing method](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#billing-methods)for the SKU' type: string enum: - one-time - subscription ec-sku-subscription-plan: description: '[Subscription plan](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#subscription) for the SKU' type: object properties: interval: type: string description: Interval of subscription renewal enum: - day - week - month - year frequency: type: number description: Frequncy of billing within interval example: 1 trial: type: number description: Number of days of a trial example: 7 plans: readOnly: true type: array items: type: object properties: platform: type: string enum: - stripe description: The platform of the subscription plan id: type: string description: The unique identifier of the plan status: type: string enum: - active - inactive - canceled description: The status of the plan main-image: type: string description: The URL for the main image of the SKU example: https://www.example.com/image.jpg sku: type: string description: A unique identifier for the SKU example: '1234567890' sku-properties: type: array description: The properties of the SKU items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green additionalProperties: type: string description: Custom fields for your SKU. example: id: 66072fb71b89448912e2681c cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2023-03-17T18:47:35.560Z' lastUpdated: '2023-03-17T18:47:35.560Z' createdOn: '2023-03-17T18:47:35.560Z' fieldData: name: Colorful T-shirt - Default slug: colorful-t-shirt-default price: value: 2499 currency: USD unit: USD sku-values: color: red size: small main-image: https://rocketamp-sample-store.myshopify.com/cdn/shop/products/Gildan_2000_Antique_Cherry_Red_Front_1024x1024.jpg?v=1527232987 responses: '200': description: Request was successful content: application/json: schema: description: The Product object type: object example: id: 660eb7a486d1d6e0412292d7 cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2024-04-04T14:24:19.467Z' lastUpdated: '2024-04-04T14:30:19.282Z' createdOn: '2024-04-04T14:22:28.547Z' isArchived: false isDraft: false fieldData: tax-category: standard-taxable shippable: true ec-product-type: b6ccc1830db4b1babeb06a9ac5f6dd76 sku-properties: - id: 31b77fa66fa376c2c0abb458d5be39fb name: Size enum: - id: 8d21a625d655ab260e9941c27180c75b name: Small slug: small - id: ecdca17106ad86c0dfe3b5f3ac8be6c9 name: Medium slug: medium - id: ec7877d6137ecf7ec86f726c135b1812 name: Large slug: large - id: 74d3738e62c568d5634dd6989daec5ec name: Color enum: - id: e539b0d6c3a609cd06ddb2da804f68f0 name: Royal Blue slug: royal-blue - id: 68d98f2fbafc0fd45651cddc44798dd0 name: Crimson Red slug: crimson-red - id: 996cd95c97fd5620d0a374c835b37205 name: Forrest Green slug: forrest-green name: T-Shirt description: A plain t-shirt slug: t-shirt default-sku: 66072fb71b89448912e2681c properties: id: type: string readOnly: true description: Unique identifier for the Product example: 580e63fc8c9a982ac9b8b745 cmsLocaleId: type: string readOnly: true example: 653ad57de882f528b32e810e description: Identifier for the locale of the CMS item lastPublished: type: string format: date-time readOnly: true description: The date the Product was last published example: '2023-03-17T18:47:35.560Z' lastUpdated: type: string format: date-time readOnly: true description: The date the Product was last updated example: '2023-03-17T18:47:35.560Z' createdOn: type: string format: date-time readOnly: true description: The date the Product was created example: '2023-03-17T18:47:35.560Z' isArchived: type: boolean default: false description: Boolean determining if the Product is set to archived example: false isDraft: type: boolean default: false description: Boolean determining if the Product is set to draft example: false fieldData: description: Contains content-specific details for a product, covering both standard (e.g., title, description) and custom fields tailored to the product setup. type: object properties: name: type: string description: Name of the Product example: T-Shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt description: type: string description: A description of your product example: A plain cotton t-shirt. shippable: type: boolean description: Boolean determining if the Product is shippable example: true sku-properties: type: array description: Variant types to include in SKUs items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green category: type: array description: The category your product belongs to. items: type: string tax-category: type: string description: Product tax class enum: - standard-taxable - standard-exempt - books-religious - books-textbook - clothing - clothing-swimwear - digital-goods - digital-service - drugs-non-prescription - drugs-prescription - food-bottled-water - food-candy - food-groceries - food-prepared - food-soda - food-supplements - magazine-individual - magazine-subscription - service-admission - service-advertising - service-dry-cleaning - service-hairdressing - service-installation - service-miscellaneous - service-parking - service-printing - service-professional - service-repair - service-training default-sku: type: string format: objectid description: The default SKU associated with this product. ec-product-type: description: 'Product types. Enums reflect the following values in order: Physical, Digital, Service, Advanced"' type: string enum: - ff42fee0113744f693a764e3431a9cc2 - f22027db68002190aef89a4a2b7ac8a1 - c599e43b1a1c34d5a323aedf75d3adf6 - b6ccc1830db4b1babeb06a9ac5f6dd76 additionalProperties: type: string description: Custom fields for your product. '400': description: Request body was incorrectly formatted. x-logErrorCode: 400 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: bad_request message: 'Bad Request: Request is malformed' externalReference: details: [] '401': description: Provided access token is invalid or does not have access to requested resource x-logErrorCode: 401 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: not_authorized message: Request not authorized externalReference: details: [] '403': description: Provided access token is valid, but is missing the required scopes. x-logErrorCode: 403 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: missing_scopes message: 'OAuthForbidden: You are missing the following scopes - components:write' externalReference: details: [] '404': description: Requested resource not found x-logErrorCode: 404 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: resource_not_found message: 'Requested resource not found: The site cannot be found' externalReference: details: [] '409': description: The site does not have ecommerce enabled. x-logErrorCode: 409 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: ecommerce_not_enabled message: Ecommerce is not yet initialized externalReference: details: [] '429': description: The rate limit of the provided access_token has been reached. Please have your application respect the X-RateLimit-Remaining header we include on API responses. x-logErrorCode: 429 headers: X-RateLimit-Remaining: description: Contains the number of available requests remaining in the current minute schema: type: number X-RateLimit-Limit: description: Contains your current overall rate limit per minute schema: type: number content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: too_many_requests message: Too many requests externalReference: details: [] '500': description: We had a problem with our server. Try again later. content: application/json: x-logErrorCode: 500 schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: internal_error message: An Internal Error occurred externalReference: details: [] /sites/{site_id}/products/{product_id}/skus: post: x-fern-sdk-group-name: products x-fern-sdk-method-name: create-sku security: - OAuth2: - ecommerce:write operationId: create-skus summary: Webflow Create SKUs description: 'Create additional SKUs to manage every [option and variant of your Product.](https://help.webflow.com/hc/en-us/articles/33961334531347-Create-product-options-and-variants) Creating SKUs through the API will set the product type to `Advanced`, which ensures all Product and SKU fields will be shown to users in the Designer. Required scope | `ecommerce:write` ' tags: - Products & SKUs parameters: - name: site_id in: path description: Unique identifier for a Site example: 580e63e98c9a982ac9b8b741 required: true schema: type: string format: objectid default: - name: product_id in: path description: Unique identifier for a Product example: 580e63fc8c9a982ac9b8b745 required: true schema: type: string format: objectid requestBody: description: The SKUs to add required: true content: application/json: schema: description: The SKU to create required: - skus properties: publishStatus: description: Indicate whether your Product should be set as "staging" or "live" type: string enum: - staging - live default: staging example: staging skus: type: array description: An array of the SKU data your are adding items: description: The SKU object type: object properties: id: type: string readOnly: true format: objectid description: Unique identifier for the Product example: 580e63fc8c9a982ac9b8b745 cmsLocaleId: type: string readOnly: true example: 653ad57de882f528b32e810e description: Identifier for the locale of the CMS item lastPublished: type: string format: date-time readOnly: true description: The date the Product was last published example: '2023-03-17T18:47:35.560Z' lastUpdated: type: string format: date-time readOnly: true description: The date the Product was last updated example: '2023-03-17T18:47:35.560Z' createdOn: type: string format: date-time readOnly: true description: The date the Product was created example: '2023-03-17T18:47:35.560Z' fieldData: description: Standard and Custom fields for a SKU type: object required: - name - slug - price properties: sku-values: type: object description: 'A mapping between SKU properties and their values, represented as key-value pairs. Each key represents a SKU Property ID (e.g. "color") and maps to its corresponding SKU Value ID (e.g. "blue"). This structure defines the specific variant combination for a SKU. ' additionalProperties: type: string example: color: blue size: small name: type: string description: Name of the Product example: Blue T-shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt-blue price: type: object description: price of SKU properties: value: description: Price of SKU isRequired: true type: number example: 2499 unit: type: string isRequired: true description: Currency of Item example: USD currency: type: string description: Currency of Item (alternative representation) example: USD compare-at-price: type: object description: comparison price of SKU properties: value: description: Price of SKU type: number example: 100 unit: type: string description: Currency of Item example: USD ec-sku-billing-method: description: '[Billing method](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#billing-methods)for the SKU' type: string enum: - one-time - subscription ec-sku-subscription-plan: description: '[Subscription plan](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#subscription) for the SKU' type: object properties: interval: type: string description: Interval of subscription renewal enum: - day - week - month - year frequency: type: number description: Frequncy of billing within interval example: 1 trial: type: number description: Number of days of a trial example: 7 plans: readOnly: true type: array items: type: object properties: platform: type: string enum: - stripe description: The platform of the subscription plan id: type: string description: The unique identifier of the plan status: type: string enum: - active - inactive - canceled description: The status of the plan main-image: type: string description: The URL for the main image of the SKU example: https://www.example.com/image.jpg sku: type: string description: A unique identifier for the SKU example: '1234567890' sku-properties: type: array description: The properties of the SKU items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green additionalProperties: type: string description: Custom fields for your SKU. example: id: 66072fb71b89448912e2681c cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2023-03-17T18:47:35.560Z' lastUpdated: '2023-03-17T18:47:35.560Z' createdOn: '2023-03-17T18:47:35.560Z' fieldData: name: Colorful T-shirt - Default slug: colorful-t-shirt-default price: value: 2499 currency: USD unit: USD sku-values: color: red size: small main-image: https://rocketamp-sample-store.myshopify.com/cdn/shop/products/Gildan_2000_Antique_Cherry_Red_Front_1024x1024.jpg?v=1527232987 responses: '200': description: Request was successful content: application/json: schema: type: object required: - skus properties: skus: type: array items: description: The SKU object type: object properties: id: type: string readOnly: true format: objectid description: Unique identifier for the Product example: 580e63fc8c9a982ac9b8b745 cmsLocaleId: type: string readOnly: true example: 653ad57de882f528b32e810e description: Identifier for the locale of the CMS item lastPublished: type: string format: date-time readOnly: true description: The date the Product was last published example: '2023-03-17T18:47:35.560Z' lastUpdated: type: string format: date-time readOnly: true description: The date the Product was last updated example: '2023-03-17T18:47:35.560Z' createdOn: type: string format: date-time readOnly: true description: The date the Product was created example: '2023-03-17T18:47:35.560Z' fieldData: description: Standard and Custom fields for a SKU type: object required: - name - slug - price properties: sku-values: type: object description: 'A mapping between SKU properties and their values, represented as key-value pairs. Each key represents a SKU Property ID (e.g. "color") and maps to its corresponding SKU Value ID (e.g. "blue"). This structure defines the specific variant combination for a SKU. ' additionalProperties: type: string example: color: blue size: small name: type: string description: Name of the Product example: Blue T-shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt-blue price: type: object description: price of SKU properties: value: description: Price of SKU isRequired: true type: number example: 2499 unit: type: string isRequired: true description: Currency of Item example: USD currency: type: string description: Currency of Item (alternative representation) example: USD compare-at-price: type: object description: comparison price of SKU properties: value: description: Price of SKU type: number example: 100 unit: type: string description: Currency of Item example: USD ec-sku-billing-method: description: '[Billing method](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#billing-methods)for the SKU' type: string enum: - one-time - subscription ec-sku-subscription-plan: description: '[Subscription plan](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#subscription) for the SKU' type: object properties: interval: type: string description: Interval of subscription renewal enum: - day - week - month - year frequency: type: number description: Frequncy of billing within interval example: 1 trial: type: number description: Number of days of a trial example: 7 plans: readOnly: true type: array items: type: object properties: platform: type: string enum: - stripe description: The platform of the subscription plan id: type: string description: The unique identifier of the plan status: type: string enum: - active - inactive - canceled description: The status of the plan main-image: type: string description: The URL for the main image of the SKU example: https://www.example.com/image.jpg sku: type: string description: A unique identifier for the SKU example: '1234567890' sku-properties: type: array description: The properties of the SKU items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green additionalProperties: type: string description: Custom fields for your SKU. example: id: 66072fb71b89448912e2681c cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2023-03-17T18:47:35.560Z' lastUpdated: '2023-03-17T18:47:35.560Z' createdOn: '2023-03-17T18:47:35.560Z' fieldData: name: Colorful T-shirt - Default slug: colorful-t-shirt-default price: value: 2499 currency: USD unit: USD sku-values: color: red size: small main-image: https://rocketamp-sample-store.myshopify.com/cdn/shop/products/Gildan_2000_Antique_Cherry_Red_Front_1024x1024.jpg?v=1527232987 '400': description: Request body was incorrectly formatted. x-logErrorCode: 400 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: bad_request message: 'Bad Request: Request is malformed' externalReference: details: [] '401': description: Provided access token is invalid or does not have access to requested resource x-logErrorCode: 401 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: not_authorized message: Request not authorized externalReference: details: [] '403': description: Provided access token is valid, but is missing the required scopes. x-logErrorCode: 403 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: missing_scopes message: 'OAuthForbidden: You are missing the following scopes - components:write' externalReference: details: [] '404': description: Requested resource not found x-logErrorCode: 404 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: resource_not_found message: 'Requested resource not found: The site cannot be found' externalReference: details: [] '409': description: The site does not have ecommerce enabled. x-logErrorCode: 409 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: ecommerce_not_enabled message: Ecommerce is not yet initialized externalReference: details: [] '429': description: The rate limit of the provided access_token has been reached. Please have your application respect the X-RateLimit-Remaining header we include on API responses. x-logErrorCode: 429 headers: X-RateLimit-Remaining: description: Contains the number of available requests remaining in the current minute schema: type: number X-RateLimit-Limit: description: Contains your current overall rate limit per minute schema: type: number content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: too_many_requests message: Too many requests externalReference: details: [] '500': description: We had a problem with our server. Try again later. content: application/json: x-logErrorCode: 500 schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: internal_error message: An Internal Error occurred externalReference: details: [] /sites/{site_id}/products/{product_id}/skus/{sku_id}: patch: x-fern-sdk-group-name: products x-fern-sdk-method-name: update-sku security: - OAuth2: - ecommerce:write operationId: update-sku summary: Webflow Update SKU description: 'Update a specified SKU. Updating an existing SKU will set the Product type to `Advanced`, which ensures all Product and SKU fields will be shown to users in the Designer. Required scope | `ecommerce:write` ' tags: - Products & SKUs parameters: - name: site_id in: path description: Unique identifier for a Site example: 580e63e98c9a982ac9b8b741 required: true schema: type: string format: objectid default: - name: product_id in: path description: Unique identifier for a Product example: 580e63fc8c9a982ac9b8b745 required: true schema: type: string format: objectid - name: sku_id in: path description: Unique identifier for a SKU example: 5e8518516e147040726cc415 required: true schema: type: string format: objectid requestBody: description: The SKU to update required: true content: application/json: schema: description: The updated SKU required: - sku properties: publishStatus: description: Indicate whether your Product should be set as "staging" or "live" type: string enum: - staging - live default: staging example: staging sku: description: The SKU object type: object properties: id: type: string readOnly: true format: objectid description: Unique identifier for the Product example: 580e63fc8c9a982ac9b8b745 cmsLocaleId: type: string readOnly: true example: 653ad57de882f528b32e810e description: Identifier for the locale of the CMS item lastPublished: type: string format: date-time readOnly: true description: The date the Product was last published example: '2023-03-17T18:47:35.560Z' lastUpdated: type: string format: date-time readOnly: true description: The date the Product was last updated example: '2023-03-17T18:47:35.560Z' createdOn: type: string format: date-time readOnly: true description: The date the Product was created example: '2023-03-17T18:47:35.560Z' fieldData: description: Standard and Custom fields for a SKU type: object required: - name - slug - price properties: sku-values: type: object description: 'A mapping between SKU properties and their values, represented as key-value pairs. Each key represents a SKU Property ID (e.g. "color") and maps to its corresponding SKU Value ID (e.g. "blue"). This structure defines the specific variant combination for a SKU. ' additionalProperties: type: string example: color: blue size: small name: type: string description: Name of the Product example: Blue T-shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt-blue price: type: object description: price of SKU properties: value: description: Price of SKU isRequired: true type: number example: 2499 unit: type: string isRequired: true description: Currency of Item example: USD currency: type: string description: Currency of Item (alternative representation) example: USD compare-at-price: type: object description: comparison price of SKU properties: value: description: Price of SKU type: number example: 100 unit: type: string description: Currency of Item example: USD ec-sku-billing-method: description: '[Billing method](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#billing-methods)for the SKU' type: string enum: - one-time - subscription ec-sku-subscription-plan: description: '[Subscription plan](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#subscription) for the SKU' type: object properties: interval: type: string description: Interval of subscription renewal enum: - day - week - month - year frequency: type: number description: Frequncy of billing within interval example: 1 trial: type: number description: Number of days of a trial example: 7 plans: readOnly: true type: array items: type: object properties: platform: type: string enum: - stripe description: The platform of the subscription plan id: type: string description: The unique identifier of the plan status: type: string enum: - active - inactive - canceled description: The status of the plan main-image: type: string description: The URL for the main image of the SKU example: https://www.example.com/image.jpg sku: type: string description: A unique identifier for the SKU example: '1234567890' sku-properties: type: array description: The properties of the SKU items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green additionalProperties: type: string description: Custom fields for your SKU. example: id: 66072fb71b89448912e2681c cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2023-03-17T18:47:35.560Z' lastUpdated: '2023-03-17T18:47:35.560Z' createdOn: '2023-03-17T18:47:35.560Z' fieldData: name: Colorful T-shirt - Default slug: colorful-t-shirt-default price: value: 2499 currency: USD unit: USD sku-values: color: red size: small main-image: https://rocketamp-sample-store.myshopify.com/cdn/shop/products/Gildan_2000_Antique_Cherry_Red_Front_1024x1024.jpg?v=1527232987 responses: '200': description: Request was successful content: application/json: schema: description: The SKU object type: object properties: id: type: string readOnly: true format: objectid description: Unique identifier for the Product example: 580e63fc8c9a982ac9b8b745 cmsLocaleId: type: string readOnly: true example: 653ad57de882f528b32e810e description: Identifier for the locale of the CMS item lastPublished: type: string format: date-time readOnly: true description: The date the Product was last published example: '2023-03-17T18:47:35.560Z' lastUpdated: type: string format: date-time readOnly: true description: The date the Product was last updated example: '2023-03-17T18:47:35.560Z' createdOn: type: string format: date-time readOnly: true description: The date the Product was created example: '2023-03-17T18:47:35.560Z' fieldData: description: Standard and Custom fields for a SKU type: object required: - name - slug - price properties: sku-values: type: object description: 'A mapping between SKU properties and their values, represented as key-value pairs. Each key represents a SKU Property ID (e.g. "color") and maps to its corresponding SKU Value ID (e.g. "blue"). This structure defines the specific variant combination for a SKU. ' additionalProperties: type: string example: color: blue size: small name: type: string description: Name of the Product example: Blue T-shirt slug: type: string description: URL structure of the Product in your site. example: t-shirt-blue price: type: object description: price of SKU properties: value: description: Price of SKU isRequired: true type: number example: 2499 unit: type: string isRequired: true description: Currency of Item example: USD currency: type: string description: Currency of Item (alternative representation) example: USD compare-at-price: type: object description: comparison price of SKU properties: value: description: Price of SKU type: number example: 100 unit: type: string description: Currency of Item example: USD ec-sku-billing-method: description: '[Billing method](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#billing-methods)for the SKU' type: string enum: - one-time - subscription ec-sku-subscription-plan: description: '[Subscription plan](https://help.webflow.com/hc/en-us/articles/33961432087955-Add-and-manage-products-and-categories#subscription) for the SKU' type: object properties: interval: type: string description: Interval of subscription renewal enum: - day - week - month - year frequency: type: number description: Frequncy of billing within interval example: 1 trial: type: number description: Number of days of a trial example: 7 plans: readOnly: true type: array items: type: object properties: platform: type: string enum: - stripe description: The platform of the subscription plan id: type: string description: The unique identifier of the plan status: type: string enum: - active - inactive - canceled description: The status of the plan main-image: type: string description: The URL for the main image of the SKU example: https://www.example.com/image.jpg sku: type: string description: A unique identifier for the SKU example: '1234567890' sku-properties: type: array description: The properties of the SKU items: type: object description: A variant/option type for a SKU required: - id - name - enum properties: id: type: string description: Unique identifier for a collection of Product Variants default: example: Color name: type: string description: Name of the collection of Product Variants example: Color enum: description: The individual Product variants that are contained within the collection type: array items: description: Enumerated Product variants/Options for the SKU type: object required: - id - name - slug properties: id: type: string description: Unique identifier for a Product variant/Option default: examples: - royal-blue - crimson-red - forrest-green name: type: string description: Name of the Product variant/Option examples: - Royal Blue - Crimson Red - Forrest Green slug: type: string description: Slug for the Product variant/Option in the Site URL structure examples: - royal-blue - crimson-red - forrest-green additionalProperties: type: string description: Custom fields for your SKU. example: id: 66072fb71b89448912e2681c cmsLocaleId: 653ad57de882f528b32e810e lastPublished: '2023-03-17T18:47:35.560Z' lastUpdated: '2023-03-17T18:47:35.560Z' createdOn: '2023-03-17T18:47:35.560Z' fieldData: name: Colorful T-shirt - Default slug: colorful-t-shirt-default price: value: 2499 currency: USD unit: USD sku-values: color: red size: small main-image: https://rocketamp-sample-store.myshopify.com/cdn/shop/products/Gildan_2000_Antique_Cherry_Red_Front_1024x1024.jpg?v=1527232987 required: - id - lastPublished - lastUpdated - createdOn - fieldData '400': description: Request body was incorrectly formatted. x-logErrorCode: 400 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: bad_request message: 'Bad Request: Request is malformed' externalReference: details: [] '401': description: Provided access token is invalid or does not have access to requested resource x-logErrorCode: 401 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: not_authorized message: Request not authorized externalReference: details: [] '403': description: Provided access token is valid, but is missing the required scopes. x-logErrorCode: 403 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: missing_scopes message: 'OAuthForbidden: You are missing the following scopes - components:write' externalReference: details: [] '404': description: Requested resource not found x-logErrorCode: 404 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: resource_not_found message: 'Requested resource not found: The site cannot be found' externalReference: details: [] '409': description: The site does not have ecommerce enabled. x-logErrorCode: 409 content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: ecommerce_not_enabled message: Ecommerce is not yet initialized externalReference: details: [] '429': description: The rate limit of the provided access_token has been reached. Please have your application respect the X-RateLimit-Remaining header we include on API responses. x-logErrorCode: 429 headers: X-RateLimit-Remaining: description: Contains the number of available requests remaining in the current minute schema: type: number X-RateLimit-Limit: description: Contains your current overall rate limit per minute schema: type: number content: application/json: schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: too_many_requests message: Too many requests externalReference: details: [] '500': description: We had a problem with our server. Try again later. content: application/json: x-logErrorCode: 500 schema: type: object example: code: not_authorized message: Request not authorized externalReference: details: [] properties: code: type: string description: Error code example: not_authorized enum: - bad_request - collection_not_found - conflict - duplicate_collection - duplicate_user_email - ecommerce_not_enabled - forbidden - forms_require_republish - incompatible_webhook_filter - internal_error - invalid_auth_version - invalid_credentials - invalid_domain - invalid_user_email - item_not_found - missing_scopes - no_domains - not_authorized - not_enterprise_plan_site - not_enterprise_plan_workspace - order_not_found - resource_not_found - too_many_requests - unsupported_version - unsupported_webhook_trigger_type - user_limit_reached - user_not_found - users_not_enabled - validation_error message: type: string description: Error message example: Request not authorized externalReference: type: string description: Link to more information example: '' details: type: array description: Array of errors items: - type: string example: Invalid email address description: Error message - type: object example: field: email message: Invalid email address description: Error message example: [] example: code: internal_error message: An Internal Error occurred externalReference: details: [] components: securitySchemes: OAuth2: type: oauth2 flows: authorizationCode: scopes: authorized_user:read: read details about the authorized user assets:read: read assets on the site assets:write: write assets on a site cms:read: read collections and items for a site cms:write: write to collections and items for a site comments:read: read comments on the site comments:write: write comments on the site custom_code:read: read custom code on the site custom_code:write: modify custom code on the site ecommerce:read: read ecommerce data ecommerce:write: edit ecommerce data forms:read: read form data forms:write: write form data pages:read: read pages on the site pages:write: write to pages on the site components:read: read component data components:write: write component data sites:read: read sites on the site sites:write: modify pages on the site users:read: read users on the site site_activity:read: read site activity logs users:write: modify users on the site workspace:read: read workspace resource data workspace:write: write workspace resource data site_config:read: read site configuration data site_config:write: write site configuration data authorizationUrl: https://webflow.com/oauth/authorize tokenUrl: https://api.webflow.com/oauth/token ApiKey: type: http scheme: bearer x-fern-token-variable-name: access_token