updateattributeset.md

Update Attribute Set

Partially updates an existing attribute set identified by id. Accepted values:

Any other value is rejected with 400 Bad Request.

Authentication

Requires a valid API key in the X-API-KEY header.

Request Body

All fields are optional. Omitted (null) fields are left unchanged (PATCH semantics). When a layout is supplied it fully replaces the currently stored layout — it is not merged.

Field Description
name New unique name for the attribute set.
productLayout Replacement form layout for Products.
variantLayout Form layout for Variants. Sets the Variant layout when the set does not yet have one (e.g. created without it), or replaces it when it does.

Layout Structure

Each layout is a JSON document with a sections array. Each section has a title and a rows array. Each row has a fields array and an optional divider (dividerType, dividerTitle). Each field carries an attributeId and a size.

{
  "sections": [
    {
      "title": "General",
      "rows": [
        {
          "fields": [
            { "attributeId": "prod_title", "size": "half" },
            { "attributeId": "prod_ref",   "size": "half" }
          ]
        },
        {
          "dividerType": "normal",
          "dividerTitle": "Details",
          "fields": [
            { "attributeId": "prod_description", "size": "row" }
          ]
        }
      ]
    }
  ]
}

size — width of the field in the form grid. One of: quarter, half, threeQuarters, row.

dividerType — optional visual separator above the row. One of: normal, wide, lineBreak. dividerTitle is optional and only meaningful when dividerType is set. Both properties are omitted from rows that have no divider.

Layout Validation

A layout may contain any subset of the tenant's valid attributes — you do not need to include all of them. Attributes omitted from the layout simply do not appear in the form for this attribute set; they are not removed from the tenant.

This is different from PUT /Categories/layout and PUT /CustomEntities('{id}')/layout, where the payload must contain every attribute currently in the stored layout — no more, no less.

If a layout is supplied it must satisfy all of the following rules; otherwise the request returns 400 Bad Request describing each failure:

Required attributes

These attributes must always be present in their respective layout:

Layout Required attribute IDs
productLayout typ_id, prod_ref, prod_title, cat_ref, prod_stat, prod_description, prod_image, prod_tags
variantLayout frmt_stat, prod_ref, frmt_ref, frmt_tags

Response

200 OK — The updated attribute set (UpdateAttributeSet2Response).

Error Responses

Example

Request:

PATCH /v2/AttributeSets(1) HTTP/1.1
X-API-KEY: your-api-key-here
Content-Type: application/json

{ "name": "Electronics v2" }

Response:

HTTP/1.1 200 OK
Content-Type: application/json

Path parameters:

Request fields (application/json):

Response 200 fields (application/json):

Response 400 fields (application/json):

Response 401 fields (application/json):

Response 500 fields (application/json):