Skip to main content
POST
/
vendor
/
products
/
{id}
/
attributes
/
batch
curl -X POST 'http://localhost:9000/vendor/products/prod_01HXYZ/attributes/batch' \
  -H 'Authorization: Bearer <token>' \
  -H 'x-seller-id: <seller_id>' \
  -H 'Content-Type: application/json' \
  -d '{
    "add": [{ "id": "pattr_01HXYZ", "value_ids": ["pattrval_01HXYZ"] }],
    "remove": ["pattr_01HABC"]
  }'
{
  "product_change": {
    "id": "prodch_01HXYZ",
    "product_id": "prod_01HXYZ",
    "status": "pending",
    "actions": [
      {
        "id": "prodchact_01HXYZ",
        "action": "ATTRIBUTE_ADD",
        "details": { "id": "pattr_01HXYZ", "value_ids": ["pattrval_01HXYZ"] },
        "applied": false
      }
    ]
  }
}
Stages attribute operations as a pending change request instead of applying them directly.
The endpoint responds with 202 Accepted and a product_change record containing ATTRIBUTE_ADD / ATTRIBUTE_REMOVE / ATTRIBUTE_UPDATE actions.

Path parameters

id
string
required
The product’s ID.

Body parameters

add
object[]
Attributes to attach; each entry references an existing attribute by id or defines one inline by title.
remove
string[]
IDs of attributes to detach from the product.
update
object[]
Changes to attributes already attached to the product.

Response

product_change
object
curl -X POST 'http://localhost:9000/vendor/products/prod_01HXYZ/attributes/batch' \
  -H 'Authorization: Bearer <token>' \
  -H 'x-seller-id: <seller_id>' \
  -H 'Content-Type: application/json' \
  -d '{
    "add": [{ "id": "pattr_01HXYZ", "value_ids": ["pattrval_01HXYZ"] }],
    "remove": ["pattr_01HABC"]
  }'
{
  "product_change": {
    "id": "prodch_01HXYZ",
    "product_id": "prod_01HXYZ",
    "status": "pending",
    "actions": [
      {
        "id": "prodchact_01HXYZ",
        "action": "ATTRIBUTE_ADD",
        "details": { "id": "pattr_01HXYZ", "value_ids": ["pattrval_01HXYZ"] },
        "applied": false
      }
    ]
  }
}