Attributes define reusable product choices such as Color and Size. Each attribute has a standard, swatch, or image sub type and at least one option. A variable product refers to attribute IDs and each variant refers to its selected option IDs.
Reads require read_products; writes require write_products. Binding a new or changed option image by file_id also requires read_files. Attribute and option translations have separate endpoints and require translation scopes in addition to product scopes. The limits response gives the current limits for the store; the response below is an example.
Endpoints#
Attribute limits
Fetch Attribute limits, option limits, and list constraints.
Returns the current store's attribute and option limits, including list and reorder constraints. The sample response illustrates the shape; read this endpoint for the limits that apply to your store. max_per_store is this store's plan cap, count is how many exist now, and usage is the localized label.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
List attributes
List product attributes for the store.
Returns paginated product attributes, at most list_max_limit (100) per page. By default each attribute carries options_count and a preview of its first 6 options; send include=options for every option (up to 100 per attribute). A page that would exceed the 512 KiB reply budget returns LIST_RESPONSE_TOO_LARGE; request it again with a lower limit (error.params.fit estimates how many fit). Use sub_type to filter to standard, swatch, or image attributes; use in_use to filter attributes currently used by variants. total counts matching results; store_total counts all attributes in the store. Pass returned cursors unchanged and reset pagination when filters or sorting change. Get attribute always returns every option.
Query parameters
| Name | Type | Description |
|---|---|---|
cursor
|
string |
Opaque cursor returned as |
limit
|
integer |
Page size, 1-100 ( |
search
|
string |
Search attributes by name or slug. |
include
|
string |
|
sub_type
|
string |
Filter by sub type: standard, swatch, or image. |
in_use
|
boolean |
Filter by whether the attribute is used by variants. |
sort_by
|
string |
Sort field from the Attribute list contract.
Allowed values
namecreated_atupdated_at |
sort_direction
|
string |
Sort direction from the Attribute list contract.
Allowed values
ascdesc |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400ATTRIBUTE_LIST_INVALID_LIMITLimit must be within the documented list range.
-
400ATTRIBUTE_SEARCH_TOO_LONGSearch exceeds the configured maximum length.
-
400ATTRIBUTE_SUB_TYPE_INVALIDSub_type must be standard, swatch, or image.
-
400ATTRIBUTE_LIST_INVALID_SORT_BYSort_by is not one of the documented fields.
-
400ATTRIBUTE_LIST_INVALID_SORT_DIRECTIONSort_direction is not asc or desc.
-
400INVALID_INPUTCursor is malformed or does not match the current list state, in_use is not true or false, or include is not
options. -
400LIST_RESPONSE_TOO_LARGEThe page would be larger than the 512 KiB reply budget (long descriptions or many options). Request it again with a lower
limit;error.params.fitestimates how many rows fit.
Search attributes
Search attributes for picker-style suggestions.
Returns lightweight attribute suggestions by query. This endpoint is intended for pickers and simple selection UIs.
Query parameters
| Name | Type | Description |
|---|---|---|
q
|
string |
Search query. |
limit
|
integer |
Suggestion count. |
offset
|
integer |
Result offset. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400ATTRIBUTE_LIST_INVALID_LIMITLimit must be within the documented suggestion range.
-
400ATTRIBUTE_SEARCH_TOO_LONGQ exceeds the configured maximum length.
-
400INVALID_INPUTOffset is not a non-negative integer.
Get an attribute
Fetch one attribute by id.
Returns the attribute and its nested options if it belongs to the token's store.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
integer |
Attribute id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_ATTRIBUTE_IDAttribute id must be an integer.
-
404ATTRIBUTE_NOT_FOUNDAttribute does not exist in this store.
Create an attribute
Create an attribute with options.
Creates a product attribute. name, sub_type, and at least one option are required. slug is optional on create and is generated from the name when omitted. sub_type controls option shape: standard uses labels/values, swatch options require color, and image options require file_id. Non-empty option file_id values must point to upload files in the same store and require read_files in addition to write_products.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Idempotency-Key
|
string |
Optional key, up to 255 characters, that makes this create safe to retry. Repeating the request with the same key and body within 24 hours returns the original response instead of creating again; the same key with a different body returns |
Body parameters
| Name | Type | Description |
|---|---|---|
name
required
|
string |
Attribute name. |
slug
|
string |
Optional slug. Omit to generate from name. |
description
|
string |
Optional plain-text description. |
sub_type
required
|
string |
One of |
sort_order
|
integer |
Store-wide display order. |
options
required
|
array<object> |
Attribute options. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON or does not match the expected shape.
-
400ATTRIBUTE_NAME_REQUIREDName is empty after normalization.
-
400ATTRIBUTE_NAME_INVALID_CHARSName contains unsupported control characters.
-
400ATTRIBUTE_NAME_TOO_LONGName exceeds the Attribute contract max length.
-
400ATTRIBUTE_SLUG_INVALID_FORMATSlug is not valid for Attribute URLs.
-
400ATTRIBUTE_SLUG_TOO_LONGSlug exceeds the Attribute contract max length.
-
400ATTRIBUTE_SLUG_RESERVEDSlug is reserved for storefront query parameters.
-
400ATTRIBUTE_SLUG_GENERATION_FAILEDA slug could not be generated from the supplied name.
-
400ATTRIBUTE_UNIQUE_SLUG_GENERATION_FAILEDA unique generated slug could not be allocated.
-
400ATTRIBUTE_DESCRIPTION_INVALID_CHARSDescription contains unsupported control characters.
-
400ATTRIBUTE_DESCRIPTION_TOO_LONGDescription exceeds the Attribute contract max length.
-
400ATTRIBUTE_SUB_TYPE_INVALIDSub type is not standard, swatch, or image.
-
400ATTRIBUTE_SORT_ORDER_NEGATIVESort order must be zero or greater.
-
400ATTRIBUTE_SORT_ORDER_TOO_LARGESort order exceeds the contract maximum.
-
400ATTRIBUTE_OPTIONS_REQUIREDAt least one option is required.
-
400ATTRIBUTE_OPTIONS_TOO_MANYOption count exceeds the contract max per attribute.
-
400ATTRIBUTE_OPTION_LABEL_INVALID_CHARSAn option label contains unsupported control characters.
-
400ATTRIBUTE_OPTION_LABEL_TOO_LONGOption label exceeds the contract max length.
-
400ATTRIBUTE_OPTION_LABEL_DUPLICATEOption labels must be unique within the attribute.
-
400ATTRIBUTE_OPTION_VALUE_TOO_LONGOption value exceeds the contract max length.
-
400ATTRIBUTE_OPTION_VALUE_INVALID_FORMATOption value is not a valid filter identifier.
-
400ATTRIBUTE_OPTION_VALUE_GENERATION_FAILEDAn option value could not be generated from its label.
-
400ATTRIBUTE_OPTION_VALUE_DUPLICATEOption values must be unique within the attribute.
-
400ATTRIBUTE_OPTION_SORT_ORDER_NEGATIVEOption sort order must be zero or greater.
-
400ATTRIBUTE_OPTION_SORT_ORDER_TOO_LARGEOption sort order exceeds the contract maximum.
-
400ATTRIBUTE_OPTION_COLOR_REQUIREDSwatch options require a color.
-
400ATTRIBUTE_OPTION_COLOR_INVALID_FORMATOption color must be #RRGGBB.
-
400ATTRIBUTE_OPTION_IMAGE_REQUIREDImage options require a file_id.
-
400INVALID_INPUTAn option file_id is malformed, is not an upload image, or an existing option id is invalid.
-
403STORE_API_SCOPE_REQUIREDBinding a new or changed option file_id requires read_files scope in addition to write_products.
-
404NOT_FOUNDAn option file_id does not reference an upload image in this store.
-
409ATTRIBUTE_DUPLICATEName or slug already exists in this store.
-
400ATTRIBUTE_PLAN_LIMIT_REACHEDThe store has as many attributes as its plan allows; the message states the maximum. Fetch
/attributes/limitsfor the store's current cap and usage. -
400CATALOG_REQUEST_KEY_TOO_LONGIdempotency-Keyis longer than 255 characters. -
403PLAN_UNKNOWNThe store has no active plan, so nothing can be created until one is chosen.
-
409CATALOG_REQUEST_KEY_CONFLICTIdempotency-Keywas already used with a different request body.
Update an attribute
Update an attribute and replace its option set.
Updates provided parent fields and replaces the complete option set. Omitted parent fields are left unchanged. options is required, must contain at least one option, and is always a full-array replacement: existing options keep their id and id: 0 creates a new option. expected_revision is required: copy revision from Get attribute so a stale replacement returns ATTRIBUTE_VERSION_STALE. sub_type is immutable after create and must match the existing value. A slug change is blocked while a product or storefront filter uses the attribute; replace it in those products and remove its filter first. Removing an option used by variants is blocked. An option-label change that would make an automatically generated variant title exceed its limit is rejected. Binding a new or changed option file_id requires read_files in addition to write_products; sending the unchanged file id on the same option does not.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
integer |
Attribute id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
name
|
string |
Attribute name. |
slug
|
string |
Optional slug. Omit to keep the current slug; send an empty string to regenerate it from the effective name. Changes are blocked while products or storefront filters use this attribute. |
description
|
string |
Optional plain-text description. |
sub_type
required
|
string |
Send the existing |
sort_order
|
integer |
Store-wide display order. |
options
required
|
array<object> |
Required full replacement option array with at least one option. Existing options include their id; new options use |
expected_revision
required
|
string |
Copy |
Errors
-
400STORE_API_INVALID_ATTRIBUTE_IDAttribute id must be an integer.
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON or does not match the expected shape.
-
400ATTRIBUTE_NAME_REQUIREDName is empty after normalization.
-
400ATTRIBUTE_NAME_INVALID_CHARSName contains unsupported control characters.
-
400ATTRIBUTE_NAME_TOO_LONGName exceeds the Attribute contract max length.
-
400ATTRIBUTE_SLUG_INVALID_FORMATSlug is not valid for Attribute URLs.
-
400ATTRIBUTE_SLUG_TOO_LONGSlug exceeds the Attribute contract max length.
-
400ATTRIBUTE_SLUG_RESERVEDSlug is reserved for storefront query parameters.
-
400ATTRIBUTE_SLUG_GENERATION_FAILEDA slug could not be generated from the supplied name.
-
400ATTRIBUTE_UNIQUE_SLUG_GENERATION_FAILEDA unique generated slug could not be allocated.
-
400ATTRIBUTE_DESCRIPTION_INVALID_CHARSDescription contains unsupported control characters.
-
400ATTRIBUTE_DESCRIPTION_TOO_LONGDescription exceeds the Attribute contract max length.
-
400ATTRIBUTE_SUB_TYPE_INVALIDSub type is not standard, swatch, or image.
-
400ATTRIBUTE_SORT_ORDER_NEGATIVESort order must be zero or greater.
-
400ATTRIBUTE_SORT_ORDER_TOO_LARGESort order exceeds the contract maximum.
-
400ATTRIBUTE_OPTIONS_REQUIREDAt least one option is required.
-
400ATTRIBUTE_OPTIONS_TOO_MANYOption count exceeds the contract max per attribute.
-
400ATTRIBUTE_OPTION_LABEL_INVALID_CHARSAn option label contains unsupported control characters.
-
400ATTRIBUTE_OPTION_LABEL_TOO_LONGOption label exceeds the contract max length.
-
400ATTRIBUTE_OPTION_LABEL_DUPLICATEOption labels must be unique within the attribute.
-
400ATTRIBUTE_OPTION_VALUE_TOO_LONGOption value exceeds the contract max length.
-
400ATTRIBUTE_OPTION_VALUE_INVALID_FORMATOption value is not a valid filter identifier.
-
400ATTRIBUTE_OPTION_VALUE_GENERATION_FAILEDAn option value could not be generated from its label.
-
400ATTRIBUTE_OPTION_VALUE_DUPLICATEOption values must be unique within the attribute.
-
400ATTRIBUTE_OPTION_SORT_ORDER_NEGATIVEOption sort order must be zero or greater.
-
400ATTRIBUTE_OPTION_SORT_ORDER_TOO_LARGEOption sort order exceeds the contract maximum.
-
400ATTRIBUTE_OPTION_COLOR_REQUIREDSwatch options require a color.
-
400ATTRIBUTE_OPTION_COLOR_INVALID_FORMATOption color must be #RRGGBB.
-
400ATTRIBUTE_OPTION_IMAGE_REQUIREDImage options require a file_id.
-
400INVALID_INPUTAn option file_id is malformed, is not an upload image, or an existing option id is invalid.
-
403STORE_API_SCOPE_REQUIREDBinding a new or changed option file_id requires read_files scope in addition to write_products.
-
404NOT_FOUNDAn option file_id does not reference an upload image in this store.
-
409ATTRIBUTE_DUPLICATEName or slug already exists in this store.
-
400ATTRIBUTE_REVISION_REQUIREDexpected_revision is missing.
-
409ATTRIBUTE_VERSION_STALEThe attribute changed after the supplied revision was read.
-
409ATTRIBUTE_SLUG_IN_USEProducts or a storefront filter still use this attribute.
-
400PRODUCT_VARIANT_TITLE_TOO_LONG_PLAINAn option-label change would make an automatically generated variant title too long.
-
400ATTRIBUTE_SUB_TYPE_IMMUTABLESub type cannot be changed after creation.
-
400ATTRIBUTE_OPTION_ID_INVALIDAn update option id is negative.
-
400ATTRIBUTE_OPTION_REORDER_DUPLICATE_IDThe replacement contains the same existing option id more than once.
-
400ATTRIBUTE_OPTION_REORDER_UNKNOWN_IDSAn existing option id does not belong to this attribute.
-
404ATTRIBUTE_NOT_FOUNDAttribute does not exist in this store.
-
409ATTRIBUTE_OPTIONS_IN_USEAn option removed by the update is still used by variants.
-
409TRANSLATION_SOURCE_FIELD_HAS_TRANSLATIONSDescription cannot be cleared while translated values exist.
Delete an attribute
Delete an attribute.
Deletes an attribute only when no product variants or storefront filter use it. Replace it in affected products and remove its filter before deleting. When deletion is allowed, its options and the translations for both the attribute and those options are deleted in the same transaction. The attribute delete webhook includes the removed option summaries.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
integer |
Attribute id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Errors
-
400STORE_API_INVALID_ATTRIBUTE_IDAttribute id must be an integer.
-
404ATTRIBUTE_NOT_FOUNDAttribute does not exist in this store.
-
409ATTRIBUTE_IN_USEAttribute is used by variants and cannot be deleted.
-
409ATTRIBUTE_FILTER_IN_USEA storefront filter uses this attribute.
Bulk delete attributes
Delete multiple attributes.
Send store-scoped integer attribute ids in attribute_ids. Attributes that are missing, concurrently changed, used by variants, or used by a storefront filter appear in failed; the others appear in deleted. Deleting an attribute also deletes its options and both levels of translations in the same transaction. The envelope succeeds when the batch itself is valid, even when individual ids fail; inspect both result arrays.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
attribute_ids
required
|
array<integer> |
Store-scoped integer attribute ids to delete. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON or does not match the expected shape.
-
400ATTRIBUTE_BULK_NO_IDSNo attribute ids were provided.
-
400ATTRIBUTE_BULK_DELETE_TOO_MANYBatch exceeds the Attribute bulk delete cap.
Reorder attributes
Set the order of selected attributes.
Reorders the supplied attribute ids within their existing positions. Omitted attributes stay in place; all positions are normalized to a unique consecutive order. Every supplied id must belong to the store and the list cannot contain duplicates.
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
attribute_ids
required
|
array<integer> |
Attribute ids in display order. |
Errors
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON or does not match the expected shape.
-
400ATTRIBUTE_REORDER_IDS_REQUIREDAt least one attribute id is required.
-
400ATTRIBUTE_REORDER_DUPLICATE_IDThe reorder list contains duplicate attribute ids.
-
400ATTRIBUTE_REORDER_UNKNOWN_IDSOne or more attribute ids do not belong to this store.
Reorder attribute options
Set the order of selected options within one attribute.
Reorders the supplied option ids within their existing positions. Omitted options stay in place; all positions are normalized to a unique consecutive order. Every supplied id must belong to the attribute and the list cannot contain duplicates.
Path parameters
| Name | Type | Description |
|---|---|---|
id
required
|
integer |
Attribute id. |
Headers
| Name | Type | Description |
|---|---|---|
Authorization
required
|
string |
Bearer Store API token. |
Body parameters
| Name | Type | Description |
|---|---|---|
option_ids
required
|
array<integer> |
Option ids in display order. |
Errors
-
400STORE_API_INVALID_ATTRIBUTE_IDAttribute id must be an integer.
-
400STORE_API_INVALID_REQUEST_BODYRequest body is not valid JSON or does not match the expected shape.
-
400ATTRIBUTE_OPTION_REORDER_IDS_REQUIREDAt least one option id is required.
-
400ATTRIBUTE_OPTION_REORDER_DUPLICATE_IDThe reorder list contains duplicate option ids.
-
400ATTRIBUTE_OPTION_REORDER_UNKNOWN_IDSOne or more option ids do not belong to this attribute.
-
404ATTRIBUTE_NOT_FOUNDAttribute does not exist in this store.
Fields#
Field |
Type |
Create |
Update |
Required |
Translatable |
|---|---|---|---|---|---|
|
text |
Yes |
Yes |
create |
Yes |
|
slug |
Yes |
Yes |
No |
|
|
textarea |
Yes |
Yes |
Yes |
|
|
select |
Yes |
Yes |
create, update |
No |
|
integer |
Yes |
Yes |
No |
|
|
attribute_options |
Yes |
Yes |
create, update |
No |
|
integer |
No |
No |
No |
|
|
boolean |
No |
No |
No |
|
|
datetime |
No |
No |
No |
|
|
datetime |
No |
No |
No |
Webhook events#
Subscribe to these events to keep your integration in sync with attributes. Each event shows the required Store API scope and store permission, the available payload fields, and an example payload. Subscription setup is validated against those permissions; delivery is always restricted to the subscription's store.
Attribute created
Fired when a product attribute is created.
Payload fields
| Field | Type | Description |
|---|---|---|
attribute.id |
integer |
Always present |
attribute.store_seq_id |
integer |
Selectable in the Payload builder |
attribute.name |
string |
Selectable in the Payload builder |
attribute.slug |
string |
Selectable in the Payload builder |
attribute.description |
string |
Selectable in the Payload builder |
attribute.sub_type |
string |
Selectable in the Payload builder |
attribute.sort_order |
integer |
Selectable in the Payload builder |
attribute.in_use |
boolean |
Selectable in the Payload builder |
attribute.variant_usage_count |
integer |
Selectable in the Payload builder |
attribute.created_at |
string |
Selectable in the Payload builder |
attribute.updated_at |
string |
Selectable in the Payload builder |
attribute.options[*].id |
integer |
Always present |
attribute.options[*].store_seq_id |
integer |
Selectable in the Payload builder |
attribute.options[*].attribute_id |
integer |
Selectable in the Payload builder |
attribute.options[*].label |
string |
Selectable in the Payload builder |
attribute.options[*].value |
string |
Selectable in the Payload builder |
attribute.options[*].color |
string |
Selectable in the Payload builder |
attribute.options[*].file_id |
string |
Selectable in the Payload builder |
attribute.options[*].file_url |
string |
Selectable in the Payload builder |
attribute.options[*].file_cdn_url |
string |
Selectable in the Payload builder |
attribute.options[*].sort_order |
integer |
Selectable in the Payload builder |
attribute.options[*].created_at |
string |
Selectable in the Payload builder |
Attribute updated
Fired when a product attribute is updated.
Payload fields
| Field | Type | Description |
|---|---|---|
attribute.id |
integer |
Always present |
attribute.store_seq_id |
integer |
Selectable in the Payload builder |
attribute.name |
string |
Selectable in the Payload builder |
attribute.slug |
string |
Selectable in the Payload builder |
attribute.description |
string |
Selectable in the Payload builder |
attribute.sub_type |
string |
Selectable in the Payload builder |
attribute.sort_order |
integer |
Selectable in the Payload builder |
attribute.in_use |
boolean |
Selectable in the Payload builder |
attribute.variant_usage_count |
integer |
Selectable in the Payload builder |
attribute.created_at |
string |
Selectable in the Payload builder |
attribute.updated_at |
string |
Selectable in the Payload builder |
attribute.options[*].id |
integer |
Always present |
attribute.options[*].store_seq_id |
integer |
Selectable in the Payload builder |
attribute.options[*].attribute_id |
integer |
Selectable in the Payload builder |
attribute.options[*].label |
string |
Selectable in the Payload builder |
attribute.options[*].value |
string |
Selectable in the Payload builder |
attribute.options[*].color |
string |
Selectable in the Payload builder |
attribute.options[*].file_id |
string |
Selectable in the Payload builder |
attribute.options[*].file_url |
string |
Selectable in the Payload builder |
attribute.options[*].file_cdn_url |
string |
Selectable in the Payload builder |
attribute.options[*].sort_order |
integer |
Selectable in the Payload builder |
attribute.options[*].created_at |
string |
Selectable in the Payload builder |
Attribute deleted
Fired when a product attribute is deleted. Payload carries the attribute plus the options that cascaded with it.
Payload fields
| Field | Type | Description |
|---|---|---|
attribute.id |
integer |
Always present |
attribute.store_seq_id |
integer |
Selectable in the Payload builder |
attribute.name |
string |
Selectable in the Payload builder |
attribute.slug |
string |
Selectable in the Payload builder |
attribute.sub_type |
string |
Selectable in the Payload builder |
attribute.options[*].id |
integer |
Always present |
attribute.options[*].store_seq_id |
integer |
Selectable in the Payload builder |
attribute.options[*].label |
string |
Selectable in the Payload builder |
attribute.options[*].value |
string |
Selectable in the Payload builder |
Attributes reordered
Fired when the sort order of attributes is changed. Payload carries the ordered id list.
Payload fields
| Field | Type | Description |
|---|---|---|
attribute_ids |
array |
Always present |
Attribute option created
Fired when a new option is added to an attribute.
Payload fields
| Field | Type | Description |
|---|---|---|
option.id |
integer |
Always present |
option.store_seq_id |
integer |
Selectable in the Payload builder |
option.attribute_id |
integer |
Selectable in the Payload builder |
option.label |
string |
Selectable in the Payload builder |
option.value |
string |
Selectable in the Payload builder |
option.color |
string |
Selectable in the Payload builder |
option.file_id |
string |
Selectable in the Payload builder |
option.file_url |
string |
Selectable in the Payload builder |
option.file_cdn_url |
string |
Selectable in the Payload builder |
option.sort_order |
integer |
Selectable in the Payload builder |
option.created_at |
string |
Selectable in the Payload builder |
Attribute option updated
Fired when an existing attribute option is updated.
Payload fields
| Field | Type | Description |
|---|---|---|
option.id |
integer |
Always present |
option.store_seq_id |
integer |
Selectable in the Payload builder |
option.attribute_id |
integer |
Selectable in the Payload builder |
option.label |
string |
Selectable in the Payload builder |
option.value |
string |
Selectable in the Payload builder |
option.color |
string |
Selectable in the Payload builder |
option.file_id |
string |
Selectable in the Payload builder |
option.file_url |
string |
Selectable in the Payload builder |
option.file_cdn_url |
string |
Selectable in the Payload builder |
option.sort_order |
integer |
Selectable in the Payload builder |
option.created_at |
string |
Selectable in the Payload builder |
Attribute option deleted
Fired when an attribute option is removed.
Payload fields
| Field | Type | Description |
|---|---|---|
option.id |
integer |
Always present |
option.store_seq_id |
integer |
Selectable in the Payload builder |
option.label |
string |
Selectable in the Payload builder |
option.value |
string |
Selectable in the Payload builder |
Attribute options reordered
Fired when the sort order of options within an attribute changes. Payload carries the attribute_id plus the ordered option_id list.
Payload fields
| Field | Type | Description |
|---|---|---|
attribute_id |
integer |
Always present |
option_ids |
array |
Always present |