Delete an attribute definition
Cascades to every product value and category link for this attribute, and cannot be undone. Read /v1/brands/{brandId}/products?filter=attr:{attributeId}:notEmpty first if you need to know how much data that is.
Authorization
apiKey Your API key. X-Api-Key: <key> is accepted as an alternative.
A key belongs to an organization, not a user, so it outlives whoever created it. It carries two independent things, and both are checked: an org role (a member key cannot approve a publish or activate a mapping) and a set of scopes — catalog:read, catalog:write, enrichment:write, publishing:read, publishing:write, org:read, org:write. Holding a scope does not grant a role, and holding a role does not grant a scope.
GET /v1/me returns both for the key you are holding.
In: header
Path Parameters
The brand to read.
Response Body
application/json
application/problem+json
application/problem+json
application/problem+json
application/problem+json
curl -X DELETE "https://example.com/v1/brands/string/attributes/string"{ "deleted": true, "id": "string"}Create an attribute definition POST
Adds a column to the brand's vocabulary. The `key` is derived from the name and returned — it is what product values join on, so it is assigned once and **never changes on a rename**. A name whose key is taken gets a numeric suffix (`fabric_weight_2`), because two attributes named the same must still be two columns. Hand-authored attributes are product-scoped. Variant scope is evidence the importer reads off the source's variant array, not a choice.
Update an attribute definition PUT
Replaces the editable fields. The `key` is not among them — every existing value joins on it, so re-keying would orphan the column.