Bulk Update Attributes

Partially updates multiple attributes for a specified attribute template. Only provided fields are modified; omitted fields remain unchanged. Supports various field types including text, number, boolean, color, images (via URL or base64), and image_object (via existing app image UUID). Automatically uploads images to Cloudflare when not referencing by id. Returns lists of successful and failed updates with detailed error reasons.

PATCH/api/v1/{team_slug}/{app_slug}/attributes/{attribute_template_key}/bulk
API
Management
Updated
Apr 26, 2026

management-api:PATCH:/api/v1/{team_slug}/{app_slug}/attributes/{attribute_template_key}/bulk

Partially updates multiple attributes for a specified attribute template. Only provided fields are modified; omitted fields remain unchanged. Supports various field types including text, number, boolean, color, images (via URL or base64), and image_object (via existing app image UUID). Automatically uploads images to Cloudflare when not referencing by id. Returns lists of successful and failed updates with detailed error reasons.

API ownership

  • API family: Management API
  • Best for: Trusted back-office workflows that create, update, organize, or delete merchant-owned data.
  • Do not use from: Browser-only storefront code or public clients.
  • Guide route: /apis/management/latest

The OpenAPI contract defines the method, path, parameters, request body, and responses for this operation.

Operation

  • Method: PATCH
  • Path: /api/v1/\{team_slug\}/\{app_slug\}/attributes/\{attribute_template_key\}/bulk
  • Summary: Bulk Update Attributes
  • Description: Partially updates multiple attributes for a specified attribute template. Only provided fields are modified; omitted fields remain unchanged. Supports various field types including text, number, boolean, color, images (via URL or base64), and image_object (via existing app image UUID). Automatically uploads images to Cloudflare when not referencing by id. Returns lists of successful and failed updates with detailed error reasons.
  • OpenAPI contract: management-api
  • Operation ID: Not documented in the OpenAPI contract.

Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID.

Parameters3 parameters
NameInRequiredTypeDescription
team_slugpathYesstringTeam slug
app_slugpathYesstringApp slug
attribute_template_keypathYesstringAttribute template key
Request bodyDocumented body
  • Required: Yes
  • Description: Attributes to update (max 50)
  • Content: application/json (object)

Bulk Patch Attributes Payload

PropertyTypeRequiredDetails
itemsobject[]YesmaxItems: 50

Bulk Patch Attribute Item

PropertyTypeRequiredDetails
descriptionstringNoThe new description for the attribute. Optional.
keystringYesThe unique key of the attribute to patch.
namestringNoThe new name of the attribute. Optional.
valuesobjectNoValues for the attribute's fields to update, where the key is the field's key. The expected value type depends on the field's type defined in the attribute template: - "text": string - "number": number - "boolean": boolean - "color": string (hex format, e.g., "#RRGGBB") - "image": string (base64 encoded image data, or a public URL) - "image_object": string (existing app image UUID only)

Generated example (synthetic):

{
  "items": [
    {
      "description": "string",
      "key": "string",
      "name": "string",
      "values": {}
    }
  ]
}
Responses5 statuses
StatusDescriptionContent
200Attributes processed successfullyapplication/json (object)
400Invalid request payloadapplication/json (object)
401Unauthorized accessapplication/json (object)
404Attribute template not foundapplication/json (object)
500Internal server errorapplication/json (object)

200 - object

Bulk Patch Attributes Response

PropertyTypeRequiredDetails
dataobjectNo-
detailsstring[]NoAdditional contextual information about the response. Used to provide supplementary details beyond the main data payload, such as validation warnings or processing notes
successbooleanNo-
Bulk Patch Attributes
PropertyTypeRequiredDetails
failed_patchesobject[]No-
successful_patchesobject[]No-
Bulk Patch Attribute Failed
PropertyTypeRequiredDetails
inputobjectNo-
reasonstringNo-
Attribute
PropertyTypeRequiredDetails
created_atstringNo-
descriptionstringNo-
filterablebooleanNo-
idstringNo-
keystringNo-
namestringNo-
template_keystringNo-
template_namestringNo-
translatablebooleanNo-
translationsobjectNo-
updated_atstringNo-
valuesobjectNo-

Generated example (synthetic):

{
  "data": {
    "failed_patches": [
      {
        "input": {
          "description": null,
          "key": null,
          "name": null,
          "values": null
        },
        "reason": "string"
      }
    ],
    "successful_patches": [
      {
        "created_at": "string",
        "description": "string",
        "filterable": false,
        "id": "string",
        "key": "string",
        "name": "string",
        "template_key": "string",
        "template_name": "string",
        "translatable": false,
        "translations": {
          "description": null,
          "name": null
        },
        "updated_at": "string",
        "values": {}
      }
    ]
  },
  "details": [
    "string"
  ],
  "success": false
}

400 - object

Error Message

PropertyTypeRequiredDetails
detailsstring[]No-
messagestringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": [
    "string"
  ],
  "message": "string",
  "success": false
}

401 - object

Error Message

PropertyTypeRequiredDetails
detailsstring[]No-
messagestringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": [
    "string"
  ],
  "message": "string",
  "success": false
}

404 - object

Error Message

PropertyTypeRequiredDetails
detailsstring[]No-
messagestringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": [
    "string"
  ],
  "message": "string",
  "success": false
}

500 - object

Error Message

PropertyTypeRequiredDetails
detailsstring[]No-
messagestringNo-
successbooleanNo-

Generated example (synthetic):

{
  "details": [
    "string"
  ],
  "message": "string",
  "success": false
}

Contract identity

Use these fields to confirm you are implementing the intended endpoint contract.

  • API family: Management API
  • Method: PATCH
  • Path: /api/v1/\{team_slug\}/\{app_slug\}/attributes/\{attribute_template_key\}/bulk
  • Operation ID: Not documented in the OpenAPI contract.
  • OpenAPI tag: Attributes, Bulk
  • OpenAPI summary: Bulk Update Attributes

Bulk Update Attributes

# Bulk Update Attributes Partially updates multiple attributes for a specified attribute template. Only provided fields are modified; omitted fields remain unchanged. Supports various field types including text, number, boolean, color, images (via URL or base64), and image_object (via existing app image UUID). Automatically uploads images to Cloudflare when not referencing by id. Returns lists of successful and failed updates with detailed error reasons.
PATCH /api/v1/{team_slug}/{app_slug}/attributes/{attribute_template_key}/bulk
Purpose

Partially updates multiple attributes for a specified attribute template.

Required inputs

team_slug path app_slug path attribute_template_key path

Primary response

200 ยท Attributes processed successfully

Operation key

management-api:PATCH:/api/v1/{team_slug}/{app_slug}/attributes/{attribute_template_key}/bulk

## API ownership - API family: Management API - Best for: Trusted back-office workflows that create, update, organize, or delete merchant-owned data. - Do not use from: Browser-only storefront code or public clients. - Guide route: [/apis/management/latest](/apis/management/latest) The OpenAPI contract defines the method, path, parameters, request body, and responses for this operation. ## Operation - Method: `PATCH` - Path: `/api/v1/{team_slug}/{app_slug}/attributes/{attribute_template_key}/bulk` - Summary: Bulk Update Attributes - Description: Partially updates multiple attributes for a specified attribute template. Only provided fields are modified; omitted fields remain unchanged. Supports various field types including text, number, boolean, color, images (via URL or base64), and image_object (via existing app image UUID). Automatically uploads images to Cloudflare when not referencing by id. Returns lists of successful and failed updates with detailed error reasons. - OpenAPI contract: management-api - Operation ID: Not documented in the OpenAPI contract. - Stable operation key: `management-api:PATCH:/api/v1/{team_slug}/{app_slug}/attributes/{attribute_template_key}/bulk` Operation key uses API family, method, and path because this OpenAPI contract does not publish an operation ID. ## Parameters | Name | In | Required | Type | Description | | --- | --- | --- | --- | --- | | team_slug | path | Yes | string | Team slug | | app_slug | path | Yes | string | App slug | | attribute_template_key | path | Yes | string | Attribute template key | ## Request body - Required: Yes - Description: Attributes to update (max 50) - Content: application/json (object) ### Bulk Patch Attributes Payload | Property | Type | Required | Details | | --- | --- | --- | --- | | `items` | object[] | Yes | maxItems: 50 | #### Bulk Patch Attribute Item | Property | Type | Required | Details | | --- | --- | --- | --- | | `description` | string | No | The new description for the attribute. Optional. | | `key` | string | Yes | The unique key of the attribute to patch. | | `name` | string | No | The new name of the attribute. Optional. | | `values` | object | No | Values for the attribute's fields to update, where the key is the field's key. The expected value type depends on the field's `type` defined in the attribute template: - "text": string - "number": number - "boolean": boolean - "color": string (hex format, e.g., "#RRGGBB") - "image": string (base64 encoded image data, or a public URL) - "image_object": string (existing app image UUID only) | **Generated example (synthetic):** ```json { "items": [ { "description": "string", "key": "string", "name": "string", "values": {} } ] } ``` ## Responses | Status | Description | Content | | --- | --- | --- | | 200 | Attributes processed successfully | application/json (object) | | 400 | Invalid request payload | application/json (object) | | 401 | Unauthorized access | application/json (object) | | 404 | Attribute template not found | application/json (object) | | 500 | Internal server error | application/json (object) | ### 200 - object #### Bulk Patch Attributes Response | Property | Type | Required | Details | | --- | --- | --- | --- | | `data` | object | No | - | | `details` | string[] | No | Additional contextual information about the response. Used to provide supplementary details beyond the main data payload, such as validation warnings or processing notes | | `success` | boolean | No | - | ##### Bulk Patch Attributes | Property | Type | Required | Details | | --- | --- | --- | --- | | `failed_patches` | object[] | No | - | | `successful_patches` | object[] | No | - | ##### Bulk Patch Attribute Failed | Property | Type | Required | Details | | --- | --- | --- | --- | | `input` | object | No | - | | `reason` | string | No | - | ##### Attribute | Property | Type | Required | Details | | --- | --- | --- | --- | | `created_at` | string | No | - | | `description` | string | No | - | | `filterable` | boolean | No | - | | `id` | string | No | - | | `key` | string | No | - | | `name` | string | No | - | | `template_key` | string | No | - | | `template_name` | string | No | - | | `translatable` | boolean | No | - | | `translations` | object | No | - | | `updated_at` | string | No | - | | `values` | object | No | - | **Generated example (synthetic):** ```json { "data": { "failed_patches": [ { "input": { "description": null, "key": null, "name": null, "values": null }, "reason": "string" } ], "successful_patches": [ { "created_at": "string", "description": "string", "filterable": false, "id": "string", "key": "string", "name": "string", "template_key": "string", "template_name": "string", "translatable": false, "translations": { "description": null, "name": null }, "updated_at": "string", "values": {} } ] }, "details": [ "string" ], "success": false } ``` ### 400 - object #### Error Message | Property | Type | Required | Details | | --- | --- | --- | --- | | `details` | string[] | No | - | | `message` | string | No | - | | `success` | boolean | No | - | **Generated example (synthetic):** ```json { "details": [ "string" ], "message": "string", "success": false } ``` ### 401 - object #### Error Message | Property | Type | Required | Details | | --- | --- | --- | --- | | `details` | string[] | No | - | | `message` | string | No | - | | `success` | boolean | No | - | **Generated example (synthetic):** ```json { "details": [ "string" ], "message": "string", "success": false } ``` ### 404 - object #### Error Message | Property | Type | Required | Details | | --- | --- | --- | --- | | `details` | string[] | No | - | | `message` | string | No | - | | `success` | boolean | No | - | **Generated example (synthetic):** ```json { "details": [ "string" ], "message": "string", "success": false } ``` ### 500 - object #### Error Message | Property | Type | Required | Details | | --- | --- | --- | --- | | `details` | string[] | No | - | | `message` | string | No | - | | `success` | boolean | No | - | **Generated example (synthetic):** ```json { "details": [ "string" ], "message": "string", "success": false } ``` ## Contract identity Use these fields to confirm you are implementing the intended endpoint contract. - API family: Management API - Method: `PATCH` - Path: `/api/v1/{team_slug}/{app_slug}/attributes/{attribute_template_key}/bulk` - Operation ID: Not documented in the OpenAPI contract. - Stable operation key: `management-api:PATCH:/api/v1/{team_slug}/{app_slug}/attributes/{attribute_template_key}/bulk` - OpenAPI tag: Attributes, Bulk - OpenAPI summary: Bulk Update Attributes