curl --request PATCH \
--url https://wisepim.com/api/public/v1/attributes/{attribute_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"code": "<string>",
"label": "<string>",
"label_localized": {},
"attribute_type": "<string>",
"attribute_group": 1,
"is_required": true,
"is_unique": true,
"is_filterable": true,
"is_searchable": true,
"is_visible": true,
"is_localizable": true,
"sort_order": 123,
"default_value": "<unknown>",
"validation_rules": {},
"options": [
"<unknown>"
],
"operations": [
"<string>"
],
"ai_enrichable": true,
"uom_code_set": 1,
"value_code_set": 1,
"default_unit_code": "<string>",
"allow_new_options_on_import": true,
"allow_new_options_from_ai": true
}
'import requests
url = "https://wisepim.com/api/public/v1/attributes/{attribute_id}"
payload = {
"code": "<string>",
"label": "<string>",
"label_localized": {},
"attribute_type": "<string>",
"attribute_group": 1,
"is_required": True,
"is_unique": True,
"is_filterable": True,
"is_searchable": True,
"is_visible": True,
"is_localizable": True,
"sort_order": 123,
"default_value": "<unknown>",
"validation_rules": {},
"options": ["<unknown>"],
"operations": ["<string>"],
"ai_enrichable": True,
"uom_code_set": 1,
"value_code_set": 1,
"default_unit_code": "<string>",
"allow_new_options_on_import": True,
"allow_new_options_from_ai": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
code: '<string>',
label: '<string>',
label_localized: {},
attribute_type: '<string>',
attribute_group: 1,
is_required: true,
is_unique: true,
is_filterable: true,
is_searchable: true,
is_visible: true,
is_localizable: true,
sort_order: 123,
default_value: '<unknown>',
validation_rules: {},
options: ['<unknown>'],
operations: ['<string>'],
ai_enrichable: true,
uom_code_set: 1,
value_code_set: 1,
default_unit_code: '<string>',
allow_new_options_on_import: true,
allow_new_options_from_ai: true
})
};
fetch('https://wisepim.com/api/public/v1/attributes/{attribute_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": 123,
"code": "<string>",
"label": "<string>",
"label_localized": {},
"attribute_type": "<string>",
"is_required": true,
"is_unique": true,
"is_filterable": true,
"is_searchable": true,
"is_visible": true,
"group": {
"id": 123,
"name": "<string>"
},
"options": "<unknown>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>",
"detail": [
{}
]
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}Update attributes
PATCH /attributes/. Required scopes: attributes:write.
curl --request PATCH \
--url https://wisepim.com/api/public/v1/attributes/{attribute_id} \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"code": "<string>",
"label": "<string>",
"label_localized": {},
"attribute_type": "<string>",
"attribute_group": 1,
"is_required": true,
"is_unique": true,
"is_filterable": true,
"is_searchable": true,
"is_visible": true,
"is_localizable": true,
"sort_order": 123,
"default_value": "<unknown>",
"validation_rules": {},
"options": [
"<unknown>"
],
"operations": [
"<string>"
],
"ai_enrichable": true,
"uom_code_set": 1,
"value_code_set": 1,
"default_unit_code": "<string>",
"allow_new_options_on_import": true,
"allow_new_options_from_ai": true
}
'import requests
url = "https://wisepim.com/api/public/v1/attributes/{attribute_id}"
payload = {
"code": "<string>",
"label": "<string>",
"label_localized": {},
"attribute_type": "<string>",
"attribute_group": 1,
"is_required": True,
"is_unique": True,
"is_filterable": True,
"is_searchable": True,
"is_visible": True,
"is_localizable": True,
"sort_order": 123,
"default_value": "<unknown>",
"validation_rules": {},
"options": ["<unknown>"],
"operations": ["<string>"],
"ai_enrichable": True,
"uom_code_set": 1,
"value_code_set": 1,
"default_unit_code": "<string>",
"allow_new_options_on_import": True,
"allow_new_options_from_ai": True
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.patch(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PATCH',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
code: '<string>',
label: '<string>',
label_localized: {},
attribute_type: '<string>',
attribute_group: 1,
is_required: true,
is_unique: true,
is_filterable: true,
is_searchable: true,
is_visible: true,
is_localizable: true,
sort_order: 123,
default_value: '<unknown>',
validation_rules: {},
options: ['<unknown>'],
operations: ['<string>'],
ai_enrichable: true,
uom_code_set: 1,
value_code_set: 1,
default_unit_code: '<string>',
allow_new_options_on_import: true,
allow_new_options_from_ai: true
})
};
fetch('https://wisepim.com/api/public/v1/attributes/{attribute_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"id": 123,
"code": "<string>",
"label": "<string>",
"label_localized": {},
"attribute_type": "<string>",
"is_required": true,
"is_unique": true,
"is_filterable": true,
"is_searchable": true,
"is_visible": true,
"group": {
"id": 123,
"name": "<string>"
},
"options": "<unknown>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>",
"detail": [
{}
]
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}{
"error": "<string>",
"request_id": "<string>",
"code": "<string>"
}Authorizations
Use a project API key from Settings > API Access. Send it as Authorization: Bearer wpk_.... See authentication and scopes for setup and permissions.
Headers
Reuse this key for retries of the same write. Scoped to this API key; retained until key deletion. Different requests with the same key return 409.
1 - 128^[!-~]+$Path Parameters
Body
Unique identifier for the attribute (e.g., cpu_type, screen_size)
50Human-readable name for the attribute (e.g., CPU Type, Screen Size)
255Locale-keyed labels, e.g. {'en': 'Nominal voltage', 'de': 'Nennspannung'}. Classification standards ship a name per release language — label alone would pin the project to whichever locale it was materialised in.
Show child attributes
Show child attributes
The type of data this attribute stores
20The group this attribute belongs to for UI organization
x > 0Whether this attribute must have a value when used in a family
Whether this attribute's value must be unique across products
Whether this attribute can be used for filtering products
Whether this attribute should be included in product searches
Whether this attribute should be visible in the UI
Whether this attribute's values can be different per locale. Enable for text content (names, descriptions). Disable for universal values (SKUs, numbers, dates, colors).
Order in which this attribute should be displayed within its group
Default value for this attribute when assigned to a product
Rules for validating attribute values
Predefined options for select/multiselect attributes
List of enabled operations for this attribute (e.g., import, export, enrich)
Whether this attribute can be enriched using AI
Unit of measure code set for numeric/decimal attributes. Specifies which units are valid for this attribute's values.
x > 0Controlled vocabulary for select/multiselect attributes. If set, values must come from this code set. Takes precedence over the legacy 'options' JSONField.
x > 0Unit this attribute's values are expressed in (a code from uom_code_set). ETIM prescribes exactly one unit per feature; without it the editors show the whole unit set with nothing preselected.
20Allow creating new options for select/multiselect attributes during product import
Let AI enrichment add a new option when no existing select/multiselect option fits
Response
OK
Show child attributes
Show child attributes
Predefined options for select/multiselect attributes.

