openapi: 3.0.1 info: title: Cart Actions Endpoints Attributes API description: fabric's **Cart API** lets you add, update, and remove items from your Storefront cart, either as a guest user or as a logged-in user. It also provides functionality to merge carts when you switch from guest user to logged-in user, and apply coupons and other attributes (for example, gift wrapping) to the line items. Additionally, the API supports more advanced tasks such as using multiple carts within a B2B organization, sharing carts, and supporting a unified cart experience for multi-region and multi-brand businesses.

The Cart API provides high performance, scalability, multi-tenancy, and configurability to the end-to-end order processing actions that start from the item being added to the cart; through the pre-checkout stage that includes billing, shipping, and payment details; to the checkout stage where the order is processed and confirmed by fabric's Order Management System (OMS) contact: name: Cart Support email: support.cnc@fabric.inc license: name: fabric API License url: https://fabric.inc/api-license version: 3.0.0 servers: - url: https://api.fabric.inc/v3 security: - bearerAuth: [] tags: - name: Attributes description: Item attributes are the objective and factual descriptions of items that shoppers see when they browse through your site. Attributes may be technical specifications like size, weight, etc., design specifications like color, material, etc., or basic specifications like name, description, and ID. Ites attributes are crucial as they directly influence purchasing decisions. Complete and correct item information help shoppers narrow down their search and filter items with minimal cognitive load. paths: /api-category/v1/category/attribute/bulk: post: tags: - Attributes summary: Create, Update and Delete Category Attributes description: 'Creates, updates and deletes category attributes. The primary purpose is to create and edit the attributes to be assigned to categories.
**Note**: They are generic category attributes and not specific to a category.' operationId: postCategoryAttributeBulk security: - authorization: [] - api_key: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkAttributeRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BulkAttributeResponse' '400': description: Client error content: application/json: schema: $ref: '#/components/schemas/ClientError' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ServerError' /api-product/v1/product/attribute/bulk: post: tags: - Attributes summary: Create Update and Delete Item Attributes description: 'Item attributes allow you to define specific characteristics for items. Common examples of attributes include size, color, and material. Well-defined attributes are important because they enable item discovery and make catalog management easier.
This endpoint creates and updates item attributes to be assigned later.
**Note**:
1) You can add and manage unlimited attributes for your items. Once they are created, they appear as a selectable option on product pages.
2) In addition, you can assign attributes to items on an individual level or in bulk.' operationId: postProductAttributeBulk security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/BulkProductAttributeRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/BulkAttributeResponse' '400': description: Client error. content: application/json: schema: $ref: '#/components/schemas/ClientError' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ServerError' /api-product/v1/product/attribute-group: post: tags: - Attributes summary: Create, Update and Delete Attribute Groups description: 'Using attribute groups, you can group various attributes together to make it easier to manage large volume of item information.
Use this endpoint to create, update, or delete attribute groups.
**Note**: In the context of Product Catalog, attribute group is optional. When created, it must have at least one attribute.' operationId: modifyAttributeGroups security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/AttributeGroupRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AttributeGroupResponse' '400': description: Client error content: application/json: schema: $ref: '#/components/schemas/ClientError' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ServerError' /api-product/v1/product/attribute-group/search: post: tags: - Attributes summary: Find Attribute Groups description: Find attribute groups based on the given search criteria. You will get a paginated response, which you can narrow down using filter criteria such as `page` and `size`. operationId: searchAttributeGroups security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/AttributeGroupSearchRequest' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AttributeGroupSearchResponse' '400': description: Client error content: application/json: schema: $ref: '#/components/schemas/ClientError' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ServerError' /api-product/v1/product/attribute/mapping/search: post: tags: - Attributes summary: Find Attribute Mapping description: Searches for attribute mapping based on the given search criteria. You will get a paginated response, which you can narrow down using filter criteria such as `page` and `size`. operationId: searchAttributeMappings security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' requestBody: content: application/json: schema: $ref: '#/components/schemas/AttributeMappingSearch' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AttributeMappingPaginationResponse' '400': description: Client error content: application/json: schema: $ref: '#/components/schemas/ClientError' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ServerError' /api-product/v1/product/attribute/mapping: post: tags: - Attributes summary: Create and Update Attribute Mappings description: Set your attribute mapping to begin configuring your catalog. You can update the mappings only if there are no SKUs present in the catalog. security: - authorization: [] parameters: - $ref: '#/components/parameters/xSiteContent' operationId: modifyAttributeMappings requestBody: content: application/json: schema: $ref: '#/components/schemas/AttributeMappingModify' responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/AttributeMappingResponse' '400': description: Client error content: application/json: schema: $ref: '#/components/schemas/ClientError' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/ServerError' /v2/attributes/import: post: summary: Import Attributes from CSV description: 'Upload a CSV file to import attribute definitions for the specified brand/domain. The import is processed asynchronously. **Expected CSV columns** - **attribute_name** (required): Attribute display name - **attribute_key** (optional): Machine-readable key - **description** (optional): Attribute description - **data_type** (optional): Data type - **scope** (optional): Attribute scope - **enum_values** (optional): Allowed values, pipe-delimited (e.g. `S|M|L`) - **allow_ai_content** (optional): Allow AI to generate values (`true`/`false`) - **source** (optional): `MERCHANT` or `GOLD_STANDARD` - **guideline_reason** (optional): Guidance for AI enrichment ' operationId: importAttributes parameters: - $ref: '#/components/parameters/DomainHeader' requestBody: required: true content: multipart/form-data: schema: type: object required: - file properties: file: type: string format: binary description: CSV file containing attribute definitions. name: type: string description: Human-friendly import name. example: Spring attributes import responses: '202': description: Import accepted for asynchronous processing content: application/json: schema: $ref: '#/components/schemas/AttributeImportAcceptedResponse' example: import_id: e2716438-b763-4be8-82d2-36abe0cb92b1 name: attribute_test.csv status: PENDING total_rows: 36 processed_rows: 0 created_count: 0 updated_count: 0 skipped_count: 0 failed_count: 0 input_filename: attribute_test.csv input_file_url: null error_file_url: null error_message: null errors: [] started_at: null completed_at: null created_at: '2026-03-12T18:04:03.879876Z' '400': description: Bad request - invalid CSV or missing file content: application/json: schema: $ref: '#/components/schemas/errorResponse' '401': description: Unauthorized - missing or invalid token content: application/json: schema: $ref: '#/components/schemas/errorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/errorResponse' tags: - Attributes /v2/attributes/import/{import_id}: get: summary: Get Attribute Import Status description: Retrieve the current status and results of an attribute import created using `POST /v2/attributes/import`. operationId: getAttributeImportStatus parameters: - $ref: '#/components/parameters/DomainHeader' - name: import_id in: path required: true description: Import ID returned from `POST /v2/attributes/import`. schema: type: string format: uuid example: e2716438-b763-4be8-82d2-36abe0cb92b1 responses: '200': description: Import status content: application/json: schema: $ref: '#/components/schemas/AttributeImportStatusResponse' example: import_id: e2716438-b763-4be8-82d2-36abe0cb92b1 name: attribute_test.csv status: COMPLETED total_rows: 36 processed_rows: 36 created_count: 35 updated_count: 0 skipped_count: 0 failed_count: 1 input_filename: attribute_test.csv input_file_url: https://example.com/input.csv error_file_url: https://example.com/errors.csv error_message: null errors: - 'Row 35: invalid data_type ''BOOLREAN''' started_at: '2026-03-12T18:04:03.998437Z' completed_at: '2026-03-12T18:04:04.724584Z' created_at: '2026-03-12T18:04:03.879876Z' '400': description: Bad request content: application/json: schema: $ref: '#/components/schemas/errorResponse' '401': description: Unauthorized content: application/json: schema: $ref: '#/components/schemas/errorResponse' '404': description: Import not found content: application/json: schema: $ref: '#/components/schemas/errorResponse' '500': description: Internal server error content: application/json: schema: $ref: '#/components/schemas/errorResponse' tags: - Attributes components: schemas: AttributeGroupSearchRequest: type: object properties: page: description: Page number to be retrieved example: 0 type: number size: description: Number of records (attribute groups) per page example: 10 type: number include: type: object properties: attributes: type: boolean description: 'true: Includes attributes
false: Excludes attributes' match: type: object properties: target: description: Search target. Currently, supports only ITEM. example: ITEM type: string or: type: array items: type: object properties: name: description: Attribute group name example: weight type: string sort: type: array items: type: object properties: field: description: Field on which the results must be sorted example: priorityOrder type: string direction: description: Direction (ascending or descending) or sorting the response example: DESC type: string enum: - ASC - DESC ClientError: type: object properties: code: description: Error code for machine consumption type: string example: 400 message: description: Human-readable error description type: string example: Client error BulkProductAttributeRequest: type: array items: type: object properties: action: type: string description: 'Action to perform. `id` is required only for `UPDATE`, or `DELETE` (not for CREATE).
**Note**: `CREATE` action replaces any existing item attribute with the same name, if one already exists.' enum: - CREATE - UPDATE - DELETE example: UPDATE id: description: A 24-character system-generated attribute ID type: string example: 621c1122ff2e4507c199b75d name: description: Attribute name, which is visible on all relevant Product Catalog pages. type: string example: Weight locales: type: array items: type: object properties: locale: type: string description: Language locale example: - fr-ca - es-us name: type: string description: Localized value of 'name' for this attribute example: le poids description: description: Attribute description type: string example: Example description. mapping: description: 'Attribute mapping of item. This corresponds to the `Attribute Mapping` settings of Product Catalog: `sku`, `title`, `image`, `active`, `isVariant`.
**Note**: Most attributes do not have a mapping, in which case this will be null.
**Warning**: Exercise caution while adding or removing mappings of attributes, as it could lead to bad data.' type: string example: title type: description: Attribute type type: string enum: - TEXT - BOOLEAN - SERIAL - DECIMAL - INTEGER - DATETIME - OPTIONS textSubType: description: Conditionally required sub-type for `TEXT` attribute type type: string enum: - SMALL_TEXT - TEXT_AREA - HTML serialStart: description: Conditionally required to indicate the starting value of `SERIAL` attribute type. When enabled, the subsequent attribute values increment by 1. type: number example: 1 optionsType: description: Conditionally required to indicate the selectable values for the `OPTIONS` attribute type type: string enum: - TEXT - BOOLEAN - DECIMAL - INTEGER - DATETIME format: description: Attribute format. Currently used only for the attribute type `DATETIME`. type: string example: YYYY-MM-DD formula: description: 'JavaScript expression to dynamically compute the attribute''s value. The type returned must match the attribute''s type. If the attribute is weight, this formula helps calculate the weight.
**Note**: When this is provided, `validation` is ignored.' type: string example: '`${item.weightValue} ${item.weightUnit}`' validation: type: object properties: required: description: 'true: Attribute is mandatory
false: Attribute is optional' type: boolean inheritable: description: 'true: Parent attributes inherited to children items
false: Parent attributes not inherited to children items' type: boolean inverse: description: 'true: Inverts existing validation (example - requires that the validation does not pass)
false: Follows existing validation' type: boolean unique: description: 'true: Specified value is unique across all items or nodes
false: Specified value is not unique' type: boolean exact: description: Specified value must exactly match this value oneOf: - type: string - type: number - type: boolean attributeTypes: description: Attribute types type: array example: - Serial - Integer items: type: string enum: - TEXT - BOOLEAN - SERIAL - DECIMAL - INTEGER - ASSET - DATETIME - RESOURCE - DYNAMIC_LOV contains: description: Specified value must contain this string type: string example: Demo startWith: description: Sequence should start with this value type: number example: 1 incrementBy: description: Sequence should increment by this value type: number example: 1 range: description: Specified range of values must be between this min and/or max type: object properties: min: description: Specified value must be greater than or equal to this value oneOf: - type: string - type: number max: description: Specified value must be less than or equal to this value oneOf: - type: string - type: number formula: description: JavaScript expression to determine if the value matches type: string example: value < 10 || value > 20 oneOf: description: Matches the value if it is one of these oneOf: - type: array items: type: string - type: array items: type: number - type: array items: type: boolean AttributeMappingModify: type: object properties: mappings: type: array items: type: object properties: attributeId: description: Attribute ID type: string example: ATTR1234 mapping: description: Attribute mapping type: string example: SKU name: description: Name of the attribute mapping type: string description: description: Description of the attribute mapping type: string example: Item SKU validation: $ref: '#/components/schemas/AttributeValidation' required: description: 'true: Mapping is mandatory
false: Mapping is optional' type: boolean StatusResponse: type: object properties: code: description: Status code type: string type: description: Status type type: string enum: - ATTRIBUTE - ATTRIBUTE_VALUE - ITEM - BUNDLE - NODE - HIERARCHY source: description: Status source type: string enum: - PIM - WAM name: description: Status name type: string description: description: Status description type: string createdOn: description: Time of file creation type: string format: date-time createdBy: description: User ID that created the file type: string example: broma0 modifiedOn: type: string format: date-time description: Time when file was last modified modifiedBy: type: string example: broma0 description: User ID that last modified the file AttributeMappingResponse: type: object properties: attributeId: description: A 24-character system-generated attribute ID type: string example: 62e2ae29c3004a000950ad5f attribute: $ref: '#/components/schemas/AttributeResponse' description: 'Represents the mapped attributes. Only populated when `include.attribute` is true.
**Note**: Not applicable for an attribute mapping modify request' mapping: description: Attribute mapping type: string example: SKU target: description: Returns attribute mapping for the specified target type: string example: ITEM name: description: Name of attribute mapping type: string example: Item SKU description: description: Description for attribute mapping type: string example: Item SKU required: description: 'true: Mapping is mandatory;
false: mapping is optional' type: boolean validation: $ref: '#/components/schemas/AttributeValidation' createdOn: description: Time of attribute creation (UTC format) type: string format: date-time example: '2021-09-23T17:47:04.231Z' createdBy: description: User ID that created item attribute type: string example: broma0 modifiedOn: description: Time of when the attribute was last modified type: string format: date-time modifiedBy: description: User ID that last modified item attribute type: string example: broma0 AttributeMappingSort: description: Sorting preference type: array items: type: object description: Individual fields to sort properties: field: type: string enum: - createdOn - updatedOn - mapping description: The field to sort must be specified. Sorting is based on the attribute's *raw* value. direction: type: string enum: - ASC - DESC description: Sorting direction AttributeImportStatusResponse: type: object required: - import_id - status - total_rows - processed_rows - created_at properties: import_id: type: string format: uuid name: type: string example: attribute_test.csv status: type: string example: COMPLETED total_rows: type: integer example: 36 processed_rows: type: integer example: 36 created_count: type: integer example: 35 updated_count: type: integer example: 0 skipped_count: type: integer example: 0 failed_count: type: integer example: 1 input_filename: type: string example: attribute_test.csv input_file_url: type: string format: uri nullable: true example: https://example.com/input.csv error_file_url: type: string format: uri nullable: true example: https://example.com/errors.csv error_message: type: string nullable: true example: null errors: type: array items: type: string example: - 'Row 35: invalid data_type ''BOOLREAN''' started_at: type: string format: date-time nullable: true completed_at: type: string format: date-time nullable: true created_at: type: string format: date-time BulkAttributeRequest: type: array items: type: object required: - type - name - action properties: action: type: string enum: - CREATE - UPDATE - DELETE example: UPDATE description: 'Action type.
**Note**:
1) Attribute ID is required only for `UPDATE` and `DELETE` actions (not for CREATE).
2) `CREATE` action replaces any existing category attribute with the same name.' id: description: A 24-character system-generated attribute ID example: 61ba11691a29d52cb2842541 type: string name: description: Attribute name example: weight type: string description: description: Accurate description of the attribute and what it represents example: Item weight, in KG type: string type: description: Supported attribute types for the attribute example: INTEGER type: string enum: - TEXT - BOOLEAN - SERIAL - DECIMAL - INTEGER - DATETIME - OPTIONS textSubType: description: Conditionally required for `TEXT` attribute type example: HTML type: string enum: - SMALL_TEXT - TEXT_AREA - HTML serialStart: description: Conditionally required to indicate the starting value of `SERIAL` attribute type. When enabled, the subsequent attribute values increment by 1. example: 1000 type: number optionsType: description: Conditionally required to indicate the selectable values for `OPTIONS` attribute type type: string example: DATETIME enum: - TEXT - BOOLEAN - DECIMAL - INTEGER - DATETIME format: description: Attribute format. Currently used only for `DATETIME` attribute type. type: string example: YYYY-MM-DD formula: description: 'JavaScript expression to dynamically compute the attribute value. The data type returned by this expression must match the attribute''s data type.
**Note**: When this is provided, `validation` is ignored.' type: string example: '`${item.weightValue} ${item.weightUnit}`' validation: type: object properties: required: description: 'true: Attribute is mandatory
false: Attribute is optional' type: boolean inheritable: description: 'true: Parent attributes inherited to children items
false: Parent attributes not inherited to children items' type: boolean example: true inverse: description: 'true: Inverts existing validation (example - requires that the validation does not pass)
false: Follows existing validation' type: boolean unique: description: 'true: Value is unique across all items or categories
false: Value is not unique' type: boolean exact: description: Specified value must exactly match this value oneOf: - type: string - type: number - type: boolean attributeTypes: description: Attribute types type: array example: - Serial - Integer items: type: string enum: - TEXT - BOOLEAN - SERIAL - DECIMAL - INTEGER - ASSET - DATETIME contains: description: Specified value must contain this string type: string range: description: Specified range of values must be between this min and/or max type: object properties: min: description: Specified value must be greater than or equal to this value oneOf: - type: string - type: number max: description: Specified value must be less than or equal to this value oneOf: - type: string - type: number formula: description: JavaScript expression to determine if the value matches type: string example: value < 10 || value > 20 oneOf: description: Matches the value if it is one of these oneOf: - type: array items: type: string - type: array items: type: number - type: array items: type: boolean errorResponse: description: Error response properties: errors: description: Errors items: $ref: '#/components/schemas/errorResponse' type: array message: description: Error message example: Bad request type: string type: description: Error type example: CLIENT_ERROR type: string type: object WorkflowAttributes: type: object properties: {} AttributeResponse: type: object properties: id: description: Attribute ID type: string statuses: description: For 'attribute modify request', the `PIM` statuses (if applicable). For 'attribute search request', the statuses defined by the `include.status` request parameter. type: array items: $ref: '#/components/schemas/StatusResponse' files: description: Array of file's associated with an item type: array items: $ref: '#/components/schemas/FileResponse' name: description: Attribute name type: string description: description: Attribute description type: string locales: type: array items: type: object properties: locale: description: Locale identifier type: string example: fr-ca name: description: Localized string value type: string example: Un Nom Français localizable: description: 'true: attribute can be localized
false: attribute cannot be localized' type: boolean mapping: description: 'Attribute mapping.
**Note**: Most attributes will not have a mapping, resulting in null value.' nullable: true type: string type: description: Data type of the attribute type: string enum: - TEXT - BOOLEAN - SERIAL - DECIMAL - INTEGER - DATETIME serialStart: description: Conditionally required to indicate the starting value of `SERIAL` attribute type. When enabled, the subsequent attribute values increment by 1. type: number target: description: Indicates whether the attribute is for categories or items. type: string enum: - NODE - ITEM format: description: Attribute format. Currently used only for the attribute type `DATETIME`. type: string example: YYYY-MM-DD formula: description: 'JavaScript expression to dynamically compute the attribute''s value.
**Note**: The type returned must match the attribute''s type.' type: string example: value < 10 || value > 20 validation: $ref: '#/components/schemas/AttributeValidation' createdOn: description: Time of attribute creation type: string format: date-time createdBy: description: ID that created the attribute type: string example: broma0 modifiedOn: description: Time when the attribute was last modified type: string format: date-time modifiedBy: description: User ID that last modified the attribute type: string example: broma0 AttributeValidation: type: object properties: required: description: Indicates mandatory attribute type: boolean inheritable: description: 'true: Parent attributes are inherited to children items
false: Parent attributes are not inherited to children items.' type: boolean example: true inverse: description: 'true: Inverts existing validation (example - requires that the validation does not pass)
false: Follows existing validation' type: boolean example: false unique: description: 'true: Value is unique across all items or categories
false: Value is not unique' type: boolean exact: description: Specified value must exactly match this value oneOf: - type: string - type: number - type: boolean attributeTypes: description: Attribute types type: array items: type: string enum: - TEXT - BOOLEAN - SERIAL - DECIMAL - INTEGER - ASSET - DATETIME contains: description: Specified value must contain this string type: string range: description: Specified range of values must be between this min and/or max type: object properties: min: description: Specified value must be greater than or equal to this value oneOf: - type: string - type: number max: description: Specified value must be less than or equal to this value oneOf: - type: string - type: number formula: description: JavaScript expression to determine if the value matches type: string example: value < 10 || value > 20 oneOf: description: Match the value if it is one of these. oneOf: - type: array items: type: string - type: array items: type: number - type: array items: type: boolean ServerError: type: object properties: code: description: Error code type: string example: 500 message: description: Human-readable error description type: string example: An internal error occurred. If the issue persists please contact support@fabric.inc. ImpactedAttributes: type: object properties: {} AttributeGroupTypeRequest: type: object properties: action: description: 'Action type.
**Note**:
1) Attribute ID is required only for `UPDATE` and `DELETE` actions (not for CREATE).
2) The Create action replaces any existing category attribute with the same name.' type: string enum: - ADD - UPDATE - DELETE example: UPDATE id: description: A 24-character system-generated ID of item attribute example: 6245f16d11ae770009f19292 type: string order: description: Order of item attributes within the attribute group. Relevant for sorting in the UI. example: 0 type: number AttributeMappingMatch: description: Specification for matching attribute mapping. type: object properties: target: description: Attribute mapping for the specified target type: string mapping: description: Attribute mapping type: string attributeId: description: A 24-character system-generated Attribute ID type: string example: 62e2ae29c3004a000950ad5f name: description: Mapping for an attribute whose name contains the specified value type: string description: description: Mapping for an attribute whose description contains the specified value. type: string required: description: 'true: Returns only the attribute mappings that are mandatory' type: boolean example: true BulkAttributeResponse: type: object properties: attributes: type: object properties: success: type: array items: type: object properties: id: type: string example: 622932439c73c975335cb654 description: A 24-character system-generated attribute ID name: type: string example: name description: Attribute name message: type: string description: Success message example: Attribute created successfully failed: type: array items: type: object properties: name: type: string example: ITEM_ATTRIBUTE_VALUE_IS_INVALID description: Failure reason as stored backend errors: type: array items: type: string example: - Attribute value is invalid - Attribute value not found description: Human-readable failure reasons AttributeGroupTypeResponse: type: object properties: _id: description: A 24-character system-generated ID, for internal use example: 6259ec8defc2116dd6c0f3fc type: string attributeGroupId: description: A 24-character system-generated ID of attribute group example: 6259ec8d006b0d00092b3189 type: string attributeId: description: A 24-character system-generated attribute ID example: 6245f16d11ae770009f19292 type: string isEditable: type: boolean description: 'true: Attribute is editable
false: Attribute is non-editable' createdOn: description: Time of attribute creation (UTC format) example: '2022-04-15T22:07:09.932Z' type: string modifiedOn: description: Time when attribute was last updated (UTC format) example: '2022-04-15T22:10:05.444Z' type: string order: description: Order of items within the attribute group example: 0 type: number attribute: type: array items: type: object properties: _id: description: A 24-character system-generated attribute ID example: 6259ec8defc2116dd6c0f3fc type: string description: description: Accurate description of attribute and what it represents example: Item weight, in KG. type: string formulaManuallyOverWritten: type: boolean example: false description: 'true: Formula can be manually overwritten
false: Formula cannot be manually overwritten' formula: description: Formula for the item attribute example: null type: string type: description: Attribute type example: TEXT type: string name: description: Attribute name example: weight type: string textSubType: description: Conditionally required sub-type for `TEXT` attribute type example: SMALL_TEXT type: string attributeValidationId: example: 624d92f8caa34e0009b5d849 type: string description: Attribute validation ID modifiedBy: description: User ID that modified item attribute example: 60aad2c835c5fb000885f679 type: string createdOn: description: Time of attribute creation (UTC format) example: '2022-04-15T22:07:09.932Z' type: string modifiedOn: description: Time when the attribute was last modified (UTC format) example: '2022-04-15T22:10:05.444Z' type: string AttributeMappingPaginationResponse: type: object properties: totalSize: description: Total number of records type: number example: 100 pageSize: description: Number of records in a page type: number example: 10 pages: description: Total number of pages in the response type: number example: 10 mappings: type: array items: $ref: '#/components/schemas/AttributeMappingResponse' AttributeMappingSearch: type: object required: - page - size properties: include: type: object properties: attribute: type: boolean description: 'true: include the `attribute` in the response;
false: exclude `attribute` in the response' sort: $ref: '#/components/schemas/AttributeMappingSort' match: $ref: '#/components/schemas/AttributeMappingMatch' page: description: 'Page number to be retrieved.
**Note**:
1) Applicable only in a paginated response.
2) Always paired with `size`' type: number example: 0 size: description: 'Number of records per page
**Note**:
1) Applicable only in a paginated response.
2) Always paired with `page`' type: number example: 10 AttributeGroupRequest: type: object required: - transactional properties: transactional: description: 'true: All updates succeed or fail as a unit
false: Some can succeed or fail' type: boolean attributeGroup: type: array items: type: object properties: action: type: string enum: - CREATE - UPDATE - DELETE example: UPDATE description: Action type. For `CREATE`, 'priorityOrder', 'type', 'name,' and 'editableAttributes' are mandatory. For `UPDATE` and `DELETE`, only `id` is mandatory. type: description: Type of attribute group example: COLLECTION type: string enum: - WORKFLOW - COLLECTION description: description: Accurate description of attribute and what it represents example: Item weight, in KG type: string name: description: Attribute group nam example: weight type: string priorityOrder: description: 'Attribute groups can be assigned a priority order. This is used for attributes that are under multiple attribute groups. They will be returned just once in the attribute group that has the highest priority.
**Note**: Mandatory attribute for ''CREATE'', must be unique and start from 0 for the first group.' example: 1 type: number id: description: A 24-character system-generated attribute group ID. Applicable only for `UPDATE` and `DELETE` actions. To be omitted for 'CREATE'. example: 6259ec8d006b0d00092b3189 type: string editableAttributes: type: array items: $ref: '#/components/schemas/AttributeGroupTypeRequest' AttributeImportAcceptedResponse: type: object required: - import_id - name - status - total_rows - processed_rows - created_count - updated_count - skipped_count - failed_count - input_filename - errors - created_at properties: import_id: type: string format: uuid description: Identifier for the attribute import job. example: e2716438-b763-4be8-82d2-36abe0cb92b1 name: type: string description: Import name. example: attribute_test.csv status: type: string example: PENDING total_rows: type: integer example: 36 processed_rows: type: integer example: 0 created_count: type: integer example: 0 updated_count: type: integer example: 0 skipped_count: type: integer example: 0 failed_count: type: integer example: 0 input_filename: type: string example: attribute_test.csv input_file_url: type: string format: uri nullable: true example: null error_file_url: type: string format: uri nullable: true example: null error_message: type: string nullable: true example: null errors: type: array items: type: string example: [] started_at: type: string format: date-time nullable: true example: null completed_at: type: string format: date-time nullable: true example: null created_at: type: string format: date-time example: '2026-03-12T18:04:03.879876Z' FileResponse: type: object properties: type: description: Status type type: string enum: - IMPORT - EXPORT name: description: File name type: string statuses: description: Current status of the file type: array items: $ref: '#/components/schemas/StatusResponse' progress: description: Import progress in percentage type: number example: 100 createdOn: description: Time of file creation type: string format: date-time createdBy: description: User ID that created the file type: string example: broma0 modifiedOn: description: Time when file was last modified type: string format: date-time modifiedBy: type: string example: broma0 description: User ID that last modified the file secondsTakenToImport: description: Time taken to import the file (doesn't include the whole time for the full bulk import process). type: number secondsTakenToProcess: description: Time taken to process the file after the file was read type: number AttributeGroupResponse: type: array items: type: object properties: _id: description: A 24-character system-generated attribute group ID example: 6259ec8d006b0d00092b3189 type: string description: description: Accurate description of attribute group and what it represents example: Item weight, in KG type: string type: description: Attribute group type example: COLLECTION type: string enum: - WORKFLOW - COLLECTION name: description: Attribute group name example: weight type: string priorityOrder: description: Order of priority of the attribute group example: 1 type: number createdOn: description: Time of attribute group creation (UTC format). example: '2022-04-15T22:07:09.921Z' type: string modifiedOn: description: Time when attribute group was last modified (UTC format). example: '2022-04-15T22:10:05.427Z' type: string attributes: type: array items: type: object properties: _id: description: A 24-character system-generated attribute ID example: 6259ec8defc2116dd6c0f3fc type: string attributeGroupId: description: A 24-character system-generated attribute group ID of items example: 6259ec8d006b0d00092b3189 type: string attributeId: description: A 24-character system-generated attribute ID. This is same as the `_id`. example: 6245f16d11ae770009f19292 type: string isEditable: type: boolean description: 'true: Attribute is editable
false: Attribute is non-editable' createdOn: description: Time of attribute creation (UTC format) example: '2022-04-15T22:07:09.932Z' type: string modifiedOn: description: Time of when attribute was last modified (UTC format). example: '2022-04-15T22:10:05.444Z' type: string order: description: Order of item within the attribute group example: 0 type: number AttributeGroupSearchResponse: type: object properties: totalSize: description: Total number of records (attribute group) example: 7 type: number pageSize: description: Number of records (attribute group) per page example: 10 type: number pages: description: Number of pages for the given `pageSize` example: 1 type: number attributeGroups: type: array items: type: object properties: _id: description: A 24-character system-generated ID of the attribute group example: 6259ec8d006b0d00092b3189 type: string description: description: Accurate description of the attribute and what it represents example: Item weight, in KG type: string type: description: Attribute group type example: COLLECTION type: string enum: - WORKFLOW - COLLECTION name: description: Attribute group name example: weight type: string priorityOrder: description: Priority order of attribute group example: 1 type: number createdOn: description: Time of attribute group creation (UTC format) example: '2022-04-15T22:07:09.921Z' type: string modifiedOn: description: Time when attribute group was last modified (UTC format) example: '2022-04-15T22:10:05.427Z' type: string totalAttributes: description: Number of attributes in the attribute group example: 1 type: number EditableAttributes: type: array items: $ref: '#/components/schemas/AttributeGroupTypeResponse' ReadOnlyAttributes: type: array items: $ref: '#/components/schemas/AttributeGroupTypeResponse' WorkflowAttributes: items: description: Uses same response as AttributeGroupTypeResponse $ref: '#/components/schemas/WorkflowAttributes' ImpactedAttributes: items: description: Uses same response as AttributeGroupTypeResponse $ref: '#/components/schemas/ImpactedAttributes' parameters: DomainHeader: name: domain in: header required: true schema: type: string example: vessel.com description: The brand domain name (for example, `vessel.com` or `containerstore.com`) used to scope the request to a specific brand's data and configuration. The authenticated principal must be authorized for the specified brand. xSiteContent: name: x-site-context in: header description: The `x-site-context` header is a JSON object that contains information about the source you wish to pull from. The mandatory `account` is the 24 character identifier found in Copilot. The `channel` (Sales channel ID), `stage` (environment name), and `date` attributes can be used to further narrow the scope of your data source. required: true schema: type: string example: '{"date": "2023-01-01T00:00:00.000Z", "channel": 12, "account": "1234abcd5678efgh9ijklmno","stage":"production"}' securitySchemes: bearerAuth: type: http scheme: bearer bearerFormat: JWT description: 'This is the authorization token used to authenticate the request. You must pass the access token generated from the system app. For more information, see the [Making your first API request](/v3/api-reference/getting-started/getting-started-with-fabric-apis#procedure) section. '