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